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

最后一跳没有"下一跳"——最后一台路由器查表命中的是直连网段(route print 里写"在链路上"),ARP 问的不再是下一个路由器,而是收件人本人;帧的目的 MAC 终于写真身,收件人核对"MAC 是我、目的 IP 也是我",拆包上交——数据到了最终目的地。

📝 本节和前面几节的关系

6.3 的查表、6.4 的交棒、6.5 的地址全景都备好了,唯独"最后一段"一直没说透——直连行的"在链路上"到底是什么动作?本节补上这最后一块拼图,第六章前半(判断→门牌→查表→交棒→全景→终点)正好闭环。

一、最后一段链路的特殊之处:表里写的是"在链路上"

最后一台路由器查表时,命中的那行和之前所有行都不一样——目的网段就是它自己的直连网段(6.2 装的门牌自动生成的那类直连路由)。表现在两个特征:

于是 6.4 那套交棒动作的第三步换了问法:ARP 广播问的不再是"下一个路由器",而是"谁是 192.168.2.100?"——直接问收件人本人。收件人应答自己的 MAC,路由器封出最后一帧:目的 MAC=收件人,IP 头照旧不动。

二、收件人怎么认领:两道核对都过关才收

收件人主机收到帧后做两道核对:

  1. 拆 MAC 头:目的 MAC 是我的网卡 → 这帧是投给我的,收下(否则默默丢弃——5.9 讲过交换机"过滤"的另一半);
  2. 看 IP 头:目的 IP 是我的地址 → 这包真是发给我的(不是误投、不是转发路过)→ 拆包,把数据交给上层程序。

两道都过,数据才算"到了最终目的地"。MAC 是"送到我门前",IP 是"指名给我"——两层各认各的,缺一不可。

三、从头到尾再走一遍:六章六节拼成整车(第二张配图)

现在把第六章前半的六节串成一次完整旅程:

换个视角看这张拼图:每一段链路其实都是"直接投递"——第一章说"网络是网络的网络",路由的本质就是把无数段直连链路焊成一条端到端的路。

四、动手 Demo76:亲眼看见"真身"进表

  1. Win+R → 输入 cmd → 回车,敲 arp -a 记下当前名单(应该只有网关这些邻居)。
  2. (家里有第二台设备时)查到它的内网 IP(如手机 192.168.1.101),敲 ping 192.168.1.101——通。
  3. 再敲 arp -a——它的 MAC 出现在表里:这就是"最后一跳"的样子——ARP 问的是真身,不是路由器。
  4. 敲 tracert 192.168.1.101——只有一跳:同网段直接交付,根本不劳路由器查表转发(6.1 的第 8 步实验在这收尾)。
  5. 30 秒实验:对比两条 tracert——tracert 192.168.1.101 一行(直接交付、真身投递)vs tracert 223.5.5.5 十几行(逐跳接力)。两条路唯一的区别:目的网段在不在直连表里。
  6. 全部完成。你现在能对着屏幕说清:一个包从"判断"到"被认领"的每一步谁在做、做了什么。

五、常见误区

六、动手自测

点开自测(先自己答,再展开) 1. 最后一台路由器查表命中的是什么行?"网关"列写什么? 2. 最后一跳的 ARP 问的是谁?和中间跳有何不同? 3. 收件人收帧要做哪两道核对?各核对什么? 4. 两道核对分别对应哪一层?各起什么作用? 5. 最后一帧的目的 MAC 写谁?目的 IP 写谁? 6. "每一段链路都是直接投递"怎么理解?路由的本质是什么? 7. ping 通一个外网地址,实际发生了几套流程? 8. tracert 同网段设备和外网地址,输出行数差在哪?原因是什么? 9. 收件人为什么不能扔掉 IP 头? 10. 第六章前半六节,各干了哪件事?一句话串联。

答案:① 直连路由(目的网段=自己的直连网段);写"在链路上",无下一跳。② 收件人本人;中间跳问的是下一个路由器。③ 拆 MAC 头(目的 MAC 是我)→ 看目的 IP 是我;才拆包上交。④ MAC=二层认"投到我家门",IP=三层认"指名给我"。⑤ 收件人本人;仍是收件人(IP 头全程不变)。⑥ 路由把无数段直连链路焊成端到端。⑦ 两套:去程 + 回程(收件人变发送方,全流程反着再来一遍)。⑧ 同网段一行、外网十几行;区别只在目的网段在不在直连表里。⑨ 回程要拿源 IP 当回信地址。⑩ 判断→门牌→查表→交棒→全景→终点:跨网段交付全流程。

七、下一步学什么

相关笔记