TCP/IP学习笔记11-如何理解tcp层面的keepalive

背景

TCP/IP协议是当前网络时代的基础,所有的网络产品,或者是开发语言、开发框架都是基于tcp/ip协议的,所以说,学好tcp/ip对个人以后从事互联网行业会有巨大的帮助。

但是这是一个基础理论课程,就像操作系统这门课一样,学完之后可能不会对你产生太大的影响,不会让你立马拥有能够投入工作中的技能。但正是因为这是一个基础理论课,所有的互联网技术都是基于它的。所以如果你了解tcp/ip协议,将会对你未来发展或者在工作中排查问题产生积极的作用。

tcp层面的KeepAlive

tcp层面的keepalivehttp层面的keepalive不太一样。

试想这样一个场景,连接的一方因为网络故障或者宕机,导致连接失败。由于tcp并不是一个轮训的协议,在下一个数据包到达之前,对方对连接失效的情况一无所知。

这个时候就出现了keepalive,它的作用就是探测对端的连接有么有失效

对应的内核参数如下:

//每隔 7200s 探测一次
net.ipv4.tcp_keepalive_time=7200

//一次最多重传9个包
net.ipv4.tcp_keepalive_probes=9

//每个包重传间隔75s
net.ipv4.tcp_keepalive_intvl=75

不过现状是大部分的应用并没有开发tcpkeepalive,为什么呢?
站在应用的角度来看:

  • 7200s也就是2h检测一次,时间太长
  • 时间再短一些, 也难以体现其设计的初衷:检测长时间的无效连接

所以个人感觉这个功能有点鸡肋,哈哈哈!!

总结

这是tcp/ip系列的第十一篇,主要探讨了下tcp层面的keepalive功能。关于http的相关知识,后面也会专门斜斜文章来讲解。

这是关于tcp/ip的最后一篇,把之前的学习笔记整理完了。但是我知道,这几篇文章肯定没有把tcp/ip的所有功能讲完。后面接着再写。先告一段落。

猜你喜欢

转载自blog.csdn.net/Free_time_/article/details/107447572