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

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

为什么需要流量控制?

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

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

如何进行流量控制?

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

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

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

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

关于一些术语的说明

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

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

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

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

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

    你可能感兴趣的文章
    oracle 逻辑优化,提升高度,综合SQL上下文进行逻辑优化
    查看>>
    oracle 闪回关闭,关闭闪回即disable flashback的操作步骤
    查看>>
    oracle 限制用户并行,insert /*parallel */ 到不同用户,并行起不来的问题
    查看>>
    oracle--用户,权限,角色的管理
    查看>>
    Oracle-定时任务-JOB
    查看>>
    oracle.dataaccess 连接池,asp.net使用Oracle.DataAccess.dll连接Oracle
    查看>>
    oracle00205报错,Oracle控制文件损坏报错场景
    查看>>
    Oracle10g EM乱码之快速解决
    查看>>
    Oracle10g下载地址--多平台下的32位和64位
    查看>>
    Oracle10g安装了11g的ODAC后,PL/SQL连接提示TNS:无法解析指定的连接标识符
    查看>>
    oracle11g dataguard物理备库搭建(关闭主库cp数据文件到备库)
    查看>>
    Oracle11G基本操作
    查看>>
    Oracle11g服务详细介绍及哪些服务是必须开启的?
    查看>>
    Oracle11g静默安装dbca,netca报错处理--直接跟换操作系统
    查看>>
    oracle12安装软件后安装数据库,然后需要自己配置监听
    查看>>
    Oracle——08PL/SQL简介,基本程序结构和语句
    查看>>
    Oracle——distinct的用法
    查看>>
    Oracle、MySQL、SQL Server架构大对比
    查看>>
    oracle下的OVER(PARTITION BY)函数介绍
    查看>>
    Oracle中DATE数据相减问题
    查看>>