第18章 (三)TCP非正常打开

一、连接建立超时:

 

1、第一次超时重传间隔6s,第二次24s。最大值为64s

2、这里的超时重传的初始值6s是计算出来的。在后面的21章将会讲到。

3、超时重传不会无限制的重传下去,重传达到一定的时间就会停止(也可能设定的不是时间而是重传的次数)。 

4、重传也分两种。一种是TCP建立时的重传,一种是TCP连接建立好后连接过程中出现问题而导致的重传。

2点中所提到的重传停止的限制对于这两种重传也不同。大多数伯克利系统建立一个新连接的最长时间限制为75s。连接途中的重传的超时限制一般为9分钟,所以你能看到不少的64s的重传。

重传出现的时间点不一样,超时重传间隔的初始值也就不一样,连接建立时的重传间隔初始值是6s,在连接过程中的重传间隔初始值也是计算出来的,如在21章的第一个例子中间隔的初始值就是1.5s

5、图中我们可以看到第一个间隔是5.8s而不是整6s,看起来不是很精确。而第二个间隔24s就相当精确。这就要说到TCP中的定时器。后面几章都有涉及到。

   这里采用的是500ms的定时器。我的理解是:定时器是一直在计时的,相对独立的,不是说发送了第一个SYN报文段才开始计时。TCP内部会有一个计数器,需要一个6s的定时器的时候,计数器就从12开始倒数,500ms定时器中断一触发,计数器就减去1。计数器后面每次减一,都是整整过了500ms,问题就出现在设定计数器的时候。可能的情况是,设定计数器的时候500ms定时器运行到250ms,才过了250ms定时器中断就触发了,导致不到500ms计数器的值就减少了。

举个例子就是,我们看下电脑右下角的时间是48分,然后心中默数过去多少秒,时间显示50分的那一刻,可能才过去了61s~120s。我们开始数的那一刻就对应着计数器开始的时刻,系统时间分钟数就相当于一个60s的定时器。

 

二、同时打开 simultaneous open

 

这需要双方同时使用对方熟知端口作为本地端口。如:主机A中的一个应用程序使用本地端口7777去连接主机B的端口8888执行主动打开。在A的第一个SYN还没到达主机B的时候,主机B的应用程序使用本地端口8888与主机A的端口7777执行主动打开。

TCP在这种情况下仅仅建立一条连接而不是两条连接。

这个时候我们没有将任意一端称为客户或者服务器,因为每一段既是客户也是服务器。

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值