第十二章tcp‹#›单击此处编辑母_第1页
第十二章tcp‹#›单击此处编辑母_第2页
第十二章tcp‹#›单击此处编辑母_第3页
第十二章tcp‹#›单击此处编辑母_第4页
第十二章tcp‹#›单击此处编辑母_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第十二章 TCP协议Transmission Control Protocol (TCP)Transmission Control Protocol (TCP)传输控制协议传输控制协议尽管尽管TCPTCP和和UDPUDP都使用相同的网络层(都使用相同的网络层(IPIP),),TCPTCP却向应用层提却向应用层提供与供与UDPUDP完全不同的服务。完全不同的服务。TCPTCP提供一种面向连接的、可靠的字节流服务。两个应用程提供一种面向连接的、可靠的字节流服务。两个应用程序通过序通过TCPTCP连接交换连接交换8bit8bit字节构成的字节流。字节构成的字节流。TCPTCP不在字节流不在字节流中插

2、入记录标识符。中插入记录标识符。TCPTCP对字节流的内容不作任何解释。对字节流的内容不作任何解释。TCPTCP不知道传输的数据字节流是二进制数据、还是不知道传输的数据字节流是二进制数据、还是ASCIIASCII字符或者字符或者其他类型数据。其他类型数据。面向连接意味着两个使用面向连接意味着两个使用TCPTCP的应用(通常是一个客户和一个的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个服务器)在彼此交换数据之前必须先建立一个TCPTCP连接。连接。发送方:发送方:TCPTCP将数据流数据分割并组织成将数据流数据分割并组织成IPIP包进包进行传输;行传输;接收方:接收方:TC

3、PTCP再将这些分割数据组织成数据流。再将这些分割数据组织成数据流。段:每个段:每个TCPTCP数据包称之为段。数据包称之为段。TCPTCP段段= =段首部段首部+ +数据数据段首部段首部(20(20到到6060字节字节)=)=定长部分定长部分+ +变长部分变长部分定长部分长度:定长部分长度:2020字节字节变长部分变长部分= =选项选项+ +填充,长度填充,长度:0:0到到4040字节之间。字节之间。TCPTCP段格式中各个字段的含义和作用:段格式中各个字段的含义和作用:TCP数据区数据区TCP头部头部控制码控制码源端口源端口 目的端口目的端口0 15 16 31 32 159顺序号顺序号

4、应答号应答号 段头长段头长码位码位校验和校验和紧急指针紧急指针32 63 64 95 96 99 100 127 128 143 144 159窗口窗口保留保留标志标志100 105 106 111 112 127服务端口号,如服务端口号,如Email 为为25,Web为为80分组序号,用于分组序号,用于还原时指示顺序还原时指示顺序 指示下一个要接指示下一个要接收的分组号,其表明收的分组号,其表明在此之前接收均成功在此之前接收均成功指示指示TCP报头长报头长度,以度,以32位为单位位为单位指示后续哪指示后续哪个字节开始个字节开始是紧急数据是紧急数据1、紧急指针域有效、紧急指针域有效2、确认域有

5、效、确认域有效3、PUSH位有效位有效4、用于复位、用于复位5、同步序号、同步序号6、释放连接、释放连接指示接收方的指示接收方的接收缓冲区可接收缓冲区可接收的分组数接收的分组数源端口源端口目标端口目标端口序列号序列号确认号确认号头部长头部长保留保留代码位代码位窗口窗口校验和校验和紧急指针紧急指针TCP选项(如果有)选项(如果有)数据数据0 4 10 16 3132位计的头部长位计的头部长度。度。UDP中是整中是整个包长度,个包长度,8位位字节方式计算字节方式计算TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保

6、留FINSYNRSTPSHACKURG填 充源端口和目的端口字段源端口和目的端口字段各占各占 2 2 字节。字节。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充序号字段序号字段占占 4 4 字节。序号用来标识从字节。序号用来标识从TCPTCP发端向发端向TCPTCP收端发收端发送的数据字节流,它表示在这个报文段中的的第一个数据字送的数据字节流,它表示在这个报文段中的的第一个数据字节。节。TCP首部20字节固定首部目 的 端 口数据偏移

7、检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG填 充确认号字段确认号字段占占 4 4 字节,是期望收到对方的下一字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。个报文段的数据的第一个字节的序号。 紧急比特紧急比特URG: URG: 当当 URG URG 1 1 时,表明紧急指针字时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快段有效。它告诉系统此报文段中有紧急数据,应尽快传送传送( (相当于高优先级的数据相当于高优先级的数据) )。 确认比特确认比特 ACK:ACK:只有当只有当 ACK

