Notes On TCP/IPv1 Ch.23
-
TCP连接如果两方都不发送任何数据, 内部并不需要发送任何额外的数据以维持这个链接, 这个连接可以保留无限长的时间(但是链路中某些防火墙的设置可能会过滤很久没有通信的连接的数据). (Page.331)
-
TCP内部有一个keepalive(保活)计时器, 打开后会每隔一段时间发送一个保活探询, 以检测对方是否宕机. 但是这个keepalive计时器并不是官方TCP声明的一部分. (Page.331)
-
keepalive探询的发送周期默认为2hour, 如果发送出去的探询没有被正确回复(i.e 没有回复, ICMP unreachable), 那么等待75sec后继续尝试发送探询, 10次失败后认定对方已经宕机. (Page.332)
-
keepalive的发送周期可以设置, 但是这个设定是系统级别的, 一旦设定, 整个系统中的应用程序都会受到影响. (Page.333)
-
keepalive探询报文其实就是一个空的TCP报文, 但是这个报文的序号是对方发来的最后一个确认号减1. (Page.334)
-
keepalive的优点: 实现操作简单, 节省带宽; 缺点: 不能确定网路中的实际问题, 可能错误判断, 设定为系统级别. (Page.337)