首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

syn建链超时

问题:

当syn报文发送出去,对方一直没有响应syn ack会怎样?

发生这种情况一般是网络出现问题,或者对方服务器还没有处于正常状态。

这种情况下,协议栈重传syn报文来试图重新建立链接。

如下图是伯克利syn超时重传。

Tcp协议栈每发送一个Syn报文,就会启动一个syn超时定时器,当定时器超时,协议栈重传syn报文,并重重置这个定时器。但是设置都比上一次设置的大,即时间间隔增大,不同版本设置时间不同。

伯克利版本,发送第一个syn报文,设置定时器超时时间为6秒,如果超时重传第二个syn报文,并重新设置定时器为24秒。伯克利系统超时76秒后放弃建链。

如上图第一次间隔为5.8秒,第二次间隔24秒。

第一次超时为啥不是准确的6秒?

伯克利版本中,tcp软件采用500ms定时器

超时时间设置6秒,需要12个定时滴答,

而设置syn报文超时的时刻,会处于系统定时器500ms内。定时精度11.0~11.9个500ms,所以6秒定时器的时间精准度会在5.5秒~6秒之间。

Win10协议栈的重传:

Windows抓包获取syn报文重传

三个syn报文的时刻如下:

T1=84.402331

T2=87.404228 间隔3.002秒

T3=93.411370 间隔6.007秒

Windows的超时,定时器的两个超时时间分别是3秒和6秒。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190429A026GO00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券