8、ACK 1 1 时确认号字段才时确认号字段才有效。当有效。当 ACK ACK 0 0 时,确认号无效。时,确认号无效。 推送比特推送比特 PSH (PuSH): PSH (PuSH): 接收接收 TCP TCP 收到推送比特收到推送比特置置 1 1 的报文段,就尽快地交付给接收应用进程,而的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。不再等到整个缓存都填满了后再向上交付。 复位比特复位比特 RST (ReSeT):RST (ReSeT):当当 RST RST 1 1 时,表明时,表明TCP TCP 连接中出现严重差错(如由于主机崩溃或其他原因)连接中出现严重差错

9、(如由于主机崩溃或其他原因)必须释放连接,然后再重新建立运输连接。必须释放连接,然后再重新建立运输连接。 同步比特同步比特 SYN:SYN:同步比特同步比特 SYN SYN 置为置为 1 1,就表,就表示这是一个连接请求或连接接受报文。示这是一个连接请求或连接接受报文。 终止比特终止比特 FIN (FINal) FIN (FINal) 用来释放一个用来释放一个连接。当连接。当FIN FIN 1 1 时,表明此报文段的发送时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连端的数据已发送完毕,并要求释放运输连接。接。 TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长

10、度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充窗口字段窗口字段 : :占占 2 2 字节。窗口字段用来控制对方发送的数据量,字节。窗口字段用来控制对方发送的数据量,单位为字节。单位为字节。TCP TCP 连接的一端根据设置的缓存空间大小确定自己连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针

11、窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充紧急指针字段紧急指针字段 占占 16 bit16 bit。紧急指针指出在本。紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。报文段中的紧急数据的最后一个字节的序号。 TCPTCP连接的建立与关闭连接的建立与关闭TCPTCP连接:连接:三握手三握手目的:同步连接双方发送数据的初始序列号目的:同步连接双方发送数据的初始序列号, ,建立连接。建立连接。被动打开被动打开:应用程序向操作系统申请:应用程序向操作系统申请TCP端口,端口,等待等待连接请求。连接请求。主动打开主动打开:应用程序向操作系统申请

12、:应用程序向操作系统申请TCP端口,端口,发出发出连接请求。连接请求。被动打开被动打开:应用程序向操作系统申请:应用程序向操作系统申请TCP端口,端口,等待等待连接请求。连接请求。主动打开主动打开:应用程序向操作系统申请:应用程序向操作系统申请TCP端口,端口,发出发出连接请求。连接请求。第一次握手:由要建立连接的客户向服务器发出连接请求段,第一次握手:由要建立连接的客户向服务器发出连接请求段,该段首部的同步标志该段首部的同步标志SYNSYN被置为被置为1 1,并在首部中填入本次连接,并在首部中填入本次连接的客户端的初始段序号的客户端的初始段序号SEQSEQ(例如(例如SEQ=26500SEQ

13、=26500)。)。第二次握手:服务器收到请求后,发回连接第二次握手:服务器收到请求后,发回连接确认(确认(SYN+ACKSYN+ACK),该段首部中的同步标志),该段首部中的同步标志SYNSYN被置为被置为1 1,表示认可连接,首部中的确认标志,表示认可连接,首部中的确认标志ACKACK被置为被置为1 1,表示对所接收的段的确认,与,表示对所接收的段的确认,与ACKACK标志相配合的是确认序号标志相配合的是确认序号2650126501该段还给出了自该段还给出了自己的初始序号(例如己的初始序号(例如SEQ=29010SEQ=29010)。对请求段的)。对请求段的确认完成了一个方向上连接。确认完

14、成了一个方向上连接。第三次握手:客户向服务器发出的确认段,段首部中的确认第三次握手:客户向服务器发出的确认段,段首部中的确认标志标志ACKACK被置为被置为1 1,表示对所接收的段的确认,与,表示对所接收的段的确认,与ACKACK标志相标志相配合的准备接收的下一序号被设置为收到的段序号加配合的准备接收的下一序号被设置为收到的段序号加1(ACK 1(ACK 29011)29011)。完成了另一个方向上的连接。完成了另一个方向上的连接。 客 户 服 务 器 SY N , SE Q =26500 A C K 26501, SY N , SE Q =29010 A C K 29011 时 间 时 间

15、TCPTCP连接的拆除连接的拆除连接双方都可以发起拆除连接操作。连接双方都可以发起拆除连接操作。简单地拆除连接可能会造成数据丢失。例如,简单地拆除连接可能会造成数据丢失。例如,A A、B B两主机已建立连接并传输报文,两主机已建立连接并传输报文,A A主机在主机在B B主机没有主机没有准备的情况下,单方面发出断开连接请求,并停止准备的情况下,单方面发出断开连接请求,并停止接收该连接上的数据。但断开连接请求的传输要有接收该连接上的数据。但断开连接请求的传输要有一段时间,而在一段时间,而在B B主机未收到断开连接请求之前,主机未收到断开连接请求之前,随时可能向随时可能向A A主机发送数据,会有丢失

