您的位置:首页 > 理论基础 > 计算机网络

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

2015-09-08 21:28 495 查看
一、连接建立超时:



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在这种情况下仅仅建立一条连接而不是两条连接。

这个时候我们没有将任意一端称为客户或者服务器,因为每一段既是客户也是服务器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: