📄 一句话概括
TTL 每过一跳减 1、减到 0 就回信报名——tracert 发 TTL=1、2、3…… 的包,把沿途每台路由器逐站列成清单。
📝 本节和前面几节的关系
上一节知道包会逐跳接力,本节用 tracert 把这条接力链亲眼列出来——机关在 TTL 字段。
一、TTL 的机关
IP 包头部有个 TTL(生存时间)字段:每经过一台路由器减 1,减到 0 就被丢弃并给发送方回一封信; 这本是防环机制——包在网络里转圈时不至于永远转下去; 聪明用法:故意发 TTL=1 的包,它会在第一跳【阵亡】并回信——回信人就是第一台路由器;TTL=2 问出第二台……逐站点名。
二、实验怎么做
跑 tracert 8.8.8.8(或任意网站域名);
输出逐行是:站序、每站回信时间(通常测三次)、路由器地址;
第 1 站是你家路由器,第 2 站起是运营商骨干——平时看不见的接力链就此现形。
三、看清单时注意什么
中途某站显示 * * * 不一定是断线——有的路由器不回信,跳过继续; 去程和回程可以不走同一条路——逐跳选路本来就不保证对称; 【⚠️ 2026 现状】CDN 时代访问大网站常发现【第一站之外没几跳就到了】——因为内容缓存就在离你很近的节点。
四、动手 Demo:TTL 逐站探测
模拟 tracert 的原理:TTL 从 1 逐个加,每站的路由器【阵亡时报名】。
route = ["192.168.1.1", "10.66.0.1", "202.97.12.5", "8.8.8.8"]
for ttl, addr in enumerate(route, start=1):
print("TTL=%d -> %s 回信报名" % (ttl, addr))
实跑输出:
--------------------------------------------------------------------
实验 5——查看路由器的路由过程
--------------------------------------------------------------------
tracert 的机关在 TTL 字段: 每过一台路由器减 1, 减到 0 就被丢下并回信报名。
于是发 TTL=1, 2, 3…… 的包, 就能一站一站问出整条路:
跑 tracert 8.8.8.8:
TTL=1 的包 -> 192.168.1.1 回信报名 1 ms
TTL=2 的包 -> 10.66.0.1 回信报名 6 ms
TTL=3 的包 -> 202.97.12.5 回信报名 12 ms
TTL=4 的包 -> 8.8.8.8 回信报名 28 ms
站序 角色 谁家的设备
-------------------------------------------------
第 1 站 家里/公司的路由器 自己的网关
第 2 站起 运营商的骨干路由器 电信/联通等
末站 目的地服务器 对端机房
路线不是铁打的: 绕路、换线都会让 tracert 的清单变样——
每次跑都可能有细微不同, 这正是逐跳接力的本色。
tracert 每站测三次回信时间,是为了看延迟的稳定程度——单次会撞上偶然抖动。 TTL 初始值常见 64 或 128:用初始值减 tracert 站数,还能反推对方系统的默认值。
30 秒实验
- 跑 tracert 到你常去的网站,数一数经过几跳、第 1 站是不是你家网关。
- 跑两次 tracert 对比结果,观察路线是否完全一致。
常见误区
- 以为中途 * * * 就是网络断了——可能是那台路由器不回应 TTL 超时消息。
- 以为路径固定不变——逐跳选路下,绕路与换线都会让清单变样。
自测三问(点开对答案)
1. tracert 靠什么字段逐站点名? —— TTL——每跳减 1,减到 0 丢弃并回信报名。 2. TTL 的本职作用是什么? —— 防环——包不会在网络里永远转圈。 3. 输出里的第 1 站通常是谁? —— 自己的默认网关(家里/公司的路由器)。- ☐ 下一节(9.7 实验 6:DNS服务器可以把主机名解析成 IP地址)
相关笔记
- 实验 4:路由器是数据传输过程中的指路人 — 接力链的每一环怎么指路
- 🌐 计算机网络 · 索引 — 12 课第六章路由完结篇在那边
- 💻 计算机是怎样跑起来的 · 索引