16、数据的可能主机发送数据,会有丢失数据的可能性。性。TCPTCP关闭:四次挥手关闭:四次挥手一挥手一挥手: :发送方向接收方发送发送方向接收方发送TCP:FIN=1TCP:FIN=1的关闭请求的关闭请求; ;二挥手二挥手: :接收方向发送方发送接收方向发送方发送ACKACK段段; ;三挥手三挥手: :接收方等数据传输完成后接收方等数据传输完成后, ,发送发送FIN=1FIN=1给发送方给发送方; ;四挥手四挥手: :发送方向接收方发送发送方向接收方发送ACKACK段段; ;连接关闭连接关闭. . 主机 A FIN,SEQ=32630 ACK 32631 图 8-7 拆除 TCP 连接 时间 时间

17、 主机 B FIN,SEQ=24122,ACK 32631 ACK 24123 关闭 半连接 关闭 半连接 可靠传输的必要性可靠传输的必要性可靠性是计算机系统的基础可靠性是计算机系统的基础IPIP协议提供不可靠的无连接的数据包传递服务协议提供不可靠的无连接的数据包传递服务 数据包可能丢失、乱序、重复数据包可能丢失、乱序、重复如何提供可靠性如何提供可靠性?带重发的肯定确认带重发的肯定确认(Positive acknowledgement retransmission)(Positive acknowledgement retransmission) 要求接收方收到数据后向源站返回确认信息要求接收

18、方收到数据后向源站返回确认信息ACK,ACK,如如果发送方计时器超时没有收到果发送方计时器超时没有收到ACK,ACK,则重发数据包则重发数据包可靠传输服务的特性可靠传输服务的特性面向数据流面向数据流把两个应用程序之间传输的数据看作字节流把两个应用程序之间传输的数据看作字节流虚电路连接虚电路连接通信的两端建立虚电路通信的两端建立虚电路 可靠的连接建立可靠的连接建立 完美的连接终止完美的连接终止与打电话类似与打电话类似带缓冲的传送带缓冲的传送应用程序可以使用各种大小的数据片来发送应用程序可以使用各种大小的数据片来发送接收端接收次序与发送次序相同接收端接收次序与发送次序相同协议软件可以将数据片根据需

19、要分成若干段协议软件可以将数据片根据需要分成若干段( (与数据片大小无关与数据片大小无关) )并负责组装成合适大小的并负责组装成合适大小的数据报发送数据报发送PushPush机制用来实现强迫的发送机制用来实现强迫的发送全双工的连接全双工的连接包括两个独立的、方向相反的数据流包括两个独立的、方向相反的数据流TCPTCP提供了一个完全可靠的、面向连接的、全提供了一个完全可靠的、面向连接的、全双工的流传输服务,允许两个应用程序建立双工的流传输服务,允许两个应用程序建立一个连接,并在任何一个方向上发送数据,一个连接,并在任何一个方向上发送数据,然后终止连接。然后终止连接。每一个每一个TCPTCP连接可

20、靠地建立、完美地终止,在连接可靠地建立、完美地终止,在终止发生前所有数据都会被可靠地传送。终止发生前所有数据都会被可靠地传送。TCPTCP选项是变长字段,当前选项是变长字段,当前TCPTCP使用的选项:使用的选项: 选项结束 无操作 00000000 代码 00000001 00000010 00000100 最大段大小 2 字节 00000011 00000011 规模因子 最大段大小 窗口规模因子 时间戳 00001000 00001010 时间戳值 时间戳回显应答 长度 选项结束标志为单字节选项,代码为选项结束标志为单字节选项,代码为0 0,用于表示选项,用于表示选项结束。结束。无操作选

21、项为单字节选项,代码为无操作选项为单字节选项,代码为1 1,用于选项的填充,用于选项的填充最大段大小(最大段大小(MSSMSS)选项为多字节选项,代码为)选项为多字节选项,代码为2 2,长度,长度为为4 4字节,最后两个字节用于标识本机能够接收的段的字节,最后两个字节用于标识本机能够接收的段的最大字节数。该值范围为最大字节数。该值范围为0 0到到6553565535,默认值为,默认值为536536。窗口规模因子选项为多字节选项,代码为窗口规模因子选项为多字节选项,代码为3 3,长度为,长度为3 3字字节。在节。在TCPTCP段的首部存在段的首部存在1616比特的窗口大小字段,但在比特的窗口大小

22、字段,但在高吞吐和低延迟的网络中,高吞吐和低延迟的网络中,6553565535字节的窗口仍然嫌小。字节的窗口仍然嫌小。通过在选项中采用窗口规模因子,可以增加窗口的大小。通过在选项中采用窗口规模因子,可以增加窗口的大小。扩展后的窗口大小为:扩展后的窗口大小为: Wn=WoWn=Wo2 2f fWnWn为新的窗口大小,为新的窗口大小,WoWo为为TCPTCP首部窗口大小字段的值,首部窗口大小字段的值,f f为为窗口规模因子。当通信双方认为首部的窗口值还不够大的窗口规模因子。当通信双方认为首部的窗口值还不够大的时候,在连接开始时用这个来定义更大的窗口。仅在连接时候,在连接开始时用这个来定义更大的窗口

