🔌 第三章 从网线到网络设备
📄 一句话概括

TTL 每过一跳减一,减到 0 就被丢弃并回 ICMP 超时——这是防止路由表配错导致包无限打转的保险。

📝 本节和前面几节的关系

3.3.5 解决了【往哪走】;本篇解决【走不出来怎么办】。

一、TTL 机制

出发时给一个初值(常见 64、128);每过一台路由器减 1; 减到 0 → 丢弃 + 回 ICMP 超时给源主机。

二、为什么需要

路由表配置出错会形成环路——包在几台设备间打转; TTL 是这种灾难的硬止阀。 tracert 正是利用 TTL 逐跳加一逼路由器报家门。

三、动手 Demo:TTL 防循环

TTL 递减的过程:

ttl = 64
for hop in range(1, 5):
    ttl -= 1
    print('过 %d 跳 -> TTL=%d' % (hop, ttl))
print('...减到 0 -> 丢弃 + ICMP 超时')

实跑输出:

--------------------------------------------------------------------
TTL 防循环
--------------------------------------------------------------------
  包每过一跳,TTL 减一:

    出发 TTL=64
    过 1 跳 -> 63
    过 2 跳 -> 62
    ...
    减到 0 -> 丢弃,回 ICMP 超时

  教材点出:这是防止【路由表配错导致包打转】的死循环保险。
  tracert 就是靠 TTL 从 1 开始逐次加一,逼路由器报家门。

教材此处强调的正是【环路保护】—— 这也是为什么 TTL 会被用于网络测绘(traceroute)。

30 秒实验

  1. 用 tracert 观察每一跳的 TTL 探测。
  2. Wireshark 抓包看 IP 头 TTL 沿途变化。
  3. 想想为什么 TTL 不设成一个很大的固定值。

常见误区

  1. 以为 TTL 是时间(秒)——是跳数。
  2. 以为 TTL 归零会重发——直接丢,靠上层重传。
自测三问(点开对答案) 1. TTL 是什么单位? —— 跳数。 2. TTL 归零怎么处理? —— 丢弃并回 ICMP 超时。 3. TTL 防的是什么? —— 路由环路导致的无限打转。

相关笔记