最后一跳没有"下一跳"——最后一台路由器查表命中的是直连网段(route print 里写"在链路上"),ARP 问的不再是下一个路由器,而是收件人本人;帧的目的 MAC 终于写真身,收件人核对"MAC 是我、目的 IP 也是我",拆包上交——数据到了最终目的地。
6.3 的查表、6.4 的交棒、6.5 的地址全景都备好了,唯独"最后一段"一直没说透——直连行的"在链路上"到底是什么动作?本节补上这最后一块拼图,第六章前半(判断→门牌→查表→交棒→全景→终点)正好闭环。
一、最后一段链路的特殊之处:表里写的是"在链路上"
最后一台路由器查表时,命中的那行和之前所有行都不一样——目的网段就是它自己的直连网段(6.2 装的门牌自动生成的那类直连路由)。表现在两个特征:
- "网关"一列不再写某个下一跳 IP,而是写着"在链路上";
- 也就是说:没有下一跳了,收件人就在我这个网段里住着。
于是 6.4 那套交棒动作的第三步换了问法:ARP 广播问的不再是"下一个路由器",而是"谁是 192.168.2.100?"——直接问收件人本人。收件人应答自己的 MAC,路由器封出最后一帧:目的 MAC=收件人,IP 头照旧不动。
二、收件人怎么认领:两道核对都过关才收
收件人主机收到帧后做两道核对:
- 拆 MAC 头:目的 MAC 是我的网卡 → 这帧是投给我的,收下(否则默默丢弃——5.9 讲过交换机"过滤"的另一半);
- 看 IP 头:目的 IP 是我的地址 → 这包真是发给我的(不是误投、不是转发路过)→ 拆包,把数据交给上层程序。
两道都过,数据才算"到了最终目的地"。MAC 是"送到我门前",IP 是"指名给我"——两层各认各的,缺一不可。
三、从头到尾再走一遍:六章六节拼成整车(第二张配图)
现在把第六章前半的六节串成一次完整旅程:
- 6.1 判断:目的 IP AND 掩码,判出跨网段 → 交给网关;
- 6.2 门牌:网关就是路由器 LAN 口;WAN 口挂着运营商发的地址;
- 6.3 查表:每台路由器拿目的 IP 查路由表,最长前缀匹配出"出接口 + 下一跳";
- 6.4 交棒:拆旧帧、ARP 问下一跳 MAC、封新帧——中间每台路由器各来一遍;
- 6.5 全景:MAC 逐段换新、IP 端到端不变,路由器只执行下一跳;
- 6.6 终点:最后一台路由器命中直连网段,ARP 问真身,收件人认领。
换个视角看这张拼图:每一段链路其实都是"直接投递"——第一章说"网络是网络的网络",路由的本质就是把无数段直连链路焊成一条端到端的路。
四、动手 Demo76:亲眼看见"真身"进表
Win+R→ 输入cmd→ 回车,敲arp -a记下当前名单(应该只有网关这些邻居)。- (家里有第二台设备时)查到它的内网 IP(如手机 192.168.1.101),敲
ping 192.168.1.101——通。 - 再敲
arp -a——它的 MAC 出现在表里:这就是"最后一跳"的样子——ARP 问的是真身,不是路由器。 - 敲
tracert 192.168.1.101——只有一跳:同网段直接交付,根本不劳路由器查表转发(6.1 的第 8 步实验在这收尾)。 - 30 秒实验:对比两条 tracert——
tracert 192.168.1.101一行(直接交付、真身投递)vstracert 223.5.5.5十几行(逐跳接力)。两条路唯一的区别:目的网段在不在直连表里。 - 全部完成。你现在能对着屏幕说清:一个包从"判断"到"被认领"的每一步谁在做、做了什么。
五、常见误区
- "最后一段也是转发给下一个路由器"——直连行没有下一跳("在链路上"):最后一段是本网段内的直接投递,ARP 问的是收件人本人。
- "收到帧就等于收到数据"——还要过 IP 那道核对(目的 IP 是自己);两道都过才拆包上交,MAC 认门牌、IP 认名分。
- "ping 通就完事了"——你看到的"通"是去程 + 回程一整套流程都跑完了:回程时收件人变发送方,同样的判断、查表、交棒再来一遍(方向反过来)。
- "最后一帧的目的 MAC 写的还是路由器"——恰恰相反,最后一段写的才是收件人本人;中间每一段写的都是下一跳。
- "数据到了最终目的地,IP 地址就完成使命可以扔了"——IP 头直到收件人手里都原样保留着:上层回数据时还要拿它当"回信地址"。
六、动手自测
点开自测(先自己答,再展开)
1. 最后一台路由器查表命中的是什么行?"网关"列写什么? 2. 最后一跳的 ARP 问的是谁?和中间跳有何不同? 3. 收件人收帧要做哪两道核对?各核对什么? 4. 两道核对分别对应哪一层?各起什么作用? 5. 最后一帧的目的 MAC 写谁?目的 IP 写谁? 6. "每一段链路都是直接投递"怎么理解?路由的本质是什么? 7. ping 通一个外网地址,实际发生了几套流程? 8. tracert 同网段设备和外网地址,输出行数差在哪?原因是什么? 9. 收件人为什么不能扔掉 IP 头? 10. 第六章前半六节,各干了哪件事?一句话串联。答案:① 直连路由(目的网段=自己的直连网段);写"在链路上",无下一跳。② 收件人本人;中间跳问的是下一个路由器。③ 拆 MAC 头(目的 MAC 是我)→ 看目的 IP 是我;才拆包上交。④ MAC=二层认"投到我家门",IP=三层认"指名给我"。⑤ 收件人本人;仍是收件人(IP 头全程不变)。⑥ 路由把无数段直连链路焊成端到端。⑦ 两套:去程 + 回程(收件人变发送方,全流程反着再来一遍)。⑧ 同网段一行、外网十几行;区别只在目的网段在不在直连表里。⑨ 回程要拿源 IP 当回信地址。⑩ 判断→门牌→查表→交棒→全景→终点:跨网段交付全流程。
七、下一步学什么
- ☑ 6.7 路由器所掌握的网络信息(路由表) ✅ —— 路由器所掌握的网络信息(路由表):交付流程闭环了,路由表本身从哪来——直连自动生成、静态人手写、动态协议自动学、默认路由保底。
相关笔记
- 路由器所掌握的网络信息(路由表) —— 全程跑得通,靠的就是这张表;本节讲表里每行从哪来
- 确定最终的发送地址(下一个路由器执行的地址) —— "最终发送地址只是这一段的终点",本节走到真正的终点
- 将数据传输给下一个路由器(数据传输给下一个路由器) —— 同一套交棒动作,本节只换了 ARP 的问法
- 确定传输数据的目的地(确定数据传输的目的地) —— 直连行"在链路上"在本节落地
- 将数据传输到远程网络(路由) —— 直接交付 vs 间接交付的判断题,最后一段回归直接交付
- 将IP地址与MAC地址对应(ARP) —— 从"问网关"到"问真身",ARP 贯穿第一跳和最后一跳
- 连接网络的过程(IP地址的设置) —— 三件套从头服务到尾:判断、门牌、回信地址