免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 936 | 回复: 0
打印 上一主题 下一主题

重读TCP协议(5) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-27 15:50 |只看该作者 |倒序浏览

TCP的保活定时器
       TCP连接建立以后,不管出现什么情况,中继路由器崩溃或者重启,网线断开又再连通,但只要两端主机不发送任何数据,并且两端主机没有被重启,那么这条连接依然可以保留,即使过了几个月的时间。
       因此,如果客户机或者服务器两者都希望尽快知道对端是否崩溃又重新启动,必须要实现应用级的定时器来检测非活动状态。
       许多TCP的实现提供了保活定时器来实现TCP级别的定时探测功能,但是需要注意的是,保活定时器本身并不是TCP规范的一部分。
       保活功能是指试图在服务器端检测到半开放的连接,通常的情况下,都是服务器端使用保活定时器选项。但是并没有什么规定客户端不能使用这个选项。如果双方都特别需要了解对方是否已经消失,则双方都可以使用这个选项。
       如果一个给定的连接在两个小时内没有任何动作,则其中一方可以发送一个保活的探察报文段给对方,而且对方肯定是以下四种状态之一 :
1.  对方依然正常运行。此时对端相应此报文段,说明对方正常工作,于是发送探察报文的一方在两个小时后将此定时器复位。如果在发送探察报文前双方有数据发送,则一方在接收到数据两个小时后将自己的保活定时器复位。
2.  如果对方已经崩溃,已经关闭或者正在启动但是还没有启动成功,则发送的探察报文不会有任何回应,发送探察报文的一方在75秒后超时,然后重发,在重发10次之后,还没有收到任何响应,则其认为对端已经关闭并终止连接。
3.  如果对端崩溃并重启成功,则发送方会收到一个响应,但是这个响应肯定是一个复位,是服务器终止这个连接。
4.  如果对端正常运行,但是服务不可达,则通2的情况相同。
在第一种情况下,应用程序通常感觉不到保活定时器的存在,因为一切看来都是正常的,在后三种情况下,应用程序将收到来自TCP的差错报告。第二种情况是连接超时,第三种情况是连接被对方复位,的四种情况类似于连接超时,但是可能要根据ICMP的报文来判断。
通常情况下,这个保活定时器的时间是可以改变的,不过这个时间是一个系统级别的变量,改变后会影响到所有使用这个系统的用户程序。
      


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/26397/showart_368839.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP