第十七章 TCP保活机制

保活机制是一种在不影响数据流内容的情况下探测对方的方式。
和名字正好相反,是服务器用来确认什么时候应该断开连接的一种机制。

保活机制

保活功能在默认情况下是关闭的o TCP连接的任何一端都可以请求打开这一功能。保活功能可以被设置在连接的一端、两端,或者两端都没有。

机制

在一段时间(称为保活时间,keepalivetime)内连接处于非活动状态,开启保活功能的一端将向对方发送一个保活探测报文。如果发送端没有收到响应报文,那么经过一个已经提前配置好的保活时间间隔(keepaliveinterval),将继续发送保活探测报文,直到发送探测报文的次数达到保活探测数(keepaliveprobe),这时对方主机将被确认为不可到达,连接也将被中断。

报文

保活探测报文为一个空报文段(或1个字节),序列号等于对方主机发送的ACK报文的最大序列号减1。
因为这一序列号的数据段已经被成功接收,所以不会对到达的报文段造成影响,但探测报文返回的响应可以确定连接是否仍在工作。接收方收到该报文以后,会认为是之前丢失的报文,所以不会添加进数据流中。但是仍然要发送一个ACK确认。

探测及其响应报文丢失后都不会重传。探测方主动不重传,相应方的ACK报文并不能自己重传,所以需要保活探测数。

保活结果

  1. 对方主机仍在工作
    服务器端正常收到ACK,说明客户端正常工作。
    请求端将保活计时器重置。重新计时。
  2. 对方主机已经崩溃
    对方的TCP将不会响应ACK。
    超过保活探测数以后,认为对方主机已经关闭,连接也将被断开。
  3. 客户主机崩溃并且已重启
    客户端响应是一个重置报文段,请求端将会断开连接。
  4. 对方主机仍在工作
    但是因为其他原因就是没有收到ACK。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、TCP状态linux查看tcp的状态命令:1)、netstat -nat 查看TCP各个状态的数量2)、lso...
    北辰青阅读 13,180评论 0 11
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 10,486评论 0 8
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 14,479评论 6 174
  • 套接字选项SO_RESUEADDR 即使端口处于2MSL状态,使用该选项,仍然能够在该端口建立连接。服务器常会设置...
    Myth52125阅读 5,281评论 0 0
  • 21.1 引言 TCP提供可靠的运输层。它使用的方法之一就是确认从另一端收到的数据。但数据和确认都有可能会丢失。T...
    张芳涛阅读 8,443评论 0 8