zoukankan      html  css  js  c++  java
  • TCP流量控制

    一般说来,我们总是希望数据传输得更快一些。但如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失。 流量控制(flow control)就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。 利用滑动窗口机制可以很方便地在 TCP 连接上实现流量控制。

     

     

    A 向 B 发送数据。在连接建立时, B 告诉 A:“我的接收窗口 rwnd = 400(字节)

    TCP 为每一个连接设有一个持续计时器。

    只要 TCP 连接的一方收到对方的零窗口通知,就启动持续计时器。

    若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅携带 1 字节的数据)

    ,而对方就在确认这个探测报文段时给出了现在的窗口值。

    若窗口仍然是零,则收到这个报文段的一方就重新设置持续计时器。

    若窗口不是零,则死锁的僵局就可以打破了

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

    第一种机制是 TCP 维持一个变量,它等于最大报文段长度 MSS。只要缓存中存放的数据达到 MSS 字节时,就组装成一个 TCP 报文段发送出去。

    第二种机制是由发送方的应用进程指明要求发送报文段,即 TCP 支持的推送(push)操作。

    第三种机制是发送方的一个计时器期限到了,这时就把当前已有的缓存数据装入报文段(但长度不能超过 MSS)发送出去。

    如今广泛使用nagle算法:

    应用程序吧发送的数据保存在发送缓冲中,发送一个字节,收到确认回复后,再把发送缓冲中的所有数据发送出去,在等待确认在发送,同时对收到的也不断的缓存,当数据到达快网络很慢的时候用这种方法比较方便,还规定:当达到的数据已经达到发送窗口大小的一半或者最大长度的时候,就立刻发送一个报文段,可以提高吞吐量

  • 相关阅读:
    BUUCTF-[GYCTF2020]Blacklist 1 思路
    [强网杯 2019]随便注 WriteUp(three way)思路
    [GXYCTF2019]Ping Ping Ping 1思路
    [ACTF2020 新生赛]Include 思路
    [极客大挑战 2019]Secret File 思路
    [SUCTF 2019]EasySQL 思路
    java环境变量配置 详细
    [极客大挑战 2019]Upload 思路
    [极客大挑战 2019]Http 思路
    [ACTF2020 新生赛]Exec 思路
  • 原文地址:https://www.cnblogs.com/13224ACMer/p/6414620.html
Copyright © 2011-2022 走看看