传输控制协议TCP剖析课件_第1页
传输控制协议TCP剖析课件_第2页
传输控制协议TCP剖析课件_第3页
传输控制协议TCP剖析课件_第4页
传输控制协议TCP剖析课件_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

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

文档简介

1、第七章 传输控制协议TCP计算机与通信工程学院张 然网络协议分析主要内容1、引言2、TCP的特点3、TCP连接4、提供可靠性5、传输效率与流量控制6、TCP的拥塞控制 7、IP层对改善TCP性能的支持8、TCP报文段格式9、对TCP的几点说明基本要求1. 掌握TCP的可靠性机制:确认、重传、序号;2. 掌握TCP的流控和提高传输效率策略:滑动窗口机制;3. 掌握TCP连接的建立与关闭协议:三次握手;4. 掌握TCP的报文段格式;5. 掌握TCP的拥塞控制技术;6. 掌握TCP避免糊涂窗口综合症的技术; 7. 了解紧急数据发送和强迫数据发送。学习内容1、引言2、TCP的特点3、TCP连接4、提供

2、可靠性5、传输效率与流量控制6、TCP的拥塞控制 7、IP层对改善TCP性能的支持8、TCP报文段格式9、对TCP的几点说明问题?IP协议的特点是什么?应用程序如果要得到高可靠性服务,有哪些途径?在IP层上增加一层功能模块由应用程序自身完成可靠性功能UDP能否满足应用程序的需求?要实现可靠的数据流传输服务,必须解决哪几个问题? 1. 可靠性: 防丢失:确认与重传; 防重复:报文段序号;2. 流量控制:滑动窗口机制;3. 拥塞控制:加速递减与慢启动技术;4. 建立连接:三次握手;5. 关闭连接:改进的三次握手。学习内容1、引言2、TCP的特点3、TCP连接4、提供可靠性5、传输效率与流量控制6、

3、TCP的拥塞控制 7、IP层对改善TCP性能的支持8、TCP报文段格式9、对TCP的几点说明 TCP有哪些特点?面向数据流;虚电路连接;有缓冲的传输;无结构的数据流;全双工连接。学习内容1、引言2、TCP的特点3、TCP连接4、提供可靠性5、传输效率与流量控制6、TCP的拥塞控制 7、IP层对改善TCP性能的支持8、TCP报文段格式9、对TCP的几点说明TCP 连接的建立功能:1. 同意连接协商,使双方做好传输数据的准备;2.协商各自报文段ISN(初始序列号,不能为1);?3. 协商MSS(只有SYN报文段能协商MSS)。说明: SYN报文段占用初始序号,发送数据的第一字节序号为ISN+1。

4、接收ACK客户端服务器报文段发送SYNseq=xREQUEST接收SYN发送SYN seq=y,ACK x+1ACCEPTED接收SYN+ACK发送ACK y+1CONFIRM建立连接:三次握手关于ISN和MSSISN不能取1,为什么?ISN的设置方法是有一定规律的。MSS为什么要选择MSS?如果连接的两端在同一个物理网络中,TCP协议软件能计算出合适的MSS;如果连接的两端不在同一个物理网络中,则把路径上最小的MTU除去首部后的数据大小作为MSS.选择合适的MSS非常困难:太小,网络利用率低;太大,会降低网络性能。TCP连接的关闭:改进的三次握手说明: FIN报文段占用一个序号;单纯的ACK

5、报文段不占用序号。 TCP提供了半关闭能力:连接的一端在结束它的发送后还能接收来自另一端数据。 有些编程接口提供close来关闭TCP连接,提供shutdown加特殊参数来实现半关闭。 异常时强行关闭连接:连接复位 RST,发起端发RST报文段;双方立即停止传输,并退出连接。网点1网点2接收ACK接收ACK发送FINseq=x接收FINACK x+1发送FIN seq=yACK x+1接收FIN +ACK发送ACK y+1端口、端点和连接 端口 ( 21、23、25、53、79、80、139、161 )端点一对整数:(host IP,port)标识通信一方的一个应用程序。连接一对端点:表示通信