23、。仅在连接开始时有效。一经定义,通信过程中无法更改。开始时有效。一经定义,通信过程中无法更改。 时间戳选项为多字节选项,代码为时间戳选项为多字节选项,代码为8 8,长度为,长度为1010字节。时间戳值字段由源端在发送数据段字节。时间戳值字段由源端在发送数据段时填写,信宿端收到后,在确认数据段中将时填写,信宿端收到后,在确认数据段中将收到的时间戳值填入时间戳回显应答字段,收到的时间戳值填入时间戳回显应答字段,信源端根据该时间戳值和当前时间戳可以计信源端根据该时间戳值和当前时间戳可以计算出数据段的往返时间。算出数据段的往返时间。TCPTCP除了提供进程通信能力外,主要特点是具有高可除了提供进程通信

24、能力外,主要特点是具有高可靠性。靠性。TCPTCP在发送端与接收端之间建立一条连接,报在发送端与接收端之间建立一条连接,报文需要得到接收端的确认。文需要得到接收端的确认。TCPTCP传输的是一个无报文传输的是一个无报文丢失、重复和失序的正确的数据流。丢失、重复和失序的正确的数据流。TCPTCP采用的最基本的可靠性技术:采用的最基本的可靠性技术:流量控制流量控制拥塞控制拥塞控制差错控制差错控制 TCP协议的主要控制技术:协议的主要控制技术:可靠传输:可靠的连接、差错控制可靠传输:可靠的连接、差错控制有效传输:有效传输: 流量控制:避免因为接收方来不及接收而重传流量控制:避免因为接收方来不及接收而

25、重传 拥塞控制:避免由于负载太大等原因而造成网络吞吐量的下降拥塞控制:避免由于负载太大等原因而造成网络吞吐量的下降差错控制差错控制流量控制流量控制面向字节流的滑动窗口面向字节流的滑动窗口拥塞控制拥塞控制可靠的连接可靠的连接基于字节流的差错控制基于字节流的差错控制 差错控制:差错控制:基于序号的确认(不是基于报文段对报文段编号)基于序号的确认(不是基于报文段对报文段编号)发送时:若首部发送时:若首部“序号序号”字段字段=2000 表示本报文段中用户数据的第一个字节的序号表示本报文段中用户数据的第一个字节的序号=2000回答时:若首部回答时:若首部“确认序号确认序号”字段字段= 2300表示表示2

26、300号字节以前的数据已经正确收到,号字节以前的数据已经正确收到, 希望收到的下一个字节是希望收到的下一个字节是2300号字节号字节 即:即:序号:本报文段中用户数据的第一个字节序号:本报文段中用户数据的第一个字节确认序号:确认序号以前的数据已经正确收到确认序号:确认序号以前的数据已经正确收到TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 序 号保 留FINSYNRSTPSHACKURG填 充1) ACK位(确认位): 只有当 ACK 1 时确认序号才有效2)确认序号dataackdatadataackdata正常

27、情况:正常情况:数据顺利到达对端,对端顺利响应ack异常情况异常情况1:数据包中途丢失异常情况异常情况2:数据包顺利到达但ACK报文中途丢失异常情况异常情况3:数据包顺利到达对端,但终端异常未响应ACK或被终端丢弃确认从另一端收到的数据 T C P通过在发通过在发送时设置一个定送时设置一个定时器来解决这种时器来解决这种问题,如果当定问题,如果当定时器溢出时还没时器溢出时还没有收到确认,它有收到确认,它就重传该数据就重传该数据当出现这些异当出现这些异常情况时如何常情况时如何处理?处理?data超时重传超时重传重置定时器重置定时器RTT与RTORTT:round trip time RTO:ret

28、ransmission time out往返时间:指发送端从发送TCP包开始到接收到它的立即响应所耗费的传输时间超时重传时间:指发送端发送数据后、重传数据前等待接受方收到该数据报文的ACK的时间data-1ack-1data-2T1T2T3RTT=T3-T1data-1data-1T1T2RTO=T2-T1未收到ack,重传data报文 超时重传时间超时重传时间 RTO (RetransmissionTime-Out)应该满足:重传时间应该满足:重传时间往返时间往返时间 RTT 主要问题:主要问题:TCP 报文段需要经过路由器转发:报文段需要经过路由器转发: 路由变化很大路由变化很大 延时差别

29、很大延时差别很大RTT是动态变化的,方差也很大是动态变化的,方差也很大往返时延的分析往返时延的分析 数据链路层:相邻二点的通信,往返时间变化不大数据链路层:相邻二点的通信,往返时间变化不大传输层 TCP :不相邻二点的进程之间通信,往返时间的方差很大。T3时间数据链路层T1T2往返时间的概率分布 难点:估算较为合理的重传时间。任何时候对每个连接仅测量一次RTT值。在发送一个报文段时,如果给定连接的定时器已经被使用,则该报文段不被计时。 data-1ack-1data-2T1T2T3RTT1=T2-T1data-3T4T5ack-2RTT2=T5-T3T6RTT1RTT2data-4T7data

