如何理解 IP 数据报中的 TTL?


目录


前言

面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首部的固定部分,这个 TTL 指的就是数据报在网络环境中的"生存时间"。

理解

TTL 是"生存时间"的英文缩写(Time To Live),共占 8 位,由发出数据报的源点进行设置,目的是为了防止无法交付的数据报无限制存在于互联网中,从而耗费网络资源。TTL 最初的设计是以"秒"为单位,数据报每进过一个路由器就把 TTL 减去数据报在路由器所消耗的时间。当 TTL 值减为 0 时,就丢弃这个数据报。

而现在的计算机网络中 TTL 的单位已经不再是"秒",而是"跳数",其含义就是数据报在互联网中可以经过的路由器数量,由于 TTL 占 8 位,因此,数据报可在互联网中可经过的路由器数量的最大值为 255。

不同操作系统中,默认的 TTL 不一样,常见默认值如下:

操作系统 / 设备 默认 TTL 值
Windows 128
Linux / Unix 64
Cisco 路由器 255
Solaris 255
FreeBSD / macOS 64
Android 64

TTL 默认值是否可修改?答案是"可以",以 Linux 系统为例。

查看当前值:

bash 复制代码
cat /proc/sys/net/ipv4/ip_default_ttl

临时修改:

bash 复制代码
echo 128 > /proc/sys/net/ipv4/ip_default_ttl

永久修改:

bash 复制代码
echo 'net.ipv4.ip_default_ttl = 128' >> /etc/sysctl.conf
sysctl -p

那如何直观理解 TTL 跳数?我们继续举个例子,比如我 ping www.baidu.com

上图显示 TTL=52 表示 ICMP 数据报经过了 64 - 52 = 12 个路由器。

验证是不是 12 个路由器:

sh 复制代码
[root@ism ~]# traceroute -T www.baidu.com
traceroute to www.baidu.com (183.2.172.17), 30 hops max, 60 byte packets
 1  _gateway (172.17.10.1)  0.482 ms * *
 2  192.168.11.1 (192.168.11.1)  0.418 ms * *
 3  * * *
 4  * * *
 5  * * *
 6  * * *
 7  113.96.4.234 (113.96.4.234)  38.721 ms * *
 8  * * *
 9  14.29.117.178 (14.29.117.178)  30.439 ms  32.970 ms  34.381 ms
10  * * *
11  * * *
12  * * *
13  183.2.172.17 (183.2.172.17)  34.743 ms  35.205 ms *

在 traceroute 输出中,最后成功到达目标主机 183.2.172.17 是在第 13 跳

说明:

172.17.10.1:这是我本地的三层交换机,具备网络层,所以这里 TTL 会 -1

192.168.11.1:这是我本地的路由器,这里 TTL 也会 -1

所以:

  • 数据报在到达目标前经过了 12 个路由器(即跳数为 12);
  • 第 13 个 TTL 的数据包才到达目标主机;
  • TTL 初始值如果是 64,那么最终在目标返回时,你会在 ping 等工具里看到 ttl=52(64 - 12),如上图所示;
  • 实际中,跳数大于 30 就很少见了,一般公网路径 10~20 跳是常见范围。
相关推荐
明天也要努力学习7 小时前
HTTP 协议的基本格式和 fiddler 的用法
网络协议·http·fiddler
LCG米12 小时前
STM32驱动W5500以太网模块实测:TCP吞吐瓶颈定位、TX指针回绕陷阱与断线重连保活落地
stm32·单片机·嵌入式硬件·tcp/ip
Tel1992530800414 小时前
温度湿度信号转WiFi/MQTT/Modbus TCP采集模块 无线传输
网络·网络协议·tcp/ip·工业自动化·工控设备
lazy H16 小时前
【计算机网络】第 13 篇:NAT 和端口映射是什么?为什么本地服务外网访问不了?
java·网络·网络协议·学习·计算机网络·408
Linux运维技术栈16 小时前
WAF部署在防火墙后面,获取不到真实IP怎么办?
服务器·网络·tcp/ip·安全·防火墙·waf
低慢小uav17 小时前
(已解决)Zynq芯片lwip协议栈,使用tcp作为服务器Service,接收大量数据时,长度接收正常,接收对数据校验,校验和异常分析
网络协议·tcp/ip·fpga开发
德迅云安全-上官19 小时前
德迅游戏盾:面向 TCP 业务的分布式云安全防护方案
分布式·tcp/ip·游戏
星恒随风20 小时前
Linux Socket TCP编程(二):逐文件重构多进程、多线程与线程池服务器,深入fork、pthread_create、popen和std::bind
linux·服务器·笔记·学习·tcp/ip
|_⊙21 小时前
应用层协议HTTP与HTTPS
网络·网络协议·http
秦禹辰21 小时前
ClipSketch AI把视频改造成图文漫画:选关键帧、生成手绘分镜、融合IP形象并自动写小红书文案
人工智能·tcp/ip·音视频