幼儿猿

新奇的想法比技术更稀缺,但没有技术支持的好想法都是空中楼阁。

TCP拥塞控制

浅谈网络拥塞以及他的控制方法

什么是网络拥塞

网络拥塞的对象是网络资源。包括链路宽带、结点缓存或处理能力等。在特定的时间内,当对网络中某种资源的需求超过了其可用部分时所出现的网络性能变差直至系统崩溃的现象叫做网络拥塞。

网络拥塞的成因以及危害

  • 第一,当分组到达速率超过路由器输出链路的容量时,路由器要缓存已输入但无法立即输出的分组。所以网络拥塞带来的第一种危害是当分组以大于或接近链路容量的速率到达时,分组将承受很大的时延。
  • 第二,当分组到达路由器时,若有限的缓存已满,分组就会被丢弃。所以网络拥塞带来的第二种危害就是发送方会因分组被路由器丢弃而进行不必要的重传,从而引起路由器消耗其链路带宽来重传不必要的分组副本。
  • 第三,如果有一个分组在某路由器上被丢弃,传输路径上的前几跳路由器的工作就都是“劳而无功的”。所以网络拥塞带来的第三种危害就是当一个分组沿一条路径传输而最终被丢弃时,位于该路径上游的每台路由器中用于转发该分组的传输资源也都被浪费掉了。

TCP拥塞控制

TCP基于端到端拥塞控制方法进行网络拥塞控制,为端系统提供了一种根据自己的通信确认报文作为反馈信息来感知网络状态的隐式拥塞控制机制。

  • TCP感知拥塞的方法
    • 在TCP可靠传输机制中,TCP发送的报文段通过接收方不断返回确认报文来证实这些报文已经可靠地到达目的地。所以一旦发现某个确认报文没有及时返回,就判断相应的报文段丢失,即认为网络出现了拥塞。
    • 在TCP确认报文段发生超时前,一般会出现冗余ACK现象,所以发送方通过检测冗余ACK也能预测网络拥塞情况。
  • 冗余ACK
    所谓冗余ACK就是多次收到对某个报文段的确认。
    • 冗余ACK的产生:当TCP接收方收到报文段的序号大于下一个所期望的报文段时,它发现报文段没有按序到达,此时TCP只能对按序接收到的最后一个字节的数据进行重复确认,这就产生了一个冗余ACK。因为发送方经常连续发送报文段,一个丢失的报文段后面可能跟着多个其它报文段,因此一个丢失的报文段可能会引起多个冗余ACK出现。
  • 网络拥塞控制机制
    当出现丢包事件时,迅速减小拥塞窗口CWin的长度使发送方降低其发送速率;在一般情况下则谨慎增加CWin的长度。这样使通过相同路由器的所有TCP连接都能迅速降低其发送速率,从而能够迅速消除或缓解路由器的拥塞。
    • 慢启动:先从较小的拥塞窗口开始,逐步试探网络状态;试探的发送速率要迅速增加(指数增加),直至接近某个阈值。
    • 加性增、乘性减:当网络可能进入拥塞状态时,将以指数方式增长的发送速率降低为以线性增长的发送速率。加性增是在慢启动阶段结束后,进入平缓的线性增长的拥塞避免阶段。乘性减是指发现丢包事件后,TCP要采取措施来迅速减小拥塞窗口。
  • TCP拥塞控制措施与拥塞窗口变化图示
    这里写图片描述
    如图当TCP检测到3个冗余ACK时它有两种处理方法:
    • TCP Rene乘性减:当TCP发送方收到3个冗余ACK时,它先将当前的CWin值减半,然后再按照加性增的方增加CWin值。
    • TCP Tahoe乘性减:当超时情况发生时,TCP发送方先将阈值设为CWin/2,再进入一个慢启动阶段。

参考文献:计算机网络:原理与实践/陈鸣编著.-北京:高等教育出版社,2013.2:89-92 235-248

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Jeaforea/article/details/53489570
文章标签: tcp 拥塞控制
个人分类: TCP协议
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