6、双方应用程序间的一条虚电路。 主动打开 去请求 被动打开 等待来说明 一台机器上的一个TCP端口可被多个连接共享; TCP、UDP可用相同的端口号,但不会冲突。 一个DOS命令NetstatActive ConnectionsProto Local Address Foreign Address StateTCP koukou:1056 40:https ESTABLISHEDNetstat o:列出与每个端口相关的进程Netstat r:显示路由表TCP攻击实例1. IP欺骗A:目标机B:被伪装机H:黑客机 核心:ISN估计H冒充B攻击AH冒充B向A发送SYN报文A向B回应SYN+ACK报文

7、B发现错误,向A发RSTA发现错误 假设B机死,则攻击步骤为:(1)H冒充B向A发送SYN报文,ISNh(2)A向B回应SYN+ACK(ACK ISNh+1,SYN ISNa), 白发(3)H假冒B回应ACK到A(ACK ISNa+1)问题:ISNa=?(难点)解决:掌握ISN增长的规律2.TCP端口扫描TCP实现的基本规则:若SYN或者FIN数据包到达一个关闭的端口,TCP丢弃数据包的同时会发送一个RST数据包。 全连接扫描 扫描主机用三次握手与目的机指定端口建立正规连接。实现方式:connect( )函数调用,若端口打开则连接成功,否则失败。优点:实现简单;缺点:很容易被发现,目前通常被禁

8、止2.TCP端口扫描(续)半开扫描(全连接尚未建立,SYN扫描) (1)发SYN报文到目的主机的目标端口 (2)若目标返回SYN+ACK,则端口开放,否则回RST (3)若端口开放,则发送RST给目标,从而终止连接缺点:不能用socket编程实现;优点:不容易被发现。 Fin扫描 (1)发送FIN报文到目标主机的目标端口 (2)若返回RST,则端口关闭,否则端口打开缺点:不能用socket编程实现;优点:不容易被发现。3.SYN Flood (DoS、DDoS)(1) TCP服务器的设计并发特性:可处理多个呼入连接请求!每到达一个请求,调用一个进程处理。TCP服务器实现规则:设置长度固定的连接

9、队列,其中的连接已被TCP接受,但没有被应用接受;TCP接受连接是将其写入该队列,应用层接受该连接是将其从队列中移出。应用层指明队列的最大长度连接请求(SYN)到达时,若队列中还有空间,则接收这个连接并确认;若无空间,不理会该请求,也不作回应。SYN Flood 的原理若发送大量伪造的TCP请求,填满对方的请求队列,则服务器无法响应正常的连接请求,最终CPU和内存资源被耗尽。学习内容1、引言2、TCP的特点3、TCP连接4、提供可靠性5、传输效率与流量控制6、TCP的拥塞控制 7、IP层对改善TCP性能的支持8、TCP报文段格式9、对TCP的几点说明TCP报文 报文段:报文段是TCP软件间传输

10、数据的基本单元,每个报文段都有一个序号。 首部长度:4字节计数,最大值为15,所以TCP首部长度20-60源端口目标端口序号确认号首部长度保留码元比特窗口校验和紧急指针选项(若有)填充数据序号报文段序号如何设置? 报文段中所携带数据中首字节数据在原始字节流中的位置编号如:主机A将一个包含500K字节的文件发送给主机B, MSS为1000字节,假定数据流的首字节编号为0,则每个报文段序号如下:0110001999499999第一个报文段数据第二个报文段数据文件第一个报文段序号第二个报文段序号确认号 确认号:希望接收的对方下一报文段序号(已成功接收到的数据字节序号+ 1),如累计确认:如 0 53

