背景
TCP/IP协议是当前网络时代的基础,所有的网络产品,或者是开发语言、开发框架都是基于tcp/ip协议的,所以说,学好tcp/ip对个人以后从事互联网行业会有巨大的帮助。
但是这是一个基础理论课程,就像操作系统这门课一样,学完之后可能不会对你产生太大的影响,不会让你立马拥有能够投入工作中的技能。但正是因为这是一个基础理论课,所有的互联网技术都是基于它的。所以如果你了解tcp/ip协议,将会对你未来发展或者在工作中排查问题产生积极的作用。
tcp层面的KeepAlive
tcp层面的keepalive和http层面的keepalive不太一样。
试想这样一个场景,连接的一方因为网络故障或者宕机,导致连接失败。由于tcp并不是一个轮训的协议,在下一个数据包到达之前,对方对连接失效的情况一无所知。
这个时候就出现了keepalive,它的作用就是探测对端的连接有么有失效
对应的内核参数如下:
//每隔 7200s 探测一次
net.ipv4.tcp_keepalive_time=7200
//一次最多重传9个包
net.ipv4.tcp_keepalive_probes=9
//每个包重传间隔75s
net.ipv4.tcp_keepalive_intvl=75
不过现状是大部分的应用并没有开发tcp的keepalive,为什么呢?
站在应用的角度来看:
7200s也就是2h检测一次,时间太长- 时间再短一些, 也难以体现其设计的初衷:检测长时间的无效连接
所以个人感觉这个功能有点鸡肋,哈哈哈!!
总结
这是tcp/ip系列的第十一篇,主要探讨了下tcp层面的keepalive功能。关于http的相关知识,后面也会专门斜斜文章来讲解。
这是关于tcp/ip的最后一篇,把之前的学习笔记整理完了。但是我知道,这几篇文章肯定没有把tcp/ip的所有功能讲完。后面接着再写。先告一段落。
本文深入探讨了TCP/IP协议中的KeepAlive功能,解释了其在探测连接有效性中的作用及其实现机制。同时,分析了其在实际应用中的局限性和争议。
2795

被折叠的 条评论
为什么被折叠?