30、-5data-6ack-3ack-4T8T9T10RTT3RTT3=T10-T6估计平均往返时间估计平均往返时间(Round Trip Time)(Round Trip Time)收集每个报文段的收集每个报文段的RTT,RTT,得到平均往返时间得到平均往返时间RTTRTT利用新的样本利用新的样本SampleRTTSampleRTT逐步修改逐步修改RTT = xRTT = x* *OLD_RTT + (1-x)OLD_RTT + (1-x)* * SampleRTT SampleRTTx: x: 代表了对延迟变化的敏感程度代表了对延迟变化的敏感程度RTT=0.875RTT=0.875* *OLD

31、_RTT+0.125OLD_RTT+0.125* *SampleRTTSampleRTT设置超时时间设置超时时间Timeout=Timeout=* *RTT, 1RTT, 1,最初推荐,最初推荐=2=2TCPTCP的自适应重发算法的自适应重发算法TCP 的流量控制的流量控制问题:在面向连接的传输过程中,发送方与接收方在问题:在面向连接的传输过程中,发送方与接收方在发送报文的速率方面要协调一致。发送报文的速率方面要协调一致。 若发送方一味地向网络注入数据,则可能造成网若发送方一味地向网络注入数据,则可能造成网络拥塞或因接收方来不及处理而丢失数据。络拥塞或因接收方来不及处理而丢失数据。 若发送方每

32、发出一个报文都等待对方的确认,势若发送方每发出一个报文都等待对方的确认,势必造成效率低下。必造成效率低下。解决:滑动窗口协议。采用滑动窗口协议既能够保证解决:滑动窗口协议。采用滑动窗口协议既能够保证可靠性,又可以充分利用网络的传输能力。这种方案可靠性,又可以充分利用网络的传输能力。这种方案允许连续传输多个报文而不必等待各个报文的确认,允许连续传输多个报文而不必等待各个报文的确认,能够连续发送的报文数受到窗口大小的限制。能够连续发送的报文数受到窗口大小的限制。 TCP:基于字节流的流量控制:基于字节流的流量控制允许对方发送多少字节的数据允许对方发送多少字节的数据 (而不是多少个报文段)(而不是多

33、少个报文段) 在在 TCP 连接上利用滑动窗口机制实现流量控制连接上利用滑动窗口机制实现流量控制在连接建立时,在连接建立时,B 告诉告诉 A:“我的接收窗口我的接收窗口 = 400(字节)(字节)”。A的发送窗口不大于的发送窗口不大于400字节(不大于字节(不大于B的接收窗口)的接收窗口) 最多发送最多发送400字节未确认的数据字节未确认的数据TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 序 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充 窗口可以动态调整:窗口可以动态调整:通信过

34、程中,通过通信过程中,通过“窗口窗口”字段通知对方新的窗口值字段通知对方新的窗口值seq = 1seq = 201seq = 401seq = 301seq = 101seq = 501ACK=1,Aseq=201,wnd=300ACK = 1, ack = 601, rwnd = 0ACK=1,Aseq=501,wnd =100AB接收窗口缩小为300,允许 A 发送 201 至 500A 发送了序号 101 至 200,还能发送 200 字节A 发送了序号 301 至 400,还能发送 100 字节A 发送了序号 1 至 100,还能发送 300 字节A 发送了序号 401 至 500,不

35、能再发送新数据了A 超时重传旧的数据,但不能发送新的数据允许 A 发送序号 501 至 600 共 100 字节A 发送了序号 501 至 600,不能再发送了不允许 A 再发送(到序号 600 为止的数据都收到了)seq = 201丢失!流量控制举例流量控制举例设:A的发送窗口swnd初值=400字节,每次发100字节 seq = 401seq = 301超时超时超时TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充窗口字段: 占2 字节

36、,本站的接收窗口, 是对方设置发送窗口的依据 (单位为字节)发送方A:根据接收方B给出的窗口值构造出自己的发送窗口 (不大于对方的接收窗口)发送窗口的结构发送窗口的结构A发送了11个未被确认字节不允许发送已发送并收到确认A 的发送窗口20允许发送但尚未发送26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55已发送但未收到确认56可用窗口9前沿后沿不允许发送已发送并收到确认A 的发送窗口20允许发送但尚未发送26 27 28 29 30 31 32 33 34 35 36

37、 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55已发送但未收到确认56可用窗口9概念上,可用窗口大小 发送窗口大小(已经发送的数据已经确认的数据) 发送窗口大小已经发送但未收到确认的数据 20(4130)20119前沿后沿可用窗口,又称为有效窗口可用窗口,又称为有效窗口不允许发送已发送并收到确认A 的发送窗口20允许发送但尚未发送26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55已发送但未收到确认56P