11、5,536 1071,1072 1607接收方如何处理失序报文段? 实现者可自行选择实现: 抛弃/缓存 丢失(1) 序号和确认序号在一起使得确认可捎带进行。 (2) TCP采用累计确认策略。 采用累计确认,确认丢失不一定迫使发送方重传,为什么?(3) TCP采用经受时延的确认(时延一般为200ms)。累计确认的缺点:发送方无法收到所有成功传输的报文段的确认信息,对往返时间样本的精确测量会带来影响。说明窗口: 接收方把自己可用缓冲区的大小通告发送方,使发送方修改窗口的大小,以便进行收发双方的流量控制。 初始窗口大小如何确定? 默认值,在建立连接时互相通告校验和计算: 加入伪首部,必须的(注意:

12、UDP可选) 源IP目标IP0协议TCP长度窗口与校验和码元比特(标识报文段的目的与内容):URG紧急ACK确认PSH强迫RST连接复位SYN序号同步FIN字节流同步建立连接异常关闭连接正常关闭连接码元比特带外数据和紧急数据发送带外数据:源站不能按字节流的顺序而需要立即发给接收方并及时处理的数据(普通数据流中的紧急数据)。1URG位数据区紧急数据紧急指针 发送方将URG位置1,将紧急数据放在报文段数据区的最前面,接收方收到URG报文段,立即把该情况通知给接收应用程序。 紧急数据一般位于数据区的最前端,紧急指针指向紧急数据的最后一个字节。有些系统只传送1字节紧急数据,则可位于数据区任意地方。紧急

13、数据的交付与其它正常TCP数据交付的区别:指出紧急数据的存在,并对它在数据流中的位置进行标记。 为什么要强迫发送数据? TCP为提高网络利用率,通常在缓冲区中积累够一个最大报文段容量的数据后才发送。 在有些情况下希望数据能够快速发送出去。如:在交互环境或实时性要求高的场合,每条命令(甚至每个字符)都希望及时传送。 TCP提供推(PUSH)操作,以强迫发送当前数据流中的数据,而不必等待缓冲区满。 发送方将PSH置“1”,以通知接收方尽快把该报文段数据交给应用程序。 强迫数据发送第一版TCP:定义了选项表结束(EOP)、无操作(NOP)、MSS(最大报文段长度)。选项表结束(EOP)Kind=0(

14、1byte)MSSKind=2(1byte)len=4(1byte)MSS(2byte)无操作( NOP)Kind=1(1byte)功能:使得选项达到4字节的整数倍关于选项类型长度选项内容EOP和NOP的区别EOP和NOP都只占一个字节,使选项达到4字节的整倍数;EOP只能使用一次,用在选项区结尾处;NOP可以使用多次,用在选项之前,用作选项之间的填充。3字节选项EOPTCP首部必有的字段部分 数据部分10字节选项 NOPTCP首部必有的字段部分 数据部分 NOP NOP 3字节选项选项MSS该选项定义了可被接受的最大数据单元MSS过小:效率低;MSS过大:考虑分片,丢失可能性增大;MSS接近

15、路径MTU时为最佳(由于路径改变,很难)。说明:只有SYN报文能协商MSS,默认536字节;MSS的值在连接建立阶段确定,在连接期间保持不变。该选项的取值范围是什么?第二版TCP(rfc1323):增加了窗口扩大因子和时间戳。窗口扩大因子Kind=3len=4移位数功能:将TCP窗口描述从16bit扩大到32bit。 移位数 = R:新窗口大小 = 首部中定义的窗口值 2R说明: 在连接建立阶段确定,连接期间值不能改变; 主动建立连接的一方发送这个选项,被动方收到该选项后才能发此选项; 每个方向上的扩大因子可以不同;选项窗口扩大因子时间戳选项:kind=8len=10时间戳值(4 byte)时

