首页 > 编程知识 正文

如何实现流量控制,tcp流量控制的工作过程

时间:2023-05-03 10:47:57 阅读:116223 作者:2560

1 .流量控制概念

接收端处理数据的速度是有限的,如果发送端速度太快,缓冲区就会填满。 此时如果继续发送数据,会引起丢包等一系列连锁反应。

因此,TCP支持基于接收方的能力来确定发送方的发送速度。 这种机制称为流量控制。

2 .流量控制

其具体操作是,接收方主机向发送方主机通知自己能够接收的数据的大小,发送方发送不超过其限度的数据。 此大小的限制称为窗口大小。 窗口大小的值由接收主机确定。

3 .窗口大小

TCP消息报头中具有一个16比特的窗口字段,其指示接收方的缓冲器大小,接收主机在该字段中添加其能够接收的缓冲器大小并通知发送方。 该字段的值越大,网络吞吐量越高。 但是,如果接收侧的该缓冲器面临数据溢出,则窗口大小的值也被设定为较小的值并通知给发送侧,控制数据发送量。 也就是说,发送侧主机根据接收侧主机的指示,控制发送数据的量。

TCP的流控制由从连接的每个端声明的窗口大小提供。 窗口的大小是字节数,从“确认序列号”字段中的值开始。 此值是接收方希望接收的字节数。 由于窗口大小为16位字段,因此窗口大小最大为65535字节。

4 .窗口放大因子m

TCP基于通知窗口大小的机制,执行发送方可以连续发送多个分组直到停止并等待确认。 因为发送端不需要在每次发送分组时停止等待确认,所以该协议可以加快数据的传输速度。 TCP传输速率与窗口大小呈正相关,在某些情况下,可以通过增加窗口大小来提高传输速率。

但是,TCP窗口的大小只有16位,最大表示65535字节,而且当前千兆位接口已经标配,在数据中心开始向服务器部署10G接口的现实中,65535字节的窗口

常见的TCP选项有7种,其中kind=3为窗放大因子选项。 在TCP连接初始化时,通信双方使用该选项来协商接收机所通过的窗口放大因子。 如果TCP报头中的通知窗口大小为n,窗口放大因子(位移)为m,则TCP消息段的实际接收通知窗口大小为n* ) ) m )。 的值范围为0到14。 这样,通告窗口最多约为1GB,可以满足大多数APP应用的需要。

5 .抓住包显示窗口信息

下图显示了WireShark捕获的tcp数据包的tcp标头结构

tcp数据包的tcp头结构

从该图可以看出,窗口尺寸为16448,但计算后的窗口尺寸为65792。 由于放大系数为4,因此4,65792=4*16448。

6 .流量控制演示

流量控制演示

主机a向主机b发送1000位的数据。 此时,主机b为主机a,我的窗口大小为3000。 多发过来也可以。

当主机b接收到从3001天开始的数据段时,缓冲区将变满。

必须通知主机a暂停数据发送,然后窗口可以在收到更新通知后继续。

如果此通知在中途丢失,则可能无法继续通信。

所以,发送方有时会发送窗口探测的数据段。

此数据端只有一个字节来获取最新的窗口大小。

主机b处理后,告诉主机a,我还有2000个空间。 可以继续发送。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。