38、1P2P3可用窗口9P1:指向窗口后沿(已发送、未被确认的最小序号的字节) 即,对方B 期望收到的序号P3:指向窗口前沿(不许发送的最小序号的字节) 即,P3=P1+窗口值(P3 P1 = 发送窗口,又称为通知窗口)P2:指向允许发送的最小序号的字节P2 P1 = 已发送但尚未收到确认的字节数P3 P2 = 允许发送但尚未发送的字节数(可用窗口大小) 前沿后沿发送窗口的参数发送窗口的参数不允许发送已发送并收到确认A 的发送窗口已满,可用窗口为零26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 5

39、1 52 53 54 55已发送但未收到确认56P1P2P3A 的发送窗口内的序号都已用完,但还没有再收到确认,必须停止发送。 不允许发送已发送并收到确认A 的发送窗口允许发送但尚未发送26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55已发送但未收到确认56P1P2P3可用窗口考察B的接收窗口不允许接收已发送确认并交付主机B 的接收窗口允许接收26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46

40、47 48 49 50 51 52 53 54 55 56期望收到的序号未按序收到,暂存不允许发送已发送并收到确认A 的发送窗口 = 20,可用窗口20允许发送的序号27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56B 期望收到的序号前沿后沿此时:所有发出的数据都得到确认窗口移动方向A发送了11个字节(未被确认)不允许发送已发送并收到确认A 的发送窗口20允许发送但尚未发送26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41

41、42 43 44 45 46 47 48 49 50 51 52 53 54 55已发送但未收到确认56可用窗口9前沿后沿不允许发送已发送并收到确认A 的发送窗口 = 20允许发送的序号26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56前沿后沿收到新的确认号(设窗口值不变) 36:窗口(前沿后沿同步)前移P1P2P3窗口移动方向可用窗口9不允许发送已发送并收到确认A 的发送窗口 = 20允许发送的序号26 27 28 29 30 31 32 33 34 35 3

42、6 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56前沿后沿P1P2P3可用窗口15可用窗口大小 20(4135)20515不允许发送已发送并收到确认A 的发送窗口 = 可用窗口20允许发送的序号26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56前沿后沿收到窗口值加大为22(设确认号不变) :窗口前沿前移,发送窗口加大P1P2P3前移不允许发送已发送并收到确认A 的发送窗口 =可用窗口 22允

43、许发送的序号26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56前沿后沿P1P2P3不允许发送已发送并收到确认A 的发送窗口 = 20允许发送的序号28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56前沿后沿收到确认号32且窗口值增加为22, 窗口后沿前移1(32-31),前沿前移3(32-31)+(22-20)可用窗口17前移前移可用窗口20不

44、允许发送已发送并收到确认A 的发送窗口 = 22允许发送的序号28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56前沿后沿接收端窗口的大小接收端窗口的大小W W对应接收端缓存可以继续接收的数据对应接收端缓存可以继续接收的数据量,它等于接收缓存大小量,它等于接收缓存大小M M减去缓存中尚未提交的数据字节减去缓存中尚未提交的数据字节数数N N,即,即W=M-NW=M-N。接收方窗口的大小取决于接收方处理数据的速度和发送方发接收方窗口的大小取决于接收方处理数据的速度和发送方发送数据

45、的速度,当从缓存取走数据的速度低于数据进入缓存送数据的速度,当从缓存取走数据的速度低于数据进入缓存的速度时,接收窗口逐渐缩小,反之则逐渐扩大。的速度时,接收窗口逐渐缩小,反之则逐渐扩大。接收方将当前窗口大小通告给发送方(利用接收方将当前窗口大小通告给发送方(利用TCPTCP段首部的窗段首部的窗口大小字段),发送方根据接收窗口调整其发送窗口,使发口大小字段),发送方根据接收窗口调整其发送窗口,使发送方窗口始终小于或等于接收方窗口的大小。送方窗口始终小于或等于接收方窗口的大小。TCP 标准强烈不赞成发送窗口前沿向后收缩标准强烈不赞成发送窗口前沿向后收缩不允许发送已发送并收到确认A 的发送窗口 =