16、间戳回显应答(4 byte)时间戳:发送方填时间戳回显应答:接收方确认时复制发回功能:1. 估算RTT( RTT=当前时间-时间戳回送回答的时间) 问题:是否需要同步?2. 防止序号回绕时无法区分报文:防止同样的序号在一个连接中再次出现,通过序号和时间戳来共同标识一个报文段选项时间戳选项4字节4字节接收方如何复制时间戳字段?为每个连接保留一个时间戳 (tsrecent) 和最后发送的ACK报文的确认号(lastack)1. TCP设置两个变量:(1)tsrecent: 每个连接的时间戳数值;(2)lastack: 最近一次发送的ACK报文的确认序号;2. 当包含序号与 lastack一致的报文

17、段到达时,其中的时间戳被保存至 tsrecent;3. 无论何时发送确认,tsrecent 将被写入时间戳回显应答字段,确认序号则被保存到 lastack。分析 (1)若ACK被接收方延迟,则回显的是第一个报文段的时间戳。例:若包含11024和10252048字节的两个报文段到达,则:lastack为2049,回显时间戳为11024的时戳。t1t2lastack=1tsrecent=t1时间戳:t1时间戳回送回答时间戳:t2时间戳回送回答lastack=2049tsrecent=t12049t3RTT=t3-t1lastack=1tsrecent=时间戳:时间戳回送回答:t1分析 (2)若收到

18、的报文失序,则失序的报文段到达时,它的时间戳被回显。例:收到报文的顺序为11024 - 20494072 - 10252048,则处理情况如下:(1)确认号为1025,回显时间戳为11024的时戳;(2)确认号为1025,回显时间戳为11024的时戳;(3)确认号为4073,回显时间戳为10252048的时戳.t1t2t3lastack=1025tsrecent=t1时间戳:时间戳回送回答:t1lastack=1025tsrecent=t1lastack=4073tsrecent=t2102510254073结果:造成RTT估计过高. 比过低好t4t5t6lastack=1tsrecent=时

19、间戳:时间戳回送回答:t2时间戳:时间戳回送回答:t1学习内容1、引言2、TCP的特点3、TCP连接4、提供可靠性5、传输效率与流量控制6、TCP的拥塞控制 7、IP层对改善TCP性能的支持8、TCP报文段格式9、对TCP的几点说明防丢失 带重传的肯定确认技术 接收方收到数据后向源站发确认(ACK); 设置定时器,源站在限定时间内未收到ACK,则重发。 数据发送方数据接收方接收确认发送分组1接收分组 发送确认接收确认 发送分组2接收分组2 发送确认超时重传分组2两个问题如何识别和处理重复的数据?序号抛弃定时器时限设置多长? 见后面 防重复和乱序报文段重复产生的原因? “假“丢失:确认丢失或确认

20、延迟(超时)到达,致使发送方重传造成的。解决方法:为每一分组赋予一个序号,用以检测重复。 序号同时保证了分组间的正确顺序。确认时通过确认号指明哪些分组已经收到。(累积确认)可提高效率的捎带累计确认技术什么是累计确认?只确认前面连续收到的报文什么是捎带确认?把对上一个报文的确认信息放到发给发送方的数据报文中捎带回去。RTT与重传定时器 对于超时重传的情况,如何设置重传定时器的时限?时限设置的过大过小会出现什么问题?网络性能不断变化,定时时限应动态调整两个概念: RTT:往返时间,从发出报文段到收到确认信息之间的时间段。 自适应重传算法:通过监视每个连接的性能,由此推算出合适的定时时限。当连接的性

21、能变化时,随时修改定时时限。重传定时时限的计算方法重传定时时限的计算方法: 早期的方法 改进的方法 Karn算法和定时器补偿早期的方法R:RTT的估计值M:本次测量的RTT值RTO:定时时限修改估计值:R R + (1-)M (01,通常取=0.9) 计算时限: RTO = R (早期取2,后改为4) 缺陷:在RTT变化较大的场合,说明网络某处处于拥塞状态,但上述方法对此反映不敏感,从而造成不必要的重传,进一步加重网络负担。改进的方法R:RTT的估计值M:本次测量的RTT值RTO:定时时限Diff:差值 Dev :平均偏差的估计值 Diff M - RR R + *DiffDev Dev +*

