博客
关于我
流量控制
阅读量:358 次
发布时间:2019-03-04

本文共 926 字,大约阅读时间需要 3 分钟。

为什么需要流量控制?

在网络通信过程中,发送方和接收方的速率往往并不相等。如果发送方的速率远高于接收方的速率,接收方可能无法及时处理数据,导致数据包被缓存。而当缓存区已满时,接收方将不得不丢弃部分数据包,这不仅浪费了网络资源,也会导致数据传输效率下降。

因此,我们需要对发送方的发送速率进行控制,确保发送方与接收方处于动态平衡状态。这种对发送速率的控制机制,我们称之为流量控制。

如何进行流量控制?

接收方每次接收数据时,可以通过发送确认报文的方式告知发送方自身缓存区的剩余空间大小。我们将这个剩余空间的大小称为接收窗口大小,用变量win表示。

发送方接收到接收窗口大小信息后,会根据这个信息调整自己的发送速率,即调整自己的发送窗口大小。当发送方检测到接收方的接收窗口大小为0时,发送方会立即停止发送数据,并启动一个定时器,定期发送测试报文询问接收方是否可以继续发送数据。如果接收方允许,发送方可恢复正常传输;如果仍不允许,发送方则会继续等待。

发送方何时再次继续发送数据?

当发送方检测到接收方的接收窗口大小为0时,它会立即停止发送,并启动定时器,定期发送测试报文。如果接收方允许继续发送,发送方可恢复正常传输;如果仍不允许,发送方则会继续等待。

关于一些术语的说明

  • 接收窗口和发送窗口:由于TCP协议支持全双工传输,通信双方各自拥有一对滑动窗口。接收窗口用于接收数据,而发送窗口用于发送数据。接收方通过发送窗口通告通知发送方接收窗口的大小。

  • 接收窗口大小是否固定?:早期的TCP协议中,接收窗口大小是固定的。然而,随着网络环境的快速发展,固定大小的窗口已成为性能瓶颈。现在的TCP协议中,接收窗口大小是动态调整的。

  • 接收窗口大小越大越好吗?:接收窗口大小过小会显著降低链路利用率并增加丢包率。同样,接收窗口大小过大也会消耗过多内存资源。因此,接收窗口大小需要根据网络环境和发送方的拥塞窗口动态调整。

  • 发送窗口和接收窗口相等吗?:接收方发送窗口通告时,会告知发送方当前的接收窗口大小。发送方会根据此信息调整自己的发送窗口大小,但接收窗口通常不小于发送窗口。接收方在发送确认报文时,已经在处理自身缓存区的数据,因此接收窗口大小一般大于等于发送窗口大小。

  • 转载地址:http://hbfr.baihongyu.com/

    你可能感兴趣的文章
    Netty源码—2.Reactor线程模型一
    查看>>
    Netty源码—3.Reactor线程模型三
    查看>>
    Netty源码—4.客户端接入流程一
    查看>>
    Netty源码—4.客户端接入流程二
    查看>>
    Netty源码—5.Pipeline和Handler一
    查看>>
    Netty源码—5.Pipeline和Handler二
    查看>>
    Netty源码—6.ByteBuf原理一
    查看>>
    Netty源码—6.ByteBuf原理二
    查看>>
    Netty源码—7.ByteBuf原理三
    查看>>
    Netty源码—7.ByteBuf原理四
    查看>>
    Netty源码—8.编解码原理一
    查看>>
    Netty源码—8.编解码原理二
    查看>>
    Netty源码解读
    查看>>
    Netty的Socket编程详解-搭建服务端与客户端并进行数据传输
    查看>>
    Netty相关
    查看>>
    Netty遇到TCP发送缓冲区满了 写半包操作该如何处理
    查看>>
    Netty:ChannelPipeline和ChannelHandler为什么会鬼混在一起?
    查看>>
    Netty:原理架构解析
    查看>>
    Network Dissection:Quantifying Interpretability of Deep Visual Representations(深层视觉表征的量化解释)
    查看>>
    Network Sniffer and Connection Analyzer
    查看>>