`
gaojingsong
  • 浏览: 1153285 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【TCP流量控制】

阅读更多

所谓的流量控制就是让发送方的发送速率不要太快,让接收方来得及接受。利用滑动窗口机制可以很方便的在TCP连接上实现对发送方的流量控制。TCP的窗口单位是字节,不是报文段,发送方的发送窗口不能超过接收方给出的接收窗口的数值。

 

TCP流量控制的目的是限制发送端的发送速率,使得接收方可以及时接收。

TCP主要是通过滑动窗体来实现流量控制的。实际上,发送窗体的大小不仅受接收窗体rwnd的大小的限制,还受拥塞窗体cwnd窗体的限制,为了实现点到点的流量控制,本文如果拥塞窗体足够大(即网络链路比較流畅),仅考虑发送窗体swnd受接收窗体的限制。

 

窗体由左臂和右臂组成。左臂右移称为关闭,右臂左移称为收缩,右臂右移称为打开。

发送窗体和接收窗体的移动操作

接收窗体:当接收方收到发送方的很多其它的字节时(不包含反复的报文段),接收窗体关闭。当接收缓存中的字节被接收进程pull时,接收窗体打开,通常接收窗体不会发送收缩操作。

发送窗体:发送窗体的关闭、收缩和打开受接收方的控制。当一个有效的确认时,发送窗体关闭;当接收方通告发送方同意的窗体大小能够更大时,发送窗体会打开。当接收方通告发送方同意的窗体大小更小时。发送窗体就收缩,可是TCP强烈不建议发送窗体收缩。

 

 

TCP规定,即使设置为零窗口,也必须接收以下几种报文段:零窗口探测报文段、确认报文段和携带紧急数据的报文段。

1.1 传输效率问题 

可以用不同的机制控制TCP报文段的发送时机: 

[1]. TCP维持一个变量MSS,等于最大报文段长度。只要缓冲区存放的数据达到MSS字节时,就组装成了一个TCP报文段发送出去。 

[2]. 由发送方的应用进程指明要发送的报文段,即:TCP支持推送操作。 

[3]. 发送方的一个计时器期限到了,这时就把当前已有的缓存数据装入报文段(但长度不能超过MSS大小)发送出去。

 

1.2 Nagle算法 

发送方把第一个数据字节发送出去,把后面到达的数据字节缓存起来。当发送方接收对第一个数据字符的确认后,再把发送缓存中的所有数据组装成一个报文段再发送出去,同时继续对随后到达的数据进行缓存。只有在收到对前一个报文段的确认后,才继续发送下一个报文段。规定一个TCP连接最多只能有一个未被确认的未完成的小分组,在该分组的确认到达之前不能发送其他的小分组。当数据到达较快而网络速率较慢时,用这样的方法可明显地减少所用的网络带宽。 

Nagle算法还规定:当到达的数据已达到发送窗口大小的一半或已经达到报文段的最大长度时,就可立即发送一个报文段。

 

1.3 糊涂窗口综合症 

TCP接收方的缓存已满,而交互式的应用进程一次只从接收缓存中读取1字节(这样就使接收缓存空间仅腾出1字节),然后向发送方发送确认,并把窗口设置为1个字节(但发送的数据报为40字节的的话)。然后,发送方又发来1个字节的数据(发送方的IP数据报是41字节),接收方发回确认,仍然将窗口设置为1个字节。这样,网络的效率很低。要解决这个问题,可让接收方等待一段时间,使得或者接收缓存已有足够空间容纳一个最长的报文段或者等到接收方缓存已有一半的空闲空间。只要出现这两种情况,接收方就发回确认报文,并向发送方通知当前的窗口大小。此外,发送方也不要发送太小的报文段,而是把数据报积累成足够大的报文段,或达到接收方缓存的空间的一半大小。

 

 

 

拥塞控制 - Congestion Control

网络拥塞现象是指到达通信子网中某一部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象,严重时导致网络通信业务陷入停顿出现死锁现象。拥塞控制是通过拥塞窗口处理网络拥塞现象的一种机制。

发送报文段速率确定: 

[1]. 全局考虑防止拥塞 <- - 拥塞窗口 (Congestion Window) - -> 发送端流量控制,发送端根据自己估计的网络拥塞程度而设置的窗口值; 

[2]. 接收端的接收能力 <- - 接收窗口 (Reciver Window) - -> 接收端流量控制,接收端根据目前的接收缓存大小所许诺的最新窗口值;

 

发送方窗口的上限值 = Min [ rwind, cwind ] 

当rwind < cwind 时,接收方的接收能力限制发送方窗口的最大值。 

当cwind < rwind 时,网络的拥塞限制发送方窗口的最大值。

因特网建议标准RFC2581定义了拥塞控制的四种算法:慢开始(Slow-start),拥塞避免(Congestion Avoidance),快重传(Fast Restrangsmit)和快恢复(Fast Recovery)。我们假定 

1)数据单方向传送,而另外一个方向只传送确认; 

2)接收方总是有足够大的缓存空间,因为发送窗口的大小由网络的拥塞程度来决定。

 

 

 

相同:提高网络性能。 

不同: 

流量控制:在TCP连接上实现对发送流量的控制,考虑点对点之间对通信量的控制,端到端,即:控制发送端的数据发送速率,使接收端可以来得及接收,保证网络高效稳定运行。 

拥塞控制:处理网络拥塞现象,考虑网络能够承受现有的网络负荷,全局性变量,涉及所有的路由器、主机以及与降低网络传输性能有关的因素。防止过多的数据注入到网络,使网络中的路由器或链路不致过载,确保通信子网可以有效为主机传递分组。

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics