"最终的发送地址"不是全路的终点,而是"这一段的终点"——发送方判定题定下帧的目的 MAC(同网段问收件人、跨网段问网关),每台路由器转发时执行的是表里的下一跳 IP;于是目的 MAC 逐段接力换新,目的 IP 从头到尾只有一个。
6.3 给了"下一跳 IP",6.4 拆了单跳里"怎么交"(ARP 问路、封新帧)。本节把镜头拉回端到端,收拢一张地址全景表:一帧四个地址各管什么、各由谁写、各活多久——顺带解释节标题里那句"下一个路由器执行的地址"指的就是下一跳 IP。ARP 的动作上一节拆过,本节不再重复,只管"名单怎么接"。
一、发送方要最终确定的,是帧的目的 MAC(第一张配图)
主机发包前那道判断题,现在可以给出它的完整产出了:
- 目的 IP AND 掩码 == 自己的网段?
- 相等(同网段):ARP 直接问收件人,帧的目的 MAC=收件人,直达——第五章的机制全程服务;
- 不等(跨网段):ARP 只问网关,帧的目的 MAC=网关——帧的"最终发送地址"只是下一站,不是真正的收件人。
注意两种情况IP 头都一样:源 IP 写自己、目的 IP 写最终收件人。变的只有"这一段的投递终点"(目的 MAC)——这就是"最终的发送地址"这个说法的准确含义:它最终,但只最终到这一段。
二、一帧四地址,三种命运(第二张配图)
把任一段链路上跑着的帧拆开看,头里一共四个地址:
| 地址 | 写的是谁 | 命运 |
|---|---|---|
| 源 MAC | 本段的发送方 | 每段重写 |
| 目的 MAC | 本段的接收方(下一跳/收件人) | 每段重写 |
| 源 IP | 最初的发送方 | 端到端不变 |
| 目的 IP | 最终的收件人 | 端到端不变 |
三个地址"看一段",一个地址"看全程"——MAC 头是每趟车的装卸单,IP 头是信封正面的收寄件人(6.1 的类比至此完整落地)。唯一的例外还是那句老话:NAT 会改 IP 头,所以要配专门的转换表(3.14)。
三、接力棒名单:目的 MAC 逐段传递
把 6.4 的单跳放大镜拉远成全景,从波仔的电脑到远端服务器:
- 第 1 段:目的 MAC=家用路由器;
- 第 2 段:目的 MAC=下一台路由器;
- ……
- 最后一段:目的 MAC 终于=收件人本人。
每一棒交接的动作,都是 6.4 那套"拆旧壳 → 查表 → ARP 问路 → 封新壳"。没有任何一段的帧知道全程路线,但 IP 包从未换过收件人——这就是逐跳接力能拼出"端到端连续"的根本原因。
四、"下一个路由器执行的地址"=下一跳 IP
节标题括号里那句"下一个路由器执行的地址",指的就是路由表里的"下一跳 IP":路由器转发一个包时,真正拿去执行的就是这一栏——先查表得到它,再 ARP 问出它的 MAC,然后封帧扔出(6.3 + 6.4 的流水线)。
一个值得停一停的推论:路由器从头到尾不知道"最终收件人"在哪,它只执行"下一跳"。最终收件人的 IP 只写在 IP 头里被人"捎带",直到最后一段才被真正"执行"。这也是 6.1"没有任何一台设备知道全程路线"的另一面:没有人执行终点,人人只执行下一站。
五、动手 Demo75:ARP 表里永远只有本段邻居
Win+R→ 输入cmd→ 回车,敲arp -a,扫一眼当前名单。- 敲
ping 223.5.5.5(公网地址),通。 - 再敲
arp -a——名单里没有 223.5.5.5。你和一个公网地址通了信,但它的 MAC 你从头到尾不知道:帧的目的 MAC 写的是网关,ARP 只问过网关。 - 30 秒实验:盯着
arp -a的完整输出看一遍——所有条目的 IP 全是你自己网段的(192.168.1.x 这类)。这张表="我的邻居名单",永远不会出现远方地址。 - (选做,家里有其他设备时)ping 一台内网设备的 IP(如手机的地址),再
arp -a——它的 MAC 出现了:同网段,ARP 问的就是收件人本人,第一节那张图的左路亲眼验证。 - 全部完成。你现在能解释:为什么"和全世界通信,ARP 表里却只有邻居"。
六、常见误区
- "帧的目的 MAC 应该写最终收件人"——MAC 不过段:只有同网段(或最后一段)才写得到收件人;跨网段写的是网关/下一跳。
- "ARP 表里会有公网 IP 的 MAC"——ARP 广播出不了本网段(广播域边界,5.12),表里永远只有邻居;Demo75 亲眼验证。
- "源 IP 也会逐段变"——不变:源/目的 IP 端到端恒定,变的只有 MAC(NAT 例外)。
- "MAC 头每段都重写,数据岂不是会乱"——IP 包原封不动地在段与段之间"捎带",接收端靠传输层把流拼回原样,帧换壳不影响内容。
- "路由器执行的是目的 IP"——它执行的是下一跳 IP;目的 IP 只是被捎带的"行李标签",最后一段才被执行。
七、动手自测
点开自测(先自己答,再展开)
1. 发送方的判定题两种结果,ARP 各问谁?帧的目的 MAC 各写谁? 2. 判定题两种结果下,IP 头有区别吗? 3. 一帧四地址是哪四个?各自的命运? 4. "最终的发送地址"准确含义是什么? 5. "下一个路由器执行的地址"指什么?路由器执行它之前还要做什么? 6. 路由器知道最终收件人在哪吗? 7. 目的 MAC 的"接力棒名单"规律是什么?最后一棒写谁? 8. 为什么 ARP 表里查不到公网 IP? 9. MAC 头每段重写,会不会把数据弄乱? 10. 和全世界通信、却只认识邻居,这句话对应哪张表?答案:① 同网段问收件人(目的 MAC=收件人);跨网段问网关(目的 MAC=网关)。② 无区别:都写源自己、目的=最终收件人。③ 源/目的 MAC(每段重写);源/目的 IP(端到端不变,NAT 例外)。④ "这一段的终点",不是全路终点。⑤ 路由表的下一跳 IP;执行前还要 ARP 问出它的 MAC(6.4)。⑥ 不知道,只执行下一跳;最终收件人只是被捎带。⑦ 目的 MAC=本段接收方,逐段换新;最后一棒写收件人本人。⑧ ARP 广播出不了本网段,只认识邻居。⑨ 不会:IP 包原封不动,帧只是壳。⑩ ARP 表(邻居名单)。
八、下一步学什么
- ☑ 6.6 将数据发送到最终的目的地(向最终目的地传输数据) ✅ 已完成 —— 最后一跳闭环:直连行"在链路上"→ ARP 直接问真身 → 收件人两道核对后拆包上交,第六章前半拼图完成。
相关笔记
- 将数据发送到最终的目的地(向最终目的地传输数据) —— 本节说"最终发送地址只是这一段的终点",下一节走到真正的终点:直连行、问真身、被认领
- 将数据传输给下一个路由器(数据传输给下一个路由器) —— 拆壳、ARP、封壳的单跳动作,本节把它串成全程名单
- 确定传输数据的目的地(确定数据传输的目的地) —— "下一个路由器执行的地址"(下一跳 IP)就出自查表
- 将数据传输到远程网络(路由) —— 逐跳接力与"无人知全程",本节给出地址层面的证明
- 将IP地址与MAC地址对应(ARP) —— 问路协议本尊;"目的 MAC 是网关"是其第一跳特例
- 二层交换机的操作(以太帧发送后的MAC地址表的登记) —— 广播出不了路由器:ARP 表只有邻居的原因
- 连接网络的过程(IP地址的设置) —— 判定题的原料:当年填的三件套