22、(|Diff| - Dev) (Dev估计值)RTO R +*Dev 、在01之间,通常取: = 1/23, = 1/22,= 22 Karn算法和定时器补偿确认二义性:对于重传的报文段,收到确认后是对哪一次传输的确认无法确定。结果:RTT样本值无法使用 ;Karn算法: 思想:当发生超时重传时,不再更新RTT估计值,忽略重传样本。 定时器补偿:超时重传发生,加大定时时限: RTO *RTO (通常取2)。对重传分组的后续分组,定时时限不变,直到获得一个新的有效样本时再更改时限值。 学习内容1、引言2、TCP的特点3、TCP连接4、提供可靠性5、流量控制6、TCP的拥塞控制 7、IP层对改善T

23、CP性能的支持8、TCP报文段格式9、对TCP的几点说明滑动窗口机制停-等机制效率太低(要等前一个报文的确认到来后才能发送下一个报文)一般的滑动窗口机制 思想:允许发送方不必等确认到来就可继续发送下面的分组,但规定一个上限。若多个分组的确认未到时,则暂停发送。 1 2 3 4 5 6 7 8 9 10 11 12 13分组流WindowSize=9已发并得到确认不能发送已发未得到确认未发但可以发TCP的窗口大小可变技术101 200 201 320 321399 发送窗口,初始时400确认(200)窗口通告(120)发送窗口,变为120当目的主机缓冲区变小而不能接收源主机更多的数据时,就要进行

24、流量控制。 TCP流量控制技术:可随时改变窗口大小。目的主机在确认时,还向源主机告知目的主机接收缓冲区的大小。TCP端到端流量控制原理 (假设 TCP 接收方丢弃失序的报文段)缓冲区的剩余空间 = RcvWindow = RcvBuffer -LastByteRcvd - LastByteRead接收方B在发往A的报文段接收窗口字段中放入RcvWindow的值,通告其接收缓冲区的剩余空间.发送方A要限制未确认的数据不超过RcvWindow,即可保证接收缓冲区不溢出: LastByteSent-LastByteAcked 或 = RcvWindow放入缓存中的最后一字节的编号从缓存读出的最后一字

25、节的编号说明(1) 数据流的各字节被编上序号。 (2) TCP的滑动窗口按字节操作而不是按报文段或分组操作。 (3) TCP窗口大小为字节数。最大为65535字节。 (4) 通信双方都设有发送和接收缓冲区。不同的系统默认大小各有差异,如4096、8192、16384等。发送缓冲区大小为默认窗口大小。(5) TCP连接两端各有两个窗口(发送窗口和接收窗口)收到确认即可前移1002003004005006007008009001012013014015016017018011发送窗口可发送不可发送指针发送端要发送 900 字节长的数据,划分为 9 个 100 字节长的报文段,而发送窗口确定为 50

26、0 字节。发送端只要收到了对方的确认,发送窗口就可前移。发送 TCP 要维护一个指针。每发送一个报文段,指针就向前移动一个报文段的距离。 举例收到确认即可前移1002003004005006007008009001012013014015016017018011可发送不可发送指针1002003004005006007008009001012013014015016017018011发送窗口可发送不可发送指针发送窗口前移发送端已发送了 400 字节的数据,但只收到对前 200 字节数据的确认,同时窗口大小不变。现在发送端还可发送 300 字节。 已发送并被确认已发送但未被确认1002003004

27、005006007008009001012013014015016017018011已发送并被确认已发送但未被确认可发送不可发送指针1002003004005006007008009001012013014015016017018011已发送并被确认可发送不可发送指针发送窗口前移发送窗口缩小发送端收到了对方对前 400 字节数据的确认,但对方通知发送端必须把窗口减小到 400 字节。现在发送端最多还可发送 400 字节的数据。 SEQ = 1SEQ = 201SEQ = 401SEQ = 301SEQ = 101SEQ = 501ACK = 201, WIN = 300ACK = 601, W

