您当前的位置: 首页 > 

恐龙弟旺仔

暂无认证

  • 0浏览

    0关注

    282博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

TCP零窗口探测实战

恐龙弟旺仔 发布时间:2022-08-18 19:35:59 ,浏览量:0

1.TCP的零窗口

上一文中,我们介绍了TCP滑动窗口,通过滑动窗口实现了一次性传输多个包和流量控制。

上一文的示例中,接收端接收到消息后,并不处理,所以会一直占用接收端的接收窗口,一直到最后,完全占用了接收窗口。

示例完全同TCP滑动窗口模拟实战,这里笔者不再赘述。

1.1 零窗口

当接收端的接收窗口被完全占用后,此时再来新的数据包就无处安放了,同时接收方回复给发送方的ACK中,Win也已经归零。

如下所示:

可以从第二条接收方回复的ACK中看到,Win=0

1.2 接收方零窗口后的窗口更新

接收方零窗口后,可以阻止发送方再发送数据包。

当接收方重新获取可用空间时,会给发送端传输一个窗口更新,发送端接收到该数据包之后,继续发送数据

1.3 发送端的窗口探测

假设一种情况,接收方发送窗口更新包丢失了,那么发送端就一直无法得到窗口更新的消息,一直在等待。

为了避免这种互相等待的死锁情况,发送端会采用一个持续计时器,间歇性的查询接收端的窗口信息。

我们来看下示例:

 

可以看到,发送端在间歇性的发送一个1字节大小数据包到接收端,询问是否有窗口更新

由于我们接收端一直没有释放数据,所以窗口一直是ZeroWindow

而且,这种间歇性的查询方式与TCP超时重传很像,都是指数级避退的方式来发送询问包。

关注
打赏
1655041699
查看更多评论
立即登录/注册

微信扫码登录

0.0368s