国内较好的网站开发商城,哈尔滨高端网站建设,wordpress主题网,做网站 网站违法吗目录 前言理解 前言
面试灵魂一问#xff1a;说说对 IP 数据报中 TTL 的理解#xff1f;我们都知道#xff0c;IP 数据报由首部和数据两部分组成#xff0c;首部又分为两部分#xff1a;固定部分和可变部分#xff0c;共占 20 字节#xff0c;而即将讨论的 TTL 就位于首… 目录 前言理解 前言
面试灵魂一问说说对 IP 数据报中 TTL 的理解我们都知道IP 数据报由首部和数据两部分组成首部又分为两部分固定部分和可变部分共占 20 字节而即将讨论的 TTL 就位于首部的固定部分这个 TTL 指的就是数据报在网络环境中的“生存时间”。
理解
TTL 是“生存时间”的英文缩写Time To Live共占 8 位由发出数据报的源点进行设置目的是为了防止无法交付的数据报无限制存在于互联网中从而耗费网络资源。TTL 最初的设计是以“秒”为单位数据报每进过一个路由器就把 TTL 减去数据报在路由器所消耗的时间。当 TTL 值减为 0 时就丢弃这个数据报。
而现在的计算机网络中 TTL 的单位已经不再是“秒”而是“跳数”其含义就是数据报在互联网中可以经过的路由器数量由于 TTL 占 8 位因此数据报可在互联网中可经过的路由器数量的最大值为 255。
不同操作系统中默认的 TTL 不一样常见默认值如下
操作系统 / 设备默认 TTL 值Windows128Linux / Unix64Cisco 路由器255Solaris255FreeBSD / macOS64Android64
TTL 默认值是否可修改答案是“可以”以 Linux 系统为例。
查看当前值
cat /proc/sys/net/ipv4/ip_default_ttl临时修改
echo 128 /proc/sys/net/ipv4/ip_default_ttl永久修改
echo net.ipv4.ip_default_ttl 128 /etc/sysctl.conf
sysctl -p那如何直观理解 TTL 跳数我们继续举个例子比如我 ping www.baidu.com 上图显示 TTL52 表示 ICMP 数据报经过了 64 - 52 12 个路由器。
验证是不是 12 个路由器
[rootism ~]# traceroute -T www.baidu.com
traceroute to www.baidu.com (183.2.172.17), 30 hops max, 60 byte packets1 _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 等工具里看到 ttl5264 - 12如上图所示实际中跳数大于 30 就很少见了一般公网路径 10~20 跳是常见范围。