计网考点:传输层—TCP拥塞控制的过程和TCP的流量控制

  • TCP拥塞控制的过程。(四个状态都要解释清楚)

    • 在某段时间里,对网络中某一资源的需求超过可用范围,也就是供不应求,网络性能就会下降。这种状况,就是拥塞

    • 研究的前提

      1. 数据是单方向传送的,另一个方向只传送确认
      2. 接收方总是有足够大的缓存空间,因而发送方发送窗口的大小由网络的拥塞程度来决定
      3. 以最大报文段MSS的个数为讨论问题的单位,而不是以字节为单位
    • 若出现拥塞而不控制,整个网络的吞吐量将随输入负荷的增大而下降

  • 发送方要维护一个拥塞窗口cwnd的状态变量,其值取决于网络的拥塞程度,并且动态变化

    • 拥塞窗口cwnd的维护原则:只要网络没有出现拥塞,拥塞窗口就在增大一些;只要出现拥塞,拥塞窗口就减小一些
    • 判断出现网络拥塞的依据:没有按时收到应当到达的确认报文(即发生超时重传)
  • 发送方将拥塞窗口作为发送窗口swnd,即swnd=cwnd

  • 维护一个慢开始门限ssthresh状态变量:

    • 当cwnd<ssthresh时,使用慢开始算法
    • 当cwnd>ssthresh时,停止使用慢开始算法而改用拥塞避免算法
    • 当cwnd=ssthresh时,既可以使用慢开始算法,也可以使用拥塞避免算法
  • 四种拥塞控制算法:慢开始(slow-start)、拥塞避免(congestion avoidance)、快重传(fast retransmit)、快恢复(fast recovery)

    • 若重传计时器超时,则判断网络可能出现拥塞:

      1. 将ssthresh值更新为发生拥塞时cwnd的一半
      2. 将cwnd值减小为1,并重新开始慢开始算法
    • 慢开始

      • 慢开始算法下,拥塞窗口数量随着传播轮次指数增长,不断翻倍
      • 慢开始是指一开始的报文段少,而不是拥塞窗口增长速度满
    • 拥塞避免

      • 拥塞避免算法下,拥塞窗口数量随着传播轮次,不断+1,线性增长
      • 拥塞避免算法无法完全避免拥塞,只是让拥塞窗口线性增长,网络不容易出现拥塞

      ---------------慢开始和拥塞避免算法是最开始出现的---------------

      有时个别报文段丢失会被误认为发送拥塞,错误减小拥塞算法,降低效率。为了解决这个问题,增加了后两个算法

    • 快重传

      • 快重传算法可以让发送方尽快知道发生了个别报文段的丢失

      • 快重传就是让发送方尽快开始重传,而不是等待超时重传计时器超时再重传

        • 要求接收方不要等待发送数据时才进行稍待确认,而是要立即确认
        • 即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认
        • 发送方一旦受到了三个连续的重复确认,就将相应的报文段立即重传,而不是等待该报文段的超时重传计时器超时再重传
        • 快重传可以使整个网络的吞吐量提高20%

    • 快恢复

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

    • 流量控制说白了就是让发送方不要传的那么快,太快了来不及接收

    • 利用滑动窗口可以很方便地在TCP连接上实现对发送方的流量控制

      • seq=1 DATA:seq取值1,表示TCP报文段数据载荷的第一个字节的序号是1
      • DATA表示该报文段为TCP数据报文段
      • ACK:TCP报文段首部中的标志位,取值1表示这是TCP确认报文段
      • ack:TCP报文段首部中的确认号字段,取值201表示序号201以前都正确接受,等待接受201后的数据
      • rwnd:TCP报文段首部中的窗口字段,取值300表示,接受窗口改为300
    • 只要TCP连接的一方,收到对方的零窗口通知,就启动一个持续计时器,若超时,就发送一个零窗口探测报文(只携带1字节数据),接收方在收到探测报文段时,给出自己的接收窗口值。若依然是0,就重启计时器。

    • 事实上,TCP规定,即使接收窗口为0,也必须接收零窗口探测报文段、确认报文段、带有紧急数据的报文段

    • 零窗口探测报文段也有重传计时器,超时就重传。

posted @ 2021-03-28 19:04  Xavi_ZHANG  阅读(721)  评论(0)    收藏  举报
Live2D