28、IN = 0ACK = 501, WIN = 200主机 A主机 B允许 A 再发送 300 字节(序号 201 至 500)A 还能发送 200 字节A 还能发送 200 字节(序号 301 至 500)A 还能发送 300 字节A 还能发送 100 字节(序号 401 至 500)A 超时重发,但不能发送序号 500 以后的数据允许 A 再发送 200 字节(序号 501 至 700)A 还能发送 100 字节(序号 601 至 700)不允许 A 再发送(到序号 600 的数据都已收到)SEQ = 201丢失!利用可变窗口大小进行流量控制双方确定的窗口值是 400如何防止死锁?接收方使用

29、0窗口通告来停止所有的传输。此时,除了紧急数据和窗口试探报文外,不接收其它数据 。当接收方缓存有了空间时,如何让对方继续发送数据给自己?如果窗口变为非0时,则接收方会向发送方发非0窗口的通告;但是,若该确认丢失,则会造成死锁。如何防止死锁?坚持定时器:发送方接收到0窗口通告时进行设置。用于周期性地向对方询问窗口大小。窗口试探报文:在坚持定时器时间到、但仍没收到接收方非0窗口的通知时发送。防止非0窗口通告丢失造成死锁。糊涂窗口综合症SWS SWS的起因:接收方缓冲满后,窗口值变为0,接着从缓冲区读取少量数据后会生成小窗口通告SWS的结果:接收方的小窗口通告造成发送方发送一系列小的报文段,严重浪费

30、网络带宽。如何避免SWS? 启发式的避免策略接收方方法: (1)避免小窗口通告 ,在零窗口通告(缓冲满)之后,只在可用缓冲区显著增加(缓冲区空间的一半或一个MSS)后才发送新的窗口通告 ; (2)推迟确认(最多500ms),可用窗口大小不到避免SWS策略所需的尺寸时,不确认。优点:降低了通信量缺点:造成不必要的重传和RTT估计不准确 为了使发送方正确估计RTT,至少每隔一个报文段要进行一次正常的确认。启发式的避免策略发送方思想:积累数据,避免小报文段发送Nagle算法:自适应推迟传输,以便形成较大报文段 (1)连接建立后,最初的数据会立即发送。 (2)当缓冲区中数据不足一个报文段,则推迟发送。

31、 (3)只有等到一个确认来到(确认触发)时,才发送缓冲区中的小报文段。(会出现死锁吗?) Nagle算法的两个优点:自适应:确认到达得越快,数据也就发送得越快 ;计算简单:不需要定时器。可关闭Nagle算法,应用程序接口一般提供选项TCP-NODELAY来关闭Nagle算法。 学习内容1、引言2、TCP的特点3、TCP连接4、提供可靠性5、传输效率与流量控制6、TCP的拥塞控制 7、IP层对改善TCP性能的支持8、TCP报文段格式9、对TCP的几点说明为什么要进行拥塞控制?什么是拥塞? 交换节点(如路由器)数据报负载过重的现象 。回顾: IP层的拥塞控制技术: 路由器发ICMP源站抑制报文,是

32、一种被动机制。TCP拥塞控制的必要性: 拥塞会造成时延增加,时延增大又会造成超时重传,控制不当会进一步加重拥塞。 TCP控制拥塞的两个变量每一个TCP连接需要有以下两个状态变量:接收端窗口 (receiver window) ,又称为通知窗口(advertised window)。接收端根据其目前的接收缓存大小向发送方所许诺的最新的窗口值来自接收端的流量控制拥塞窗口 (congestion window)。发送端根据自己估计的网络拥塞程度而设置的窗口值它对一个发送方能向网络中发送流量的速率进行限制来自发送端的流量控制。发送窗口的上限值发送窗口的上限值取决于接收端窗口RcvWin 和拥塞窗口Co

