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

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

为什么需要流量控制?

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

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

如何进行流量控制?

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

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

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

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

关于一些术语的说明

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

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

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

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

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

    你可能感兴趣的文章
    python中文件最重要的功能是什么-学 Python 都用来干嘛的?
    查看>>
    python中文版语言_高盛最新调查:Python超过汉语成为未来最重要技能,你准备学哪种编程语言?...
    查看>>
    Python中文问题SyntaxError
    查看>>
    Python中方括号和括号括起来的列表有什么区别?
    查看>>
    python中时间处理_Python中处理时间的几种方法小结
    查看>>
    Python中枚举串口(包括虚拟端口)的跨平台方法是什么?
    查看>>
    python中根号下a怎么写_python中根号怎么表示
    查看>>
    Python中正则表达式的巧妙使用
    查看>>
    Python中浮点数的二进制表示(位不是十六进制)
    查看>>
    Python中特殊函数和表达式 filter,map,reduce,lambda
    查看>>
    python中用socket检测端口_Python 用socket模块实现检测端口和检测web服务
    查看>>
    python中用于列表操作的plus和append有什么区别?
    查看>>
    python中用递归求和
    查看>>
    python中的@staticmethod
    查看>>
    python中的array函数作用_NumPy 数组使用大全
    查看>>
    python中的isinstance判断多个对象类型
    查看>>
    python中的keys、values、items
    查看>>
    Python中的lambda和apply结合使用
    查看>>
    python中的map函数
    查看>>
    Python中的numpy模块解析
    查看>>