? 发送端要发送 900 字节长的数据,划分为 9 个 100 字节长的报文段,而发送窗口确定
为 500 字节。
发送窗口收到确认即可前移1100101200201300301400401500501600601700701800801900可发送指针1100101200201300301不可发送发送窗口前移400401500501600601700701800801900已发送并被确认已发送但未被确认指针发送窗口前移可发送不可发送
1100101200201300301400401500501600601700701800801900已发送并被确认已发送但未被确认指针可发送发送窗口缩小500501600601700701不可发送1100101200201300301400401800801900已发送并被确认指针可发送不可发送
? 发送端只要收到了对方的确认,发送窗口就可前移。
? 发送 TCP 要维护一个指针。每发送一个报文段,指针就向前移动一个报文段的距离。 ? 发送端已发送了 400 字节的数据,但只收到对前 200 字节数据的确认,同时窗口大小不
变。
? 现在发送端还可发送 300 字节。
? 发送端收到了对方对前 400 字节数据的确认,但对方通知发送端必须把窗口减小到 400
字节。
? 现在发送端最多还可发送 400 字节的数据。
2. 慢启动和拥塞避免
? 发送端的主机在确定发送报文段的速率时,既要根据接收端的接收能力,又要从全局考虑
不要使网络发生拥塞。
? 因此,每一个 TCP 连接需要有以下两个状态变量:
? 接收端窗口 rwnd (receiver window) 又称为通知窗口(advertised window)。
6
? 拥塞窗口 cwnd (congestion window)。
慢启动算法的原理
? 三个参数: 接收方窗口, 拥塞窗口, 阈值(threshold)—初始时刻阈值=16报文段,
慢开始和拥塞避免算法的实现举例
拥塞窗口 cwnd 24 线性规律增长 20 进入拥塞避免 ssthresh = 16 16 12 8 4 0 0 2 4 指数规律增长 6 发生超时 进入拥塞避免 更新后的 ssthresh = 12
8 10 12 14 16 18 20 22 慢开始 拥塞避免 传输次数
慢开始 拥塞避免
当 TCP 连接进行初始化时,将拥塞窗口置为 1。图中的窗口单位不使用字节而使用报文段。 慢开始(阈值)门限的初始值设置为 16 个报文段, 即 ssthresh = 16。
? “拥塞避免”并非指完全能够避免了拥塞。利用以上的措施要完全避免网络拥塞还是不可能
的。
? “拥塞避免”是说在拥塞避免阶段把拥塞窗口控制为按线性规律增长,使网络比较不容易出
现拥塞。
7.3.3 TCP 的重传机制
? 重传机制是 TCP 中最重要和最复杂的问题之一。
? TCP 每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的重传时间
到但还没有收到确认,就要重传这一报文段。 ? 由于 TCP 的下层是一个互连网环境,IP 数据报所选择的路由变化很大。因而传输层的往
返时延的方差也很大。
7