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

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

为什么需要流量控制?

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

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

如何进行流量控制?

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

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

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

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

关于一些术语的说明

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

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

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

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

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

    你可能感兴趣的文章
    QT数据库(三):QSqlQuery使用
    查看>>
    QT教程5:消息框
    查看>>
    SpringBoot中集成阿里开源缓存访问框架JetCache实现声明式实例和方法缓存
    查看>>
    pom.xml中提示web.xml is missing and <failonmissingw>...
    查看>>
    Pomelo开发中Web客户端开发API简介
    查看>>
    QT教程2:QT5的体系构架
    查看>>
    PON架构(全光网络)
    查看>>
    PoolingHttpClientConnectionManager原理剖析
    查看>>
    QT教程1:ubuntu18.04安装QT5
    查看>>
    POP-一个点击带有放大还原的动画效果
    查看>>
    POP3 协议在计算机网络中的优缺点
    查看>>
    qt批量操作同类型控件
    查看>>
    Portaudio笔记-WASAPI
    查看>>
    position:fixed失效情况
    查看>>
    Qt开发笔记:QGLWidget、QOpenGLWidget详解及区别
    查看>>
    Position属性四个值:static、fixed、absolute和relative的区别和用法
    查看>>
    POSIX thread编程中关于临界区内条件变量的分析
    查看>>
    POSIX与程序可移植性
    查看>>
    posix多线程有感--自旋锁
    查看>>
    SpringBoot中集成海康威视SDK实现布防报警数据上传/交通违章图片上传并在linux上部署(附示例代码资源)
    查看>>