`
zhangyafei_kimi
  • 浏览: 261694 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

TCP协议里的时间

阅读更多
一、建立连接

在发送SYN报文段后,如果在75秒没有收到相应相应,连接建立将中止。这个时间也就是阻塞connect系统调用的超时时间。

二、保活

SO_KEEPALIVE选项保持连接检测对方主机是否崩溃,避免(服务器)永远阻塞于TCP连接的输入。设置该选项后,如果2小时内在此套接口的任一方向都没有数据交换,TCP就自动给对方 发一个保持存活探测分节(keepalive probe)。这是一个对方必须响应的TCP分节.它会导致以下三种情况:对方接收一切正常:以期望的ACK响应。2小时后,TCP将发出另一个探测分节。对方已崩溃且已重新启动:以RST响应。套接口的待处理错误被置为ECONNRESET,套接口本身则被关闭。对方无任何响应:源自berkeley 的TCP发送另外8个探测分节,相隔75秒一个,试图得到一个响应。在发出第一个探测分节11分钟 15秒后若仍无响应就放弃。套接口的待处理错误被置为ETIMEOUT,套接口本身则被关闭。如ICMP错误是“host unreachable(主机不可达)”,说明对方主机并没有崩溃,但是不可达,这种情况下待处理错误被置为 EHOSTUNREACH。

注意这里面有三个数字:

1.开始首次KeepAlive探测前的TCP空闭时间,2小时

2.两次KeepAlive探测间的时间间隔,75秒

3.判定断开前的KeepAlive探测次数,10次

也就是说,总共需要2小时+75秒*10次 = 7950秒

三、重传

重传定时器在发送数据时设定,超时值是计算出来的,取决于RTT和报文已被重传次数(并没有包括在以下公式内,但是BSD的实现确实用到了这个数据)。

RTT估计其,R是RTT,M是测量到的RTT,a推荐值为0.9

R = a * R + (1-a) * M

重传超时时间RTO, b推荐值为2

RTO = R * b

例外:快速重传,收到3个重复的ACK会立即重传

四、延时确认,捎带确认

TCP协议栈收到数据后并不立即发送ACK,而是等待200ms(推荐值,但是这个值不能高于500ms),如果在这段时间有用户数据需要发送则一同随着这个ACK发送。

五、FIN_WAIT_2定时器

某个连接准备关闭连接时,调用close函数,发送FIN报文,状态从SYN_RCVD迁移到FIN_WAIT_1,收到这个FIN的ACK后,迁移到FIN_WAIT_2状态。

为了防止对端一直不发送FIN,在等待10分钟后再等待75秒(定时器确实被设置了两次,所以分开说),超时,连接关闭。

六、2MSL定时器

MSL是最大报文段生存时间,RFC1122建议是2分钟,但BSD传统实现采用了30秒。当连接转移到TIME_WAIT状态时,即连接主动关闭时,定时器启动,为两倍的MSL。定时器超时,这时才能重新使用之前连接使用的端口号。这也是为了避免一些意想不到的边界情况,TCPIP详解第一卷的18.6.1给出了一个极端的例子。

七、平静时间

对于来自某个连接的较早替身的迟到报文段, 2 M S L等待可防止将它解释成使用相同插口对的新连接的一部分。但这只有在处于2 M S L等待连接中的主机处于正常工作状态时才有效。

如果使用处于2 M S L等待端口的主机出现故障,它会在M S L秒内重新启动,并立即使用故障前仍处于2 M S L的插口对来建立一个新的连接吗?如果是这样,在故障前从这个连接发出而迟到的报文段会被错误地当作属于重启后新连接的报文段。无论如何选择重启后新连接的初始序号,都会发生这种情况。

为了防止这种情况,RFC 793指出TCP在重启动后的MSL秒内不能建立任何连接。这就称为平静时间(quiet time)。

八、SO_LINGER的时间

这个选项会影响close的行为。如果linger结构中的l_onoff域设为非零,并设置了零超时间隔,则close不被阻塞立即执行,不论是否有排队数据未发送或未被确认。这种关闭方式会发送RST报文段,且丢失了未发送的数据。在远端的读调用将以ECONNRESET出错。

若设置了SO_LINGER并确定了非零的超时间隔,则closes调用阻塞进程,直到所剩数据发送完毕或超时。这种关闭称为“优雅的”关闭。如果套接口置为非阻塞且SO_LINGER设为非零超时,则close调用将以EWOULDBLOCK错误返回。

若在一个流类套接口上设置了SO_DONTLINGER(等效于SO_LINGER中将linger结构的l_onoff域设为零),则close调用立即返回。但是,如果可能,排队的数据将在套接口关闭前发送。
分享到:
评论

相关推荐

    TCPIP详解卷3:TCP事务协议,HTTP,NNTP和UNIX域协议

    第2章 T/TCP协议 第3章 T/TCP使用举例 …… 第二部分 TCP的其他应用 第13章 HTTP;超文本传送协议 第14章 在HTTP服务器上找到的分组 第15章 NNTP:网络新闻传送协议 第三部分 Unix 域协议 第16章 Unix域协议:概述 ...

    TCP——实现时间协议实验三

    1.利用TCP协议实现一个可以从服务器读取时间的网络程序。 2.将该程序的客户端改为一个可以显示服务器时间的图形时钟界面,它每隔一秒从服务器读取服务器当前时间。

    TCP/IP详解 卷3:TCP事务协议、HTTP、NNTP和UNIX域协议

    第5章 T/TCP协议的实现:插口层 5.1 概述 5.2 常量 5.3 sosend函数 5.4 小结 第6章 T/TCP的实现:路由表 6.1 概述 6.2 代码介绍 6.3 radix_node_head结构 6.4 rtentry结构 6.5 rt_metrics结构 6.6 in_inithead函数 ...

    实用的TCP协议修复工具

    大家是不是经常碰到一些怪问题?能够ping通外网并且DNS解析也正常就是不能上网,重启好了一段时间后又不行了,那就赶紧用TCP协议修复工具,试试吧!

    TCPIP协议详解卷3:TCP事务协议,HTTP,NNTP和UNIX域协议

    第一部分TCP事务协议 PDF完美版,目录大纲可跳转 第1章T/TCP 概述 1.1 概述 本章首先介绍客户-服务器事务概念。我们从使用U D P的客户-服务器应用开始,这是最 简单的情形。接着我们编写使用T C P的客户和服务器...

    TCPIP协议详解卷三:TCP事务协议,HTTP,NNTP和UNIX域协议

    主要内容包括:TCP事务协议,即T/TCP,这是对TCP的扩展,使客户-服务器事务更快、更高效和更可靠;TCP/IP应用,主要是HTTP和NNTP;UNIX域协议,这些协议提供了进程之间通信的一种手段。当客户与服务器进程在同一台...

    TCP_IP协议详解卷一

    第17章 TCP:传输控制协议 170 17.1 引言 170 17.2 TCP的服务 170 17.3 TCP的首部 171 17.4 小结 173 第18章 TCP连接的建立与终止 174 18.1 引言 174 18.2 连接的建立与终止 174 18.2.1 tcpdump的输出 174 18.2.2 ...

    tcp协议如何处理链接超时

    因为tcp协议时三次握手的,所以tcp协议的通信链接时间会很长,尤其是当服务器ip和port不正确的时候,tcp链接的过程很费时间,如何处理链接超时问题就显得很重要了,这个文档就是如何处理该问题的代码。希望对需要的...

    TCP-IP详解卷3:TCP事务协议

    第2章 T/TCP协议 23 2.1 概述 23 2.2 T/TCP中的新TCP选项 23 2.3 T/TCP实现所需变量 25 2.4 状态变迁图 27 2.5 T/TCP的扩展状态 28 2.6 小结 30 第3章 T/TCP使用举例 31 3.1 概述 31 3.2 客户重新启动 31 3.3 常规的...

    TCP-IP详解卷1:协议

    第17章 TCP:传输控制协议 170 17.1 引言 170 17.2 TCP的服务 170 17.3 TCP的首部 171 17.4 小结 173 第18章 TCP连接的建立与终止 174 18.1 引言 174 18.2 连接的建立与终止 174 18.2.1 tcpdump的输出 174 18.2.2 ...

    TCP-IP详解卷三:TCP事务协议,HTTP,NNTP和UNIX域协议——高清文字(china-pub经典系列)

    第2章 T/TCP协议 23 2.1 概述 23 2.2 T/TCP中的新TCP选项 23 2.3 T/TCP实现所需变量 25 2.4 状态变迁图 27 2.5 T/TCP的扩展状态 28 2.6 小结 30 第3章 T/TCP使用举例 31 3.1 概述 31 3.2 客户重新启动 31 3.3 常规的...

    TCP-IP详细协议

    第17章 TCP:传输控制协议 170 17.1 引言 170 17.2 TCP的服务 170 17.3 TCP的首部 171 17.4 小结 173 第18章 TCP连接的建立与终止 174 18.1 引言 174 18.2 连接的建立与终止 174 18.2.1 tcpdump的输出 174 18.2.2 ...

    TCP/IP详解卷1:协议

    第17章 TCP:传输控制协议 170 17.1 引言 170 17.2 TCP的服务 170 17.3 TCP的首部 171 17.4 小结 173 第18章 TCP连接的建立与终止 174 18.1 引言 174 18.2 连接的建立与终止 174 18.2.1 tcpdump的输出 174 18.2.2 ...

    Socket TCP协议的服务类(20110304修正)

    /// Socket TCP协议的服务类。引入连接会话超时概念,使用事件机制抛出服务产生的异常和接收到的数据。 /// 主要2个类: /// TcpServer 服务类,要负责监听连接,并为每一个连接创建Session后放置在Session列表中。 ...

    TCP-IP详解.卷三:TCP事务协议,HTTP,NNTP和UNIX域协议.rar

    第2章 T/TCP协议 23 2.1 概述 23 2.2 T/TCP中的新TCP选项 23 2.3 T/TCP实现所需变量 25 2.4 状态变迁图 27 2.5 T/TCP的扩展状态 28 2.6 小结 30 第3章 T/TCP使用举例 31 3.1 概述 31 3.2 客户重新启动 31 3.3 常规的...

    TCP/IP协议(传输控制协议/网际协议)

    TCP-IP协议详解,分为协议,实现,TCP事务协议三卷

    TCP-IP详解卷三:TCP事务协议,HTTP,NNTP和UNIX域协议

    第2章 T/TCP协议 23 2.1 概述 23 2.2 T/TCP中的新TCP选项 23 2.3 T/TCP实现所需变量 25 2.4 状态变迁图 27 2.5 T/TCP的扩展状态 28 2.6 小结 30 第3章 T/TCP使用举例 31 3.1 概述 31 3.2 客户重新启动 31 3.3 常规的...

    TCP-IP详解卷3:TCP事务协议,HTTP,NNTP和UNIX域协议

    第5章 T/TCP协议的实现:插口层 56 5.1 概述 56 5.2 常量 56 5.3 sosend函数 56 5.4 小结 58 第6章 T/TCP的实现:路由表 59 6.1 概述 59 6.2 代码介绍 59 6.3 radix_node_head结构 60 6.4 rtentry结构 61 6.5 rt_...

    wince下使用tcp协议socket上传文件,计时上传时间

    做的一个小工具,测试wince下,上传txt文件所需的时间。使用socket tcp协议。

Global site tag (gtag.js) - Google Analytics