计算机网络 -拥塞控制原理与TCP拥塞控制 -运输层

计算机网络 -拥塞控制原理与TCP拥塞控制 -运输层

  • 一、阻塞为什么会发生
  • 二、拥塞控制方法
  • 三、TCP拥塞控制
    • 3.1 TCP拥塞控制算法
      • 3.1.1 慢启动
      • 3.1.2 拥塞避免
      • 3.1.3 快速恢复
      • 3.1.4 总结
      • 3.1.5 对TCP吞吐量的估计
    • 3.2 公平性

一、阻塞为什么会发生

  1. 由于一个路由器会被很多主机当成一个途径地,但是路由器的缓存有有限,所以不同的连接就会争夺这个有限的资源。一般是经过上游路由器少的会更多的得到这个资源。
  2. 连接经过的上游路由器越多,他的传输速率会越少。
  3. 一旦下游的路由器不能分配足够的资源,导致无法丢包,那么前面的路由器都会发生做无用功,而且会导致更多的重传分组发送进来增加路由器的压力。

二、拥塞控制方法

  1. 端到端拥塞控制,网络层没有为运输层阻塞控制提供显示支持,IP层不会向接收方或者发送方提供阻塞信息。而发送方只能通过冗余ACK或者超时的出现来判断网络状况。
  2. 网络负载的拥塞控制,路由器将会提供信息给发送方或者通过接收方发送信息给发送方。其中,路由器可以选择直接反馈信息给发送方(但是感觉人家的路已经够堵了还要多发一个是不是有点麻烦?)还有一种比较常见的就是通过在报文里面的某个字段进行标记来表示自己的阻塞情况。当接收方接收到这条消息的时候就会向发送方通知该网络的阻塞情况。但是这一种通知需要耗费一个RTT时间。

三、TCP拥塞控制

TCP必须使用端到端的拥塞控制而不是使网络辅助(IP)的拥塞控制。

  1. 我们之前说过,TCP判断丢包的方法有2个:①超时②收到冗余ACK
  2. 一旦TCP确认丢包他就会自己对拥塞窗口进行调节,所以他是自计时的。
  3. TCP对吞吐量(发送速率)是通过判断每一个收到的报文以及超时实时增加(减少)拥塞窗口长度。

3.1 TCP拥塞控制算法

拥塞窗口、cwnd、MSS之间的关系
一个拥塞窗口里面拥有若干个小格子,一个格子可以最多可拥有MSS个字节。而cwnd是拥塞窗口的计数器,每确认一个分组就增加MSS个字节。cwnd的初始值一般为1。
TCP拥塞控制算法包括慢启动、拥塞避免、快速恢复。其中慢启动和拥塞避免是强制部分,必须要有。快速恢复则是推荐使用

3.1.1 慢启动

3.1.1.1冷启动会做什么?
在TCP拥塞控制算法中,慢启动就是在刚开始连接的时候只允许一个最大MSS的拥塞窗口使用(也就是只有一个位置)。然后随着连续收到的ACK报文数量增加,每收到一个就按照2的n-1次幂对拥塞窗口的格子进行指数增加。其中n为连续第n个ACK报文。
3.1.1.2何时结束慢启动的指数增加?

  1. 当该TCP遇到由超时造成的丢包的时候,记录当前拥塞窗口的一半并赋值给ssthresh,并将拥塞窗口的计数器cwnd重新置为1并重新进行慢启动。
  2. 当cwnd计数器等于ssthresh的时候就意味着快要接近丢包的极限,所以我们要将慢启动状态转换至拥塞避免(这个模式我们下面的3.1.2会说到)。
  3. 当TCP遇到连续的4个相同的ACK确认号(也就是有3个冗余ACK报文)的时候会将慢启动状态转换至快速恢复(这个模式我们下面的3.1.3会说到)。

3.1.2 拥塞避免

3.1.2.1拥塞避免会做什么?
我们从上面知道,当慢启动的cwnd计数器等于ssthresh的时候就要进入拥塞避免,这时候我们会更加小心的推进拥塞窗口,每连续收到一个ACK报文就将增加一个拥塞窗口的格子。
3.1.2.2何时结束拥塞避免?

  1. 当拥塞避免遇到超时的时候,将会返回到冷启动模式。
  2. 当遇到多个冗余ACK的时候将会切换至快速恢复模式。

3.1.3 快速恢复

3.1.3.1快速恢复会做什么?
对收到的每一个冗余ACK都会增加一个拥塞窗口的一个格子。
3.1.3.2何时结束快速恢复?

  1. 当cwnd计算器等于ssthresh的时候就要进入拥塞避免。
  2. 但发送超时的时候就要进入慢启动状态。

计算机网络 -拥塞控制原理与TCP拥塞控制 -运输层_第1张图片

3.1.4 总结

  1. TCP拥塞控制常常被称为加性增、乘性减拥塞控制方式。
    计算机网络 -拥塞控制原理与TCP拥塞控制 -运输层_第2张图片

3.1.5 对TCP吞吐量的估计

其中w是窗口长度w字节
一 条 连 接 的 平 均 吞 吐 量 = 0.75 × w R T T 一条连接的平均吞吐量 = {0.75×w\above{1pt}RTT} =RTT0.75×w
在高带宽路径且有丢包的情况下,其中L是丢包率:
一 条 连 接 的 平 均 吞 吐 量 = 1.22 × M S S R T T L 一条连接的平均吞吐量 = {1.22×MSS \above{1pt}RTT\sqrt{L}} =RTTL 1.22×MSS

3.2 公平性

对于UDP流氓式的占用以及并行的TCP连接而言,没有所谓的公平性。公平性只能在多个同等条件下的不同源的TCP得到相同的份额才可以认为是公平的。

你可能感兴趣的:(计算机网络)