今天看啥  ›  专栏  ›  小冰山口

网络协议(八)-传输层(流量控制)

小冰山口  · 简书  ·  · 2020-11-18 23:37

以下内容来自于小码哥"网络协议从入门到底层原理"

流量控制
  • 如果接收方的缓存区满了, 发送方还在疯狂地发送数据
    -- 接收方只能把收到的数据包丢掉, 大量的丢包会极大地浪费网络资源
    -- 所以要进行流量控制

  • 什么是流量控制?
    -- 让发送方的发送速率不要太快, 让接收方来得及接收处理

  • 原理
    -- 通过确认报文中窗口字段来控制发送方的发送速率
    -- 发送方的发送窗口大小不能超过接收方给出窗口大小
    -- 当发送方收到接收窗口的大小为 0 时, 发送方就会停止发送数据

  • rwnd
    -- wnd -> window
    -- r -> receive
    -- rwnd -> 接收窗口

  • 有一种特殊情况
    -- 一开始, 接收方给发送方发送了 0 窗口的报文段
    -- 后面, 接收方又有了一些存储空间, 给发送方发送的非 0 窗口的报文段丢失了
    -- 发送方的发送窗口一直为零, 双方陷入僵局

  • 解决方案
    -- 当发送方收到 0 窗口通知时, 这时发送方停止发送报文
    -- 并且同时开启一个定时器, 隔一段时间就发个测试报文去询问接收方最新的窗口大小
    -- 如果接收的窗口还是为 0 , 则发送方再次刷新启动定时器




原文地址:访问原文地址
快照地址: 访问文章快照