聊聊 IP packet 的 TTL 与 tcp segment 的 MSL
1 前言 - 网络知识的重要性
近几年在排查解决应用系统在客户现场遇到的复杂问题时,越来越觉得除了扎实的LINUX操作系统知识,对TCP/IP网络知识的深入理解也是至关重要的。
有鉴于此,后续笔者会陆续分享一些网络基础知识和故障排查案例,有兴趣的可以深入交流下。
本文介绍下 IP packet 的 TTL 与TCP segment 的 MSL,两者都跟数据包在网络上的生存时间有关。
2 IP packet 的 TTL
IP 数据报头部中有个 TTL 字段,TTL 是 time to live 的缩写,即生存时间,不过其单位不是秒或分钟等具体时间,而是代表一个 IP数据报可以经过的最大路由数,IP数据报每经过一个路由器,它的值就减1,当此值为0时该数据报就会被丢弃,同时发送ICMP报文通知源主机。
TTL的初始值是由发送该数据报的源主机设置的,不同操作系统 TTL 的初始值可能不同,比如 Windows 的TTL的初始值是128,而Linux的TTL初始值大多是64。
有没有办法查看 TTL 呢?可以通过tcpdump或wireshark等抓包工具查看某个具体数据报的TTL:
事实上有经验的同学,可以根据数据包的TTL,推测这批数据包的捕获点是客户端服务端还是中间端。(后续有机会再总结下)。