计网考点:传输层—TCP拥塞控制的过程和TCP的流量控制
-
TCP拥塞控制的过程。(四个状态都要解释清楚)-
在某段时间里,对网络中某一资源的需求超过可用范围,也就是供不应求,网络性能就会下降。这种状况,就是
拥塞 -
研究的前提
- 数据是单方向传送的,另一个方向只传送确认
- 接收方总是有足够大的缓存空间,因而发送方发送窗口的大小由网络的拥塞程度来决定
- 以最大报文段MSS的个数为讨论问题的单位,而不是以字节为单位
-
若出现拥塞而不控制,整个网络的吞吐量将随输入负荷的增大而下降

-

-
发送方要维护一个
拥塞窗口cwnd的状态变量,其值取决于网络的拥塞程度,并且动态变化- 拥塞窗口
cwnd的维护原则:只要网络没有出现拥塞,拥塞窗口就在增大一些;只要出现拥塞,拥塞窗口就减小一些 - 判断出现
网络拥塞的依据:没有按时收到应当到达的确认报文(即发生超时重传)
- 拥塞窗口
-
发送方将拥塞窗口作为发送窗口swnd,即swnd=cwnd
-
维护一个
慢开始门限ssthresh状态变量:- 当cwnd<ssthresh时,使用慢开始算法
- 当cwnd>ssthresh时,停止使用慢开始算法而改用拥塞避免算法
- 当cwnd=ssthresh时,既可以使用慢开始算法,也可以使用拥塞避免算法
-
四种拥塞控制算法:慢开始(slow-start)、拥塞避免(congestion avoidance)、快重传(fast retransmit)、快恢复(fast recovery)
-

-
若重传计时器超时,则判断网络可能出现拥塞:
- 将ssthresh值更新为发生拥塞时cwnd的一半
- 将cwnd值减小为1,并重新开始慢开始算法
-
慢开始
- 慢开始算法下,拥塞窗口数量随着传播轮次指数增长,不断翻倍
- 慢开始是指一开始的报文段少,而不是拥塞窗口增长速度满
-
拥塞避免
- 拥塞避免算法下,拥塞窗口数量随着传播轮次,不断+1,线性增长
- 拥塞避免算法无法完全避免拥塞,只是让拥塞窗口线性增长,网络不容易出现拥塞
---------------慢开始和拥塞避免算法是最开始出现的---------------
有时个别报文段丢失会被误认为发送拥塞,错误减小拥塞算法,降低效率。为了解决这个问题,增加了后两个算法
-
快重传
-
快重传算法
可以让发送方尽快知道发生了个别报文段的丢失 -
快重传就是让
发送方尽快开始重传,而不是等待超时重传计时器超时再重传- 要求接收方不要等待发送数据时才进行稍待确认,而是要
立即确认。 - 即使收到了失序的报文段也要立即发出对已收到的报文段的
重复确认。 - 发送方一旦受到了三个连续的重复确认,就将相应的报文段
立即重传,而不是等待该报文段的超时重传计时器超时再重传 - 快重传可以使整个网络的吞吐量提高20%

- 要求接收方不要等待发送数据时才进行稍待确认,而是要
-
-
快恢复
- 发送端收到了
三个重复确认,就知道现在只是丢失了个别报文段,启动快恢复算法。 发送方将慢开始门限ssthresh值和拥塞窗口cwnd值调整为当前窗口的一半;开始执行拥塞避免算法- 也有的快恢复实现十八恢复开始时二点拥塞窗口值cwnd增大一些,也就是ssthresh+3
- 既然发送方收到3个重复确认,表面有3个数据报文段已经离开了网络
- 这三个报文段不再消耗网络资源而是停留在接收缓存中
- 所以现在的网络不是堆积了报文段,而是减少了,可以把窗口扩大些
- 发送端收到了
-

-
-
TCP的流量控制-
流量控制说白了就是让发送方不要传的那么快,太快了来不及接收
-
利用
滑动窗口可以很方便地在TCP连接上实现对发送方的流量控制 -

seq=1 DATA:seq取值1,表示TCP报文段数据载荷的第一个字节的序号是1DATA表示该报文段为TCP数据报文段
-

ACK:TCP报文段首部中的标志位,取值1表示这是TCP确认报文段ack:TCP报文段首部中的确认号字段,取值201表示序号201以前都正确接受,等待接受201后的数据rwnd:TCP报文段首部中的窗口字段,取值300表示,接受窗口改为300
-
只要TCP连接的一方,收到对方的
零窗口通知,就启动一个持续计时器,若超时,就发送一个零窗口探测报文(只携带1字节数据),接收方在收到探测报文段时,给出自己的接收窗口值。若依然是0,就重启计时器。 -
事实上,TCP规定,即使接收窗口为0,也必须接收
零窗口探测报文段、确认报文段、带有紧急数据的报文段。 -
零窗口探测报文段也有重传计时器,超时就重传。
-

浙公网安备 33010602011771号