33、ngWin 这两个变量中较小的一个,即应按以下公式确定: 发送窗口的上限值 Min CongWin, RcvWin当 RcvWin CongWin时,是接收端的接收能力限制发送窗口的最大值。当 CongWin RcvWin 时,则是网络的拥塞限制发送窗口的最大值。发送方限制传输(假设接收缓存足够大): LastByteSent-LastByteAcked CongWin TCP采用了一种主动拥塞控制机制 拥塞窗口cwnd每个连接都有一个拥塞窗口,该窗口大小以字节为单位,但是增加和减少以MSS为单位;初始大小:1个MSS;临界值:64KB 慢启动与拥塞避免技术指数递增:每次成功发送1个MSS长度

34、的报文段,则发送方拥塞窗口加倍;线性递增:增长到临界值后,每次增加1个MSS 加速递减技术指数级递减:出现超时重传时,将临界值设为当前拥塞窗口的1/2,拥塞窗口恢复为1个MSS大小;收到3个冗余ACK,拥塞窗口减半。 指数退避:对保留在发送窗口中的报文段,将重传时限加倍 。TCP拥塞控制算法慢启动(slow start)加性增、乘性减( AIMD)对超时事件做出反应慢启动原理 在主机刚刚开始发送报文段时可先将拥塞窗口 CongWin设置为一个最大报文段 MSS 的数值;在每收到一个对新的报文段的确认后,将拥塞窗口增加一个 MSS的数值(最终,每个RTT倍增拥塞窗口值);直到拥塞窗口增加到门限值

35、时,进入拥塞避免状态;用这样的方法逐步增大发送端的拥塞窗口 CongWin,可以使分组注入到网络的速率更加合理。 主机A一个报文段RTT主机B时间两个报文段四个报文段TCP加增倍减算法(AIMD)乘性减: 丢包事件后,拥塞窗口值减半或降为1个MSS,但不能低于一个MSS。加性增: 如没有检测到丢包事件,每个RTT时间拥塞窗口值CongWin增加一个MSS (最大报文段长度)长生命周期TCP连接对于丢包事件的反应超时事件以后:CongWin值设置为1 MSS窗口再指数增长到达一个阈值(Threshold) 后,再线性增长收到3个冗余确认后:CongWin减半窗口再线性增加 3个冗余ACK指示网络

36、还具有某些传送报文段的能力而超时,则更为 “严重”基本思想:慢启动快速恢复TCP 拥塞控制:小结当CongWin Threshold时,发送者处于拥塞避免阶段, CongWin线性增长当出现3个冗余确认时, 阀值Threshold设置为CongWin/2,且CongWin设置为Threshold当超时发生时,阀值Threshold设置为CongWin/2,并且CongWin设置为1 MSS. TCP发送方拥塞控制(RFC2581)状态事件TCP发送方拥塞控制动作注释慢启动(SS)收到前面未确认数据的ACKCongWin = CongWin + MSS, 如果(CongWin 阈值) 设置状态为

37、“拥塞避免”导致每个RTT CongWin翻倍拥塞避免(CA)收到前面未确认数据的ACKCongWin = CongWin + MSS MSS/ CongWin加性增,每RTT导致CongWin增加1个MSSSS或CA由3个冗余ACK检测到的丢包事件阈值 = CongWin/2, CongWin = 阈值,设置状态为“拥塞避免”快速恢复,实现乘性减。CongWin将不低于1个MSSSS或CA超时阈值 = CongWin/2, CongWin = 1 MSS ,设置状态为“慢启动”进入慢启动SS或CA冗余ACK对确认的报文段增加冗余ACK计数CongWin和阈值不改变慢开始和拥塞避免算法的实现举

38、例-1 当 TCP 连接进行初始化时,将拥塞窗口置为 1。图中的窗口单位不使用字节而使用报文段。慢开始门限的初始值设置为 16 个报文段,即 ssthresh = 16。246810121416182022004812162024传输次数拥塞窗口进入拥塞避免发生超时指数规律增长线性规律增长ssthresh = 16慢开始慢开始拥塞避免拥塞避免更新后的 ssthresh = 12进入拥塞避免 发送端的发送窗口不能超过拥塞窗口和接收端窗口中的最小值。我们假定接收端窗口足够大,因此现在发送窗口的数值等于拥塞窗口的数值。慢开始和拥塞避免算法的实现举例-2 在执行慢开始算法时,拥塞窗口的初始值为 1,发

