背景
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
的所有功能讲完。后面接着再写。先告一段落。