CPIP协议第八章传输控制协议.ppt
《CPIP协议第八章传输控制协议.ppt》由会员分享,可在线阅读,更多相关《CPIP协议第八章传输控制协议.ppt(78页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第八章第八章 传输控制协议传输控制协议TCPTCP1主要内容TCP的服务TCP的特点报文段TCP连接流量控制拥塞控制TCP定时器选项28.1TCP的服务1.进程到进程的通信:像UDP那样,TCP也是使用端口号提供进程到进程的通信。以下是TCP使用的一些熟知的端口号。端口号端口号协协 议议说说 明明7Echo把收到的数据报回送到发送端把收到的数据报回送到发送端9Discard丢弃收到的任何数据报丢弃收到的任何数据报11Users活跃的用户活跃的用户13Daytime返回时间和日期返回时间和日期17Quote返回日期的引用返回日期的引用3表表 续续端口号端口号协协 议议说说 明明19Chargen
2、返回字符串返回字符串20FTP 数据数据文件传输协议(数据连接)文件传输协议(数据连接)21FTP 控制控制文件传输协议(控制连接)文件传输协议(控制连接)23Telnet终端网络终端网络25SMTP简单邮件传送协议简单邮件传送协议53DNS域名服务器域名服务器67BOOTP引导程序协议引导程序协议79FingerFinger80HTTP超文本传送协议超文本传送协议111RPC远程过程调用远程过程调用48.1TCP的服务2.流交付服务:和UDP不同,TCP是一种面向流的协议。TCP创建了一种环境,它使得两个进程好像被一个假想的“管道”所连接,而这个管道在因特网上传送两个进程的数据TCPTCP字
3、节流字节流发送进程发送进程接受进程接受进程58.1TCP的服务2.流交付服务:3.发送缓存和接收缓存4.因为发送进程和接收进程并不会以同样的速度写入数据或读取数据,因此TCP需要缓存来存储数据。在每一个方向都有两个缓存,即发送缓存和接收缓存,后面我们将会看到,TCP使用这些缓存进行流量控制和差错控制。68.1TCP的服务2.流交付服务:3.报文段4.在传输层,TCP把若干字节构成一个分组,叫做报文段。TCP给每一个报文段添加首部(为了控制的目的),然后把这个报文段交付给IP层进行传输。这些报文段在封装成IP数据报后就被发送出去。78.1TCP的服务3.全双工服务:TCP连接提供全双工服务,即数
4、据可在同一时间双向流动,所有TCP连接都是点到点的。4.面向连接的服务要获得TCP服务,在一个应用进程向另一个应用进程开始发送数据之前,必须先在双方之间建立一条连接,数据传送结束后要释放连接。88.2TCP的特点1.编号系统a)字节号TCP把一个连接中发送的所有数据字节都编上号。在每一个方向的编号都是互相独立的。当TCP从进程接收数据字节时,就把它们存储在发送缓存中,并进行编号。这个编号不一定从0开始,TCP从0(-1)之间产生一个随机数作为第一个字节的编号。98.2TCP的特点1.编号系统b)序号当字节都被编上号后,TCP就给每一个报文段指派一个序号。每一个报文段的序号就是在这个报文段中第一
5、个字节数据的序号。108.2TCP的特点1.编号系统b)序号(续)例1:一个TCP连接要传送6000字节的文件。第一个自己的编号是10001。如果数据用5个报文段来传送,前4个报文段各携带1000字节的数据,最后一个报文段携带2000字节的数据,求各个报文段的序号分别是什么?118.2TCP的特点1.编号系统c)确认号在TCP中,接收数据方使用确认号对它已经收到的字节表示确认。但是,这个确认号定义了这一方期望接收的下一个字节的编号。128.2TCP的特点2.流量控制数据的接收端控制发送端可以发送多少数据。这是为了避免大量的数据使接收端瘫痪。3.差错控制差错控制是面向字节的4.拥塞控制发送端所能
6、发送的数据量不仅要受接收端的控制(流量控制),而且还要由网络的拥塞程度来决定138.3TCP的报文段 源端口地址源端口地址16位位 目的端口地址目的端口地址16位位 序号序号32位位 确认号确认号32位位首部首部长度长度4位位保保留留6位位 ACKPSHRSTSYNFINURG 窗口大小窗口大小16位位 紧急指针紧急指针 检验和检验和16位位 选项与填充选项与填充 首部格式首部格式148.3TCP的报文段p控制:这个字段定义了6种不同的控制位或标志,在同一时间可设置一位或多位标志标标 志志说说 明明URG紧急指针字段值有效紧急指针字段值有效ACK确认字段值有效确认字段值有效PSH推送数据推送数
7、据RST连接必须复位连接必须复位SYN在连接建立时对序号进行同步在连接建立时对序号进行同步FIN终止了连接终止了连接158.3TCP的报文段p检验和:覆盖整个TCP报文段:TCP首部和数据,包括TCP首部、用户数据和TCP的伪首部,格式如下16 源端口地址源端口地址16位位 目的端口地址目的端口地址16位位 序号序号32位位 确认号确认号32位位首部首部长度长度4位位保保留留6位位 ACKPSHRSTSYNFINURG 窗口大小窗口大小16位位 紧急指针紧急指针 检验和检验和16位位选项和数据选项和数据(若字节总数位奇数则必须增加一个填充字节(若字节总数位奇数则必须增加一个填充字节0)32位源
8、IP地址32位目的IP地址全08位协议(6)16位TCP总长度伪伪首首部部首首部部178.4TCP的连接TCP是面向连接的协议。面向连接的传输层协议在源点和终点之间建立一条虚路径,属于一个报文的所有报文段都沿着这条虚拟路径发送。整个的报文使用一条虚路径就使得确认过程以及对损伤或丢失报文的重传更加容易。188.4.1连接建立TCP协议中建立连接采用三次握手(three-wayhandshake)的方式实现。具体工作方式见图19seq=x ack:-seq=x ack:-seq=y ack=x+1seq=y ack=x+1rwndrwnd50005000seq=x+1 ack=y+1seq=x+1
9、 ack=y+1rwndrwnd1000010000报文段报文段1 1:SYNSYN 报文段报文段2 2:SYN+ACKSYN+ACK 报文段报文段3 3:ACKACK 主机主机A A 主机主机B B(客户端客户端)(服务器端)(服务器端)TCPTCP协议建立连接三次握手的过程协议建立连接三次握手的过程 时时间间主动主动打开打开被动被动打开打开20SYN洪泛攻击在TCP中的连接建立过程很容易碰到一个严重的安全问题,这就是SYN洪泛攻击。恶意的攻击者向一个服务器发送大量的SYN报文段,而每一个这样的报文段来自不同的客户,并在IP数据报中使用虚假的源IP地址。服务器以为这些客户要发出主动打开,于是
10、就分配必要的资源。这样大量的资源被占用却没有被使用,如果在短暂的时间内,SYN报文段的数量很大,服务器就会最终因资源耗尽而瘫痪。21数据传送Seq:8001ack:15001A PDATA字节:80019000客户客户 服务器服务器Seq:9001ack:15001A PDATA字节:900110000Seq:15001ack:10001ADATA字节:1500117000Seq:10000ack:17001Arwnd:10000时时间间A:ACK标志标志P:PSH标志标志22连接终止参加交换数据的双方中的任何一方(客户或服务器)都可以关闭连接。当一个方向的连接被终止时,另外一方还可以继续向对
11、方发送数据,现今大多数的实现允许在连接终止时有两个选项:具有半关闭的三次握手和四次握手23半关闭的三次握手客户客户 服务器服务器Seq:xack:yF时时间间A:ACK标志标志P:PSH标志标志Seq:yack:x+1AFSeq:xack:y+1A 主动主动关闭关闭 被动被动 关闭关闭24seq=2500 ack:-seq=2500 ack:-seq=7000 ack=2501seq=7000 ack=2501seq=7001 ack=2501seq=7001 ack=2501报文段报文段1 1:FINFIN报文段报文段2 2:ACKACK 报文段报文段3 3:FINFIN 主机主机A A 主
12、机主机B B(客户端客户端)(服务器端)(服务器端)时时间间四次握手seq=2501 ack=7002seq=2501 ack=7002报文段报文段4 4:ACKACK 25连接复位TCP可以请求把一个连接复位。连接复位表示当前的连接已经被撤销。以下是发生复位的3种情况:1.拒绝连接请求2.异常终止连接3.终止空闲的连接26TCPTCP的连接管理状态转换的连接管理状态转换在任何时刻,机器只处于某一种状态,并一直保持这个状态,直到某个事件发生。发生的事件使机器进入一个新的状态,即事件可使机器完成某种操作。状态转换表示一个状态到另一个状态的迁移,包括迁移的条件和迁移的动作。状态转换图见书上140页
13、 278 86 6 流量控制流量控制TCP采用可变大小的滑动窗口协议进行流量控制。TCP的滑动窗口是面向字节的。窗口包括已发送的字节和未被确认的字节,以及可以发送的字节。接收方窗口是说明接收方还能再接收的字节数。在TCP报文段首部的窗口大小字段的值就是当前给对方设置的窗口值。28滑动窗口协议使用这种方法时,两个主机为向外通信(发送数据)各使用了一个窗口。这个窗口覆盖了缓存的一部分,在缓存中的字节是从应用进程传送来的,在这窗口中的字节就是可以发送而不必考虑确认的。这个想象中的窗口有两个沿:一个在左边,另一个在右边,这个窗口叫做滑动窗口,因为左沿和右沿都可以滑动。如图所示29n-1nn+1.m-1
14、mm+1.缩回合拢 滑动窗口滑动窗口展开窗口大小窗口大小minimum(rwnd,cwnd)30滑动窗口协议(续)在通信的一端,窗口大小取决于下面两个数中间的较小值:接收窗口(rwnd)和拥塞窗口(cwnd)接收窗口是由对方发送的包含确认的报文段所给出的值,这是另一端在缓存溢出和数据被丢弃前所能接受的字节数。拥塞窗口是由网络为避免拥塞而确定的值。31滑动窗口协议(续)例2:如果接收端的缓存大小是5000字节,其中1000字节用于存放收到而未处理的数据。试问发送端的接收窗口值是多少?例3:如图所示给出了一个滑动窗口的非现实的例子。发送端已经发送了202字节,我们假定cwnd是20字节(现实中,这
15、个数值是几千字节)。接收端已经发送了确认号为200的报文段,其rwnd是9字节。发送窗口值是rwnd和cwnd中的较小的一个,即9字节,字节200到202已经发送出去了,但没有被确认,字节203到字节208可以发送而不必考虑确认,字节209和以上的不能发送32199 200 201.205 206209.窗口大小窗口大小minimum(20,9)9202 203 204207 208下一个要发送的字节下一个要发送的字节已发送已发送且已确认且已确认在窗口在窗口展开之前展开之前不能被不能被发送发送33滑动窗口协议(续)例4:在图中,服务器收到一个分组,其确认号为202而rwnd是9,主机已经发送出
16、字节203、204、205,cwnd值仍是20,试画出新的窗口答案34201 202 203.207 208211.窗口大小窗口大小minimum(20,9)9204 205 206209 210下一个要发送下一个要发送的字节的字节已发送已发送且已确认且已确认在窗口在窗口展开之前展开之前不能被不能被发送发送35滑动窗口协议(续)例5:在上图中,发送端收到一个分组,其确认号是206,而rwnd是9。主机已经没有新的字节要发送,cwnd仍是20,试画出新窗口。答案:窗口向右展开了4个字节,从左边合拢了4个字节,窗口大小没变。36205 206 207.211 212215.窗口大小窗口大小mini
17、mum(20,9)9208 209 210213 214下一个要发送下一个要发送的字节的字节已发送已发送且已确认且已确认在窗口在窗口展开之前展开之前不能被不能被发送发送37滑动窗口协议(续)窗口关闭:缩回窗口试非常不希望出现的,但是有一个例外:接收端可以用发送rwnd为0的报文段来暂时关闭窗口。这种情况发生是由于接收端因某种原因在一段时间内不愿意从发送端接收任何数据。在这种情况下,发送端并非把窗口大小真正的缩回,而是暂停发送数据,直到新的通告收到为止。即使在接收端的命令下关闭了窗口,发送端仍然可以发送具有一个字节数据的报文段,这就叫做探测(probing),用来防止死锁。38关于TCP滑动窗口
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CPIP 协议 第八 传输 控制
限制150内