CPIP协议第八章传输控制协议.ppt
《CPIP协议第八章传输控制协议.ppt》由会员分享,可在线阅读,更多相关《CPIP协议第八章传输控制协议.ppt(78页珍藏版)》请在三一办公上搜索。
1、1,第八章 传输控制协议TCP,2,主要内容,TCP的服务TCP的特点报文段TCP连接流量控制拥塞控制TCP定时器选项,3,8.1 TCP的服务,进程到进程的通信:像UDP那样,TCP也是使用端口号提供进程到进程的通信。以下是TCP使用的一些熟知的端口号。,4,表 续,5,8.1 TCP的服务,流交付服务:和UDP不同,TCP是一种面向流的协议。TCP创建了一种环境,它使得两个进程好像被一个假想的“管道”所连接,而这个管道在因特网上传送两个进程的数据,TCP,TCP,字节流,发送进程,接受进程,6,8.1 TCP的服务,流交付服务:发送缓存和接收缓存因为发送进程和接收进程并不会以同样的速度写入
2、数据或读取数据,因此TCP需要缓存来存储数据。在每一个方向都有两个缓存,即发送缓存和接收缓存,后面我们将会看到,TCP使用这些缓存进行流量控制和差错控制。,7,8.1 TCP的服务,流交付服务:报文段在传输层,TCP把若干字节构成一个分组,叫做报文段。TCP给每一个报文段添加首部(为了控制的目的),然后把这个报文段交付给IP层进行传输。这些报文段在封装成IP数据报后就被发送出去。,8,8.1 TCP的服务,3.全双工服务:TCP连接提供全双工服务,即数据可在同一时间双向流动,所有TCP连接都是点到点的。4.面向连接的服务 要获得TCP服务,在一个应用进程向另一个应用进程开始发送数据之前,必须先
3、在双方之间建立一条连接,数据传送结束后要释放连接。,9,8.2 TCP的特点,编号系统字节号TCP把一个连接中发送的所有数据字节都编上号。在每一个方向的编号都是互相独立的。当TCP从进程接收数据字节时,就把它们存储在发送缓存中,并进行编号。这个编号不一定从0开始,TCP从0(-1)之间产生一个随机数作为第一个字节的编号。,10,8.2 TCP的特点,编号系统序号当字节都被编上号后,TCP就给每一个报文段指派一个序号。每一个报文段的序号就是在这个报文段中第一个字节数据的序号。,11,8.2 TCP的特点,编号系统序号(续)例1:一个TCP连接要传送6000字节的文件。第一个自己的编号是10001
4、。如果数据用5个报文段来传送,前4个报文段各携带1000字节的数据,最后一个报文段携带2000字节的数据,求各个报文段的序号分别是什么?,12,8.2 TCP的特点,编号系统确认号在TCP中,接收数据方使用确认号对它已经收到的字节表示确认。但是,这个确认号定义了这一方期望接收的下一个字节的编号。,13,8.2 TCP的特点,流量控制数据的接收端控制发送端可以发送多少数据。这是为了避免大量的数据使接收端瘫痪。差错控制差错控制是面向字节的拥塞控制发送端所能发送的数据量不仅要受接收端的控制(流量控制),而且还要由网络的拥塞程度来决定,14,8.3 TCP的报文段,源端口地址16位,目的端口地址16位
5、,序号32位,确认号32位,首部长度4位,保留6位,ACK,PSH,RST,SYN,FIN,URG,窗口大小16位,紧急指针,检验和16位,选项与填充,首部格式,15,8.3 TCP的报文段,控制:这个字段定义了6种不同的控制位或标志,在同一时间可设置一位或多位标志,16,8.3 TCP的报文段,检验和:覆盖整个TCP报文段:TCP首部和数据,包括TCP首部、用户数据和TCP的伪首部,格式如下,17,源端口地址16位,目的端口地址16位,序号32位,确认号32位,首部长度4位,保留6位,ACK,PSH,RST,SYN,FIN,URG,窗口大小16位,紧急指针,检验和16位,选项和数据(若字节总
6、数位奇数则必须增加一个填充字节0),32位源IP地址,32位目的IP地址,全0,8位协议(6),16位TCP总长度,伪首部,首部,18,8.4 TCP的连接,TCP是面向连接的协议。面向连接的传输层协议在源点和终点之间建立一条虚路径,属于一个报文的所有报文段都沿着这条虚拟路径发送。整个的报文使用一条虚路径就使得确认过程以及对损伤或丢失报文的重传更加容易。,19,8.4.1 连接建立,TCP协议中建立连接采用三次握手(three-way handshake)的方式实现。具体工作方式见图,20,seq=x ack:-,seq=y ack=x+1rwnd5000,seq=x+1 ack=y+1rwn
7、d10000,报文段1:SYN,报文段2:SYN+ACK,报文段3:ACK,主机A 主机B(客户端)(服务器端),TCP协议建立连接三次握手的过程,时间,主动打开,被动打开,21,SYN洪泛攻击,在TCP中的连接建立过程很容易碰到一个严重的安全问题,这就是SYN洪泛攻击。恶意的攻击者向一个服务器发送大量的SYN报文段,而每一个这样的报文段来自不同的客户,并在IP数据报中使用虚假的源IP地址。服务器以为这些客户要发出主动打开,于是就分配必要的资源。这样大量的资源被占用却没有被使用,如果在短暂的时间内,SYN报文段的数量很大,服务器就会最终因资源耗尽而瘫痪。,22,数据传送,客户,服务器,时间,A
8、:ACK标志P:PSH标志,23,连接终止,参加交换数据的双方中的任何一方(客户或服务器)都可以关闭连接。当一个方向的连接被终止时,另外一方还可以继续向对方发送数据,现今大多数的实现允许在连接终止时有两个选项:具有半关闭的三次握手和四次握手,24,半关闭的三次握手,客户,服务器,时间,A:ACK标志P:PSH标志,主动关闭,被动 关闭,25,seq=2500 ack:-,seq=7000 ack=2501,seq=7001 ack=2501,报文段1:FIN,报文段2:ACK,报文段3:FIN,主机A 主机B(客户端)(服务器端),时间,四次握手,seq=2501 ack=7002,报文段4:
9、ACK,26,连接复位,TCP可以请求把一个连接复位。连接复位表示当前的连接已经被撤销。以下是发生复位的3种情况:拒绝连接请求异常终止连接终止空闲的连接,27,8.5TCP的连接管理状态转换,在任何时刻,机器只处于某一种状态,并一直保持这个状态,直到某个事件发生。发生的事件使机器进入一个新的状态,即事件可使机器完成某种操作。状态转换表示一个状态到另一个状态的迁移,包括迁移的条件和迁移的动作。状态转换图见书上140页,28,86 流量控制,TCP采用可变大小的滑动窗口协议进行流量控制。TCP的滑动窗口是面向字节的。窗口包括已发送的字节和未被确认的字节,以及可以发送的字节。接收方窗口是说明接收方还
10、能再接收的字节数。在TCP报文段首部的窗口大小字段的值就是当前给对方设置的窗口值。,29,滑动窗口协议,使用这种方法时,两个主机为向外通信(发送数据)各使用了一个窗口。这个窗口覆盖了缓存的一部分,在缓存中的字节是从应用进程传送来的,在这窗口中的字节就是可以发送而不必考虑确认的。这个想象中的窗口有两个沿:一个在左边,另一个在右边,这个窗口叫做滑动窗口,因为左沿和右沿都可以滑动。如图所示,30,n-1,n,n+1,.,.,m-1,m,m+1,.,缩回,合拢,滑动窗口,展开,窗口大小minimum(rwnd,cwnd),31,滑动窗口协议(续),在通信的一端,窗口大小取决于下面两个数中间的较小值:接
11、收窗口(rwnd)和拥塞窗口(cwnd)接收窗口是由对方发送的包含确认的报文段所给出的值,这是另一端在缓存溢出和数据被丢弃前所能接受的字节数。拥塞窗口是由网络为避免拥塞而确定的值。,32,滑动窗口协议(续),例2:如果接收端的缓存大小是5000字节,其中1000字节用于存放收到而未处理的数据。试问发送端的接收窗口值是多少?例3:如图所示给出了一个滑动窗口的非现实的例子。发送端已经发送了202字节,我们假定cwnd是20字节(现实中,这个数值是几千字节)。接收端已经发送了确认号为200的报文段,其rwnd是9字节。发送窗口值是rwnd和cwnd中的较小的一个,即9字节,字节200到202已经发送
12、出去了,但没有被确认,字节203到字节208可以发送而不必考虑确认,字节209和以上的不能发送,33,199,200,201,.,205,206,209,.,窗口大小minimum(20,9)9,202,203,204,207,208,下一个要发送的字节,已发送且已确认,在窗口展开之前不能被发送,34,滑动窗口协议(续),例4:在图中,服务器收到一个分组,其确认号为202而rwnd是9,主机已经发送出字节203、204、205,cwnd值仍是20,试画出新的窗口答案,35,201,202,203,.,207,208,211,.,窗口大小minimum(20,9)9,204,205,206,20
13、9,210,下一个要发送的字节,已发送且已确认,在窗口展开之前不能被发送,36,滑动窗口协议(续),例5:在上图中,发送端收到一个分组,其确认号是206,而rwnd是9。主机已经没有新的字节要发送,cwnd仍是20,试画出新窗口。答案:窗口向右展开了4个字节,从左边合拢了4个字节,窗口大小没变。,37,205,206,207,.,211,212,215,.,窗口大小minimum(20,9)9,208,209,210,213,214,下一个要发送的字节,已发送且已确认,在窗口展开之前不能被发送,38,滑动窗口协议(续),窗口关闭:缩回窗口试非常不希望出现的,但是有一个例外:接收端可以用发送rw
14、nd为0的报文段来暂时关闭窗口。这种情况发生是由于接收端因某种原因在一段时间内不愿意从发送端接收任何数据。在这种情况下,发送端并非把窗口大小真正的缩回,而是暂停发送数据,直到新的通告收到为止。即使在接收端的命令下关闭了窗口,发送端仍然可以发送具有一个字节数据的报文段,这就叫做探测(probing),用来防止死锁。,39,关于TCP滑动窗口的一些要点,窗口大小是rwnd和cwnd中的较小的一个源点并非必须要发送整个窗口大小的数据接收端可以使窗口展开或合拢,但不应使它缩回终点可以在任何时刻发送确认,只要这不会引起窗口的缩回接收端可以暂时关闭窗口,但发送端永远可以在窗口关闭后发送一个字节的报文段。,
15、40,8.7 傻瓜窗口综合症,接收方通告一个小的窗口,引起发送的报文段很小,而降低传输效率。该现象可发生在两端中的任何一端.,41,8.7.1 Nagle 算法 Nagle 算法试图解决由于发送应用程序每次向TCP发送小的报文段,如报文段只包括1个字节的数据而引起的问题。强迫发送端TCP等待,让它收集数据,以便发送大块数据。,42,8.7.1 Nagle 算法(续)发送端TCP把它从发送应用程序收到的第一块数据发送出去,哪怕只有1个字节在发送第一个报文段以后,发送端TCP就在输出缓存中积累数据并等待,直到或者接收端TCP发送出确认,或者已积累到足够得数据可以装成最大长度得报文段,这时,发送端T
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CPIP 协议 第八 传输 控制
链接地址:https://www.31ppt.com/p-5423399.html