第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在这种情况下仅仅建立一条连接而不是两条连接。
这个时候我们没有将任意一端称为客户或者服务器,因为每一段既是客户也是服务器。
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在这种情况下仅仅建立一条连接而不是两条连接。
这个时候我们没有将任意一端称为客户或者服务器,因为每一段既是客户也是服务器。
相关文章推荐
- Linux网络属性配置管理及其相关命令
- Linux精品之NFS介绍与应用(双httpd + php-fpm + nfs + mysql 搭建discuz论坛)
- 第18章(二)TCP状态变迁图与2MSL等待状态
- SDWebImage\ASIHttpRequest是第三方库
- 第18章(一)TCP连接建立和终止的正常情况
- 第17章TCP 基本概念
- 使用事件驱动模型实现高效稳定的网络服务器程序
- TCP/IP TIME_WAIT状态原理
- 网络通讯基础
- HDU 3549【网络流入门--然而我还是XXX】
- HDU 3572Task Schedule(网络流)
- POJ 1459:Power Network 能源网络
- POJ 1459:Power Network 能源网络
- 网络请求时WiFi边上的菊花
- POJ 1273:Drainage Ditches 网络流模板题
- POJ 1273:Drainage Ditches 网络流模板题
- POJ 1149:PIGS 网络流经典题
- POJ 1149:PIGS 网络流经典题
- HTTP - 条件请求
- iOS 异步请求网络数据,传值问题