← Back to Learning Notes

2 题型 - 网络层转发

Chinese-language Computer Science 408 note: 2 题型 - 网络层转发. Original source available where applicable.

On this page

This note is currently available in Chinese. The original wording, formulas and diagrams are preserved to avoid an unverified technical translation.

描述:路由器根据目的 IP 地址查转发表,若多条路由同时匹配,选择网络前缀最长的条目。IP 分组跨越不同链路时,源/目的 IP 通常保持不变,链路层源/目的 MAC 每跳重写;若经过 NAT,IP 地址还会按转换表修改。

2.1 路由器转发步骤

  1. 检查 IPv4 首部并将 TTL 减 1;若 TTL 变为 0,则丢弃,通常向源主机发送 ICMP 时间超过报文(教材补充:目的为广播/多播、非首片分片或原报文本身是 ICMP 差错等情形,不再发送 ICMP 差错)。
  2. 用目的 IP 地址与各路由条目的掩码按位与,判断该目的是否匹配条目前缀。
  3. 在所有匹配项中选择最长前缀匹配。
  4. 若路由指向下一跳,解析下一跳的链路层地址;若为直连路由,解析目的主机的链路层地址。
  5. 用出接口重新封装链路层帧并发送;IPv4 首部因 TTL 改变而需更新首部校验和。

默认路由 0.0.0.0/0 匹配任何目的地址,但前缀长度为 0,只有没有更具体路由时才使用。

2.2 IP 与 MAC 地址如何变化

在没有 NAT/NAPT 的普通路由转发中:

地址 是否逐跳变化 含义
源 IP 否 始终是原始发送主机
目的 IP 否 始终是最终接收主机
源 MAC 是 当前链路发送端接口
目的 MAC 是 当前链路下一跳接口或最终主机

因此:

  • 主机向异网目的发送时,首跳以太网帧的目的 MAC 是默认网关接口的 MAC,不是远端主机的 MAC。
  • 远端主机收到最后一跳帧时,源 MAC 是最后一跳路由器出接口的 MAC,不是原始发送主机的 MAC。

2.3 历年真题

2.3.1 2015 年:最长前缀匹配

路由表为:

目的网络 下一跳 接口
169.96.40.0/23 176.1.1.1 S1
169.96.40.0/25 176.2.2.2 S2
169.96.40.0/27 176.3.3.3 S3
0.0.0.0/0 176.4.4.4 S4

目的地址 169.96.40.5 同时落在 /23、/25、/27 三个范围中。最长前缀是 /27,覆盖 169.96.40.0-169.96.40.31,因此选择接口 S3。

答案:C,S3。

2.3.2 2018 年:跨路由器的 MAC 地址

H1=192.168.3.2,H2=192.168.4.2,两者通过路由器 R 相连。R 左接口 MAC 为:

00-1a-2b-3c-4d-51

R 右接口 MAC 为:

00-a1-b2-c3-d4-61

H1 与 H2 不同网段:

  • H1 发出的首跳帧交给默认网关,目的 MAC 是 R 左接口 00-1a-2b-3c-4d-51。
  • R 从右接口转发给 H2,H2 收到的帧的源 MAC 是 R 右接口 00-a1-b2-c3-d4-61。

答案:D。

2.3.3 2023 年:/30 链路上的 NAT 公网地址

R1 与执行 NAT 的 R2 通过 195.123.0.34/30 所在点到点链路相连,H 的私有地址为 192.168.0.3。

195.123.0.34/30 所在地址块是:

网络地址:195.123.0.32
可用地址:195.123.0.33、195.123.0.34
广播地址:195.123.0.35

R1 已使用 .34,所以 R2 的公网接口只能是 195.123.0.33。H 发往 Internet 的分组经 R2 转发后,NAT 将私有源地址换为 R2 公网地址:

源 IP = 195.123.0.33

不能选择 R2 的内网地址 192.168.0.1,因为私有地址不能在公网中直接路由。

答案:A,195.123.0.33。

2.4 路由类型

类型 典型前缀 用途
网络路由 如 192.168.1.0/24 到达整个目标网络
主机路由 /32 只匹配一个具体主机,优先级最高
默认路由 0.0.0.0/0 其他条目均不匹配时使用
直连路由 与本接口在同一子网 直接交付给目的主机

最长前缀匹配比较的是前缀长度,不是路由表中的书写顺序,也不是下一跳 IP 的数值大小。

2.5 易错点

  • 多条路由匹配时选掩码最长、前缀最具体的条目,不能“从上到下遇到第一条就停”。
  • 默认路由一定匹配,但优先级最低。
  • 跨网段首跳的目的 MAC 是默认网关;最终主机收到帧的源 MAC 是最后一跳路由器。
  • 普通转发中端到端 IP 地址不变,MAC 地址逐跳改变;经过 NAT 时 IP 地址可能改变。
  • /30 地址块只有两个可用接口地址,网络地址和广播地址不能分配。

相关知识

2.6 本节复盘

  • 路由器查表使用最长前缀匹配;169.96.40.5 在 2015 年题中选择 /27 的 S3。
  • 没有 NAT 时源/目的 IP 端到端保持不变,源/目的 MAC 每条链路重新封装。
  • 主机向异网发送时把帧交给默认网关;远端收到的帧来自最后一跳路由器接口。
  • 本题的源 NAT 把内网私有源地址换为 R2 的公网接口地址 195.123.0.33;教材补充:一般 NAT 也可能使用地址池中的其他公网地址,不能把“必用出接口地址”当成通则。