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

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

为什么需要流量控制?

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

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

如何进行流量控制?

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

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

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

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

关于一些术语的说明

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

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

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

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

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

    你可能感兴趣的文章
    pandas 读取excel数据,以字典形式输出
    查看>>
    Pandas 读取具有浮点值的 csv 文件会导致奇怪的舍入和小数位数
    查看>>
    pandas 适用,但仅适用于满足条件的行
    查看>>
    pandas 重新采样到每月的特定工作日
    查看>>
    pandas :按移位分组和累加和(GroupBy Shift And Cumulative Sum)
    查看>>
    pandas :检测一个DF和另一个DF之间缺失的列
    查看>>
    Pandas-从具有嵌套列表列表的现有列创建动态列时出错
    查看>>
    Pandas-通过对列和索引的值求和来合并两个数据框
    查看>>
    pandas.DataFrame.copy(deep=True) 实际上并不创建深拷贝
    查看>>
    pandas.read_csv()的详解-ChatGPT4o作答
    查看>>
    PANDAS.READ_EXCEL()输出‘;溢出错误:日期值超出范围‘;而不存在日期列
    查看>>
    pandas100个骚操作:再见 for 循环!速度提升315倍!
    查看>>
    Pandas:对给定列求和 DataFrame 行
    查看>>
    Pandas、Matplotlib、Pyecharts数据分析实践
    查看>>
    Pandas中文官档~基础用法2
    查看>>
    Pandas中文官档~基础用法6
    查看>>
    Pandas中的GROUP BY AND SUM不丢失列
    查看>>
    pandas交换两列
    查看>>
    pandas介绍-ChatGPT4o作答
    查看>>
    pandas去除Nan值
    查看>>