TCP 流分析82 条

TCP Keep-Alive 机制

空闲连接上定期发送无数据的保活探测(应用启用 SO_KEEPALIVE 后生效),用于发现对端失联;抓包表现为长时间空闲后周期出现的小 ACK/探测包。

用途理解与识别保活流量
参数net.ipv4.tcp_keepalive_time/intvl/probes

常用命令

常用命令
sysctl net.ipv4.tcp_keepalive_time net.ipv4.tcp_keepalive_intvl net.ipv4.tcp_keepalive_probes
ss -tanp | grep -i keepalive
Keep-Alive 默认关闭(应用未启用则不发送);中间设备往往先于 Keep-Alive 老化会话,检测能力有限。

易错点

  • Keep-Alive 间隔通常远大于 NAT 会话老化时间,用来防"被 NAT 断链"常常来不及,应用心跳更可靠
  • 看到周期小包先确认是 Keep-Alive 还是应用层心跳,两者的调优位置不同

数据来源与参考

  • RFC 1122(Keep-Alive)
  • Linux ip-sysctl 文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