39、送第一个报文段 M0。 246810121416182022004812162024传输次数拥塞窗口进入拥塞避免发生超时指数规律增长线性规律增长ssthresh = 16慢开始慢开始拥塞避免拥塞避免更新后的 ssthresh = 12进入拥塞避免慢开始和拥塞避免算法的实现举例-3246810121416182022004812162024传输次数拥塞窗口进入拥塞避免发生超时指数规律增长线性规律增长ssthresh = 16慢开始慢开始拥塞避免拥塞避免更新后的 ssthresh = 12进入拥塞避免发送端收到 ACK1 (确认 M0,期望收到 M1)后,将拥塞窗口从 1 增大到 2,于是发送端可

40、以接着发送 M1 和 M2 两个报文段。 慢开始和拥塞避免算法的实现举例-4 接收端发回 ACK2 和 ACK3。发送端每收到一个对新报文段的确认 ACK,就把发送端的拥塞窗口加 1。现在发送端的拥塞窗口从 2 增大到 4,并可发送 M4 M6共 4个报文段。 246810121416182022004812162024传输次数拥塞窗口进入拥塞避免发生超时指数规律增长线性规律增长ssthresh = 16慢开始慢开始拥塞避免拥塞避免更新后的 ssthresh = 12进入拥塞避免慢开始和拥塞避免算法的实现举例-5 发送端每收到一个对新报文段的确认 ACK,就把发送端的拥塞窗口加 1,因此拥塞窗

41、口 随着传输次数按指数规律增长。 246810121416182022004812162024传输次数拥塞窗口进入拥塞避免发生超时指数规律增长线性规律增长ssthresh = 16慢开始慢开始拥塞避免拥塞避免更新后的 ssthresh = 12进入拥塞避免慢开始和拥塞避免算法的实现举例-6 当拥塞窗口增长到慢开始门限值 ssthresh 时(即当 CongWin = 16 时),就改为执行拥塞避免算法,拥塞窗口按线性规律增长。 246810121416182022004812162024传输次数拥塞窗口进入拥塞避免发生超时指数规律增长ssthresh = 16慢开始慢开始线性规律增长拥塞避免拥

42、塞避免更新后的 ssthresh = 12进入拥塞避免慢开始和拥塞避免算法的实现举例-7 假定拥塞窗口的数值增长到 24 时,网络出现超时(表明网络拥塞了)。 246810121416182022004812162024传输次数拥塞窗口进入拥塞避免发生超时指数规律增长线性规律增长ssthresh = 16慢开始慢开始拥塞避免拥塞避免更新后的 ssthresh = 12进入拥塞避免慢开始和拥塞避免算法的实现举例-8 更新后的 ssthresh 值变为 12(即发送窗口数值 24 的一半),拥塞窗口再重新设置为 1,并执行慢开始算法。 246810121416182022004812162024传

43、输次数拥塞窗口进入拥塞避免发生超时指数规律增长线性规律增长ssthresh = 16慢开始慢开始拥塞避免拥塞避免更新后的 ssthresh = 12进入拥塞避免慢开始和拥塞避免算法的实现举例-9 当 CongWin = 12 时改为执行拥塞避免算法,拥塞窗口按线性规律增长,每经过一个往返时延就增加一个 MSS 的大小。 246810121416182022004812162024传输次数拥塞窗口进入拥塞避免发生超时指数规律增长线性规律增长ssthresh = 16慢开始慢开始拥塞避免拥塞避免更新后的 ssthresh = 12进入拥塞避免80KB超时64KB临界值40KB临界值学习内容1、引言2、TCP的特点3、TCP连接4、提供可靠性5、传输效率与流量

温馨提示

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

评论

0/150

提交评论