🌐 第六章 路由
📄 一句话概括

查表只回答了"交给谁",这一节回答"怎么交"——拆掉旧 MAC 头、在出接口网段用 ARP 问出下一跳的 MAC、封上新 MAC 头扔出去:MAC 头整段重写,IP 包原封不动。6.1 说的"每跳换一整套 MAC 头",本节拆开看它怎么换。

📝 本节和前面几节的关系

6.3 的查表流水线走到"按命中行的出接口扔给下一跳"就停了——扔这个动作里藏着最后一公里。零件全是旧的:3.16 的 ARP 负责问 MAC,5.12 说过"广播出不了路由器",5.14 的表老化思想会在 ARP 缓存上重演。本节是 6.1 那张"接力全景图"的单跳放大镜。

一、路由表给的是 IP,交付靠的是帧(第一张配图)

6.3 的查表结果是一行四件套,其中管"交给谁"的是两个:出接口(从哪个门出)+ 下一跳 IP(交给那一片网的谁)。但出接口连着的链路是以太网/Wi-Fi——这一层只认 MAC,不认 IP。

所以"把包传输给下一个路由器"必须补一步翻译:下一跳 IP → 下一跳 MAC。翻译完,才有资格封帧、出门。整个单跳动作是四步:

  1. 进站拆壳:旧 MAC 头当场作废——它是上一段链路的装卸单,进站即完成使命;
  2. 查表:命中行给出出接口 + 下一跳 IP(6.3);
  3. 问路:在出接口网段广播 ARP:"谁是 211.140.20.1?"(3.16);
  4. 封壳出门:源 MAC 写出接口自己的、目的 MAC 写下一跳的,从出接口扔出。

二、ARP 只在本段喊:广播到路由器为止

第 3 步的 ARP 请求是个广播帧——但它只在出接口所在的那片网里转,出不了路由器。这正好把 5.12 的结论再用一遍:路由器是广播域的边界。所以路由器永远只认识"邻居",不认识"远方"——远方的路全靠路由表一站站接力(6.3),MAC 只管眼前这一段。

问回来的 MAC 不会用完就扔:缓存在 ARP 表里,过一段时间作废,下次发包先用缓存、失效了再重新广播问。这套"先记着、过期重学"的思想,和 5.14 交换机 MAC 地址表的老化一模一样——网络设备的记性都是这么设计的。

三、新旧两帧对比:换的是壳,不是货(第二张配图)

把同一跳的进站帧和出门帧摆在一起看:

两条铁律:

这就是 6.1"信封 vs 装卸单"类比的完整版:收寄件人(IP)从头写到尾不换,装卸单(MAC)每换一趟车重写一张。

四、把接力全景图点亮一跳

回到 6.1 的接力故事,现在每一跳都能展开成完整动作了。以"电脑 → 家用路由器 → 运营商"的第一跳为例:

五、动手 Demo74:arp -a,亲眼看"IP → MAC 翻译表"

  1. Win+R → 输入 cmd → 回车,先敲 arp -a 扫一眼——这是你电脑自己的 ARP 缓存表。
  2. 敲 ping 网关的IP(如 ping 192.168.1.1)——通。
  3. 再敲 arp -a——多了一行:网关 IP 对着一大串十六进制(如 192.168.1.1 ... a4-7a-xx-xx-xx-xx)。这串就是路由器 LAN 口网卡的 MAC——电脑发包给网关时,帧的目的 MAC 写的就是它。
  4. 30 秒实验:ping 192.168.1.200(本网段一个不存在的地址),再 arp -a——那行显示"无法获取"(incomplete):ARP 广播喊了一圈没人应答。这就是"问路石沉大海"的样子,也再次证明广播出不了本网段。
  5. (选做)对照 tracert:tracert 223.5.5.5 的第一跳是网关——你刚在 ARP 表里记下 MAC 的那个 IP。帧的目的 MAC 写它,包的目的 IP 写 223.5.5.5,两层各写各的。
  6. 全部完成。你现在能指着 ARP 表说清:哪一列是"问路的答案"、为什么 ping 不通的地址会显示"无法获取"。

六、常见误区

七、动手自测

点开自测(先自己答,再展开) 1. 路由表的查表结果里,管"交给谁"的是哪两项?交付时还缺什么? 2. 单跳四步是什么? 3. 进站帧的旧 MAC 头下场如何?为什么? 4. ARP 请求是什么帧?能传多远?为什么? 5. 新帧的源 MAC 和目的 MAC 各写谁?目的 MAC 写最终收件人吗? 6. IP 包在跳与跳之间动不动?唯一例外是什么? 7. ARP 结果用完就扔吗?过期机制像哪个旧知识? 8. "信封 vs 装卸单"的完整版说法? 9. 最后一段链路的帧,目的 MAC 写谁? 10. ping 一个本网段不存在的地址,arp -a 里那行长什么样?

答案:① 出接口 + 下一跳 IP;还缺下一跳的 MAC。② 拆旧壳 → 查表 → ARP 问路 → 封新壳出门。③ 当场作废;它是上一段链路的装卸单。④ 广播帧;只在出接口网段,路由器是广播域边界。⑤ 源=出接口自己、目的=下一跳;不是,最终收件人只出现在最后一段。⑥ 不动;NAT(3.14,需转换表)。⑦ 缓存 + 老化后重问;同 5.14 交换机 MAC 表。⑧ 收寄件人(IP)端到端不换,装卸单(MAC)每换车重写。⑨ 真正的收件人。⑩ 显示"无法获取"(incomplete):广播无人应答。

八、下一步学什么

相关笔记