46、20可用窗口026 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56前沿后沿收到确认号增加K11且窗口值增加K2=2(即减小): 窗口前沿收缩1(进1退2:K1+K2=1 可用资源 n若网络中有许多资源同时产生拥塞,网络的性能就要明显变坏,整个网络的吞吐量将随输入负荷的增大而下降。 n拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。n拥塞控制是一个全局性的过程,涉及到所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。 n流量控制往往指在给

47、定的发送端和接收端之间的点对点通信量的控制。 n流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。 TCP拥塞控制拥塞控制流量控制是由于接收端不能及时处理数据而引发的流量控制是由于接收端不能及时处理数据而引发的控制机制。控制机制。拥塞是由于网络中的路由器超载而引起的严重延迟拥塞是由于网络中的路由器超载而引起的严重延迟现象。拥塞的发生会造成数据的丢失,数据的丢失现象。拥塞的发生会造成数据的丢失,数据的丢失会引起超时重传,而超时重传的数据又会进一步加会引起超时重传,而超时重传的数据又会进一步加剧拥塞,如果不加以控制,最终将会导致系统的崩剧拥塞,如果不加以控制,最终将会导致系统的

48、崩溃。溃。拥塞造成的数据丢失,仅仅靠超时重传是无法解决拥塞造成的数据丢失,仅仅靠超时重传是无法解决的。的。因此因此,TCP,TCP提供了拥塞控制机制。提供了拥塞控制机制。TCPTCP的拥塞控制,仍然是利用发送方的窗口来控制注的拥塞控制,仍然是利用发送方的窗口来控制注入网络的数据流的速度。减缓注入网络的数据流入网络的数据流的速度。减缓注入网络的数据流后,拥塞就会被解除。后,拥塞就会被解除。引入拥塞控制后,发送窗口的大小取决于两个方面引入拥塞控制后,发送窗口的大小取决于两个方面的因素:的因素:接收方的处理能力接收方的处理能力确认报文所通告的窗口大小确认报文所通告的窗口大小(即可用的接收缓存的大小)

49、来表示;(即可用的接收缓存的大小)来表示;网络的处理能力网络的处理能力发送方所设置的变量发送方所设置的变量拥塞窗口拥塞窗口 来表示。发送窗口的大小取通告窗口和拥塞窗口中小的来表示。发送窗口的大小取通告窗口和拥塞窗口中小的 一个。一个。发送窗口大小发送窗口大小=min(=min(接收方通告窗口大小,拥塞窗口接收方通告窗口大小,拥塞窗口大小大小) )和接收窗口一样,拥塞窗口也处于不断的调整中。一旦发现和接收窗口一样,拥塞窗口也处于不断的调整中。一旦发现拥塞,拥塞,TCPTCP将减小拥塞窗口。将减小拥塞窗口。为了避免和消除拥塞,为了避免和消除拥塞,TCPTCP周而复始地采用三种策略来控制周而复始地采

50、用三种策略来控制拥塞窗口的大小。拥塞窗口的大小。首先是使用慢启动策略,在建立连接时拥塞窗口被设置为一首先是使用慢启动策略,在建立连接时拥塞窗口被设置为一个最大段大小个最大段大小MSSMSS。对于每一个段的确认都会使拥塞窗口增。对于每一个段的确认都会使拥塞窗口增加一个加一个MSSMSS,实际上这种增加方式是指数级的增加。例如,实际上这种增加方式是指数级的增加。例如,开始时只能发送一个数据段,当收到该段的确认后拥塞窗口开始时只能发送一个数据段,当收到该段的确认后拥塞窗口加大到两个加大到两个MSSMSS,发送方接着发送两个段,收到这两个段的,发送方接着发送两个段,收到这两个段的确认后,拥塞窗口加大到

51、确认后,拥塞窗口加大到4 4个个MSSMSS,接下来发送,接下来发送4 4个段,拥塞个段,拥塞窗口加大到窗口加大到8 8个个MSSMSS。n在主机刚刚开始发送报文段时可先设置拥塞窗口 cwnd = 1,即设置为一个最大报文段 MSS 的数值。n在每收到一个对新的报文段的确认后,将拥塞窗口加 1,即增加一个 MSS 的数值。n用这样的方法逐步增大发送端的拥塞窗口 cwnd,可以使分组注入到网络的速率更加合理。 发送方接收方发送 M1 确认 M1发送 M2M3 确认 M2M3 发送 M4M7 确认 M4M7 cwnd = 1 cwnd = 2 cwnd = 4 发送 M8M15cwnd = 8 t

52、t发送方每收到一个对新报文段的确认(重传的不算在内)就使 cwnd 加 1。 轮次 1轮次 2轮次 3n慢开始门限 ssthresh 的用法如下:n当 cwnd ssthresh 时,停止使用慢开始算法而改用拥塞避免算法。n当 cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞避免算法。n拥塞避免算法的思路是让拥塞窗口 cwnd 缓慢地增大,即每经过一个往返时间 RTT 就把发送方的拥塞窗口 cwnd 加 1,而不是加倍,使拥塞窗口 cwnd 按线性规律缓慢增长。当拥塞窗口加大到门限值(拥塞发生时拥塞窗口的一半)当拥塞窗口加大到门限值(拥塞发生时拥塞窗口的一半)时,进入拥塞避

53、免阶段,在这一阶段,使用的策略是,每收时,进入拥塞避免阶段,在这一阶段,使用的策略是,每收到一个确认,拥塞窗口加大到一个确认,拥塞窗口加大1 1个个MSSMSS,即使确认是针对多个,即使确认是针对多个段的,拥塞窗口也只加大段的,拥塞窗口也只加大1 1个个MSSMSS,这在一定程度上减缓了,这在一定程度上减缓了拥塞窗口的增长。但在此阶段,拥塞窗口仍在增长,最终可拥塞窗口的增长。但在此阶段,拥塞窗口仍在增长,最终可能导致拥塞。能导致拥塞。拥塞使重传定时器超时,发送方进入拥塞解决阶段。发送方拥塞使重传定时器超时,发送方进入拥塞解决阶段。发送方在进行重传的同时,将门限值调整为拥塞窗口的一半,并将在进行

54、重传的同时,将门限值调整为拥塞窗口的一半,并将拥塞窗口恢复成一个拥塞窗口恢复成一个MSSMSS,然后进入新一轮的循环。,然后进入新一轮的循环。2216当 TCP 连接进行初始化时,将窗口置为 1。慢开始门限的初始值设置为 16 个报文段,即 ssthresh = 16。24681012141618200048122024拥塞窗口 cwnd新的 ssthresh 值网络拥塞指数规律增长ssthresh 的初始值慢开始慢开始慢开始拥塞避免拥塞避免“加法增大”传输轮次慢开始和拥塞避免算法的实现举例 在执行慢开始算法时,拥塞窗口 cwnd 的初始值为 1,发送第一个报文段 M0。 2216246810

55、12141618200048122024拥塞窗口 cwnd新的 ssthresh 值网络拥塞指数规律增长ssthresh 的初始值慢开始慢开始拥塞避免拥塞避免“加法增大”传输轮次慢开始和拥塞避免算法的实现举例 发送端每收到一个确认 ,就把 cwnd 加 1。于是发送端可以接着发送 M1 和 M2 两个报文段。 221624681012141618200048122024拥塞窗口 cwnd新的 ssthresh 值网络拥塞指数规律增长ssthresh 的初始值慢开始慢开始慢开始拥塞避免拥塞避免“加法增大”传输轮次慢开始和拥塞避免算法的实现举例 接收端共发回两个确认。发送端每收到一个对新报文段的确

56、认,就把发送端的 cwnd 加 1。现在 cwnd 从 2 增大到 4,并可接着发送后面的 4 个报文段。 221624681012141618200048122024拥塞窗口 cwnd新的 ssthresh 值网络拥塞指数规律增长ssthresh 的初始值慢开始慢开始慢开始拥塞避免拥塞避免“加法增大”传输轮次慢开始和拥塞避免算法的实现举例 当拥塞窗口 cwnd 增长到慢开始门限值 ssthresh 时(即当 cwnd = 16 时),就改为执行拥塞避免算法,拥塞窗口按线性规律增长。 221624681012141618200048122024拥塞窗口 cwnd新的 ssthresh 值网络拥

57、塞指数规律增长ssthresh 的初始值慢开始慢开始慢开始拥塞避免拥塞避免“加法增大”传输轮次221624681012141618200048122024拥塞窗口 cwnd新的 ssthresh 值网络拥塞指数规律增长ssthresh 的初始值慢开始慢开始慢开始拥塞避免拥塞避免“加法增大”慢开始和拥塞避免算法的实现举例 假定拥塞窗口的数值增长到 24 时,网络出现超时,表明网络拥塞了。 传输轮次221624681012141618200048122024拥塞窗口 cwnd新的 ssthresh 值网络拥塞指数规律增长ssthresh 的初始值慢开始慢开始慢开始拥塞避免拥塞避免“加法增大”慢开始

58、和拥塞避免算法的实现举例 更新后的 ssthresh 值变为 12(即发送窗口数值 24 的一半),拥塞窗口再重新设置为 1,并执行慢开始算法。 传输轮次 2 8 16 20 拥塞窗口大小(段) 超时 超时 门限=16 20 门限=10 门限=8 16 2 4 8 6 10 12 14 16 18 20 22 往返时间 TCP状态转换图状态转换图TCPTCP建立连接、传输数据和断开连接是一个复杂的过建立连接、传输数据和断开连接是一个复杂的过程。为了准确地描述这一过程,可以采用有限状态程。为了准确地描述这一过程,可以采用有限状态机。有限状态机包含有限个状态,在某一时刻,机器机。有限状态机包含有限

59、个状态,在某一时刻,机器必然处于某一特定状态,当在一个状态下发生特定事必然处于某一特定状态,当在一个状态下发生特定事件时,机器会进入一个新的状态。在进行状态转换件时,机器会进入一个新的状态。在进行状态转换时,机器可以执行一些动作。时,机器可以执行一些动作。TCPTCP状态转换图表示状态转换图表示TCPTCP的有限状态机,图中状态用方的有限状态机,图中状态用方框表示,状态转移用带箭头的线表示,线旁的说明用框表示,状态转移用带箭头的线表示,线旁的说明用斜线分为两部分,斜线前是引起状态转移的事件,斜斜线分为两部分,斜线前是引起状态转移的事件,斜线后是状态转移时所发出的动作。线后是状态转移时所发出的动作。 CLOSED SYN-SENT ESTABLISHED FIN-WAIT-1 FIN-WAIT-2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论