Appearance
题目
下图所示网络中,假设连接 R1、R2 和 R3 之间的点对点链路使用 201.1.3.x/30 地址,当 H3 访问 Web 服务器 S 时,R2 转发出去的封装 HTTP 请求报文的 IP 分组的源 IP 地址和目的 IP 地址分别是( )。
图中说明:R2 是 NAT 路由器;R1-R2 链路使用 201.1.3.8/30(R1 接口 = 201.1.3.9,R2 L0 接口 = 201.1.3.10);R2-R3 链路使用 201.1.3.0/30(R3 接口 = 201.1.3.1,R2 L1 接口 = 201.1.3.2)。
错因
A
源 IP 没替换——以为 H3 的私网 IP 192.168.3.251 直接出现在公网链路上。这是 NAT 的根本目的之一:避免私网 IP 出现在公网(私网 IP 不可路由)。R2 必须把源 IP 换成自己的公网接口 IP(201.1.3.10)。错的根源:完全忽略了 NAT 这一步。
B
源 IP 没换 + 目的 IP 错算成 R1 的接口 201.1.3.9。目的 IP 永远不变——HTTP 请求要送到 Web 服务器 S(130.18.10.1),中间的路由器不会改目的。R1 只是经过的"中转点",不是终点。错的根源:把"中间路由器接口"误当作目的。
C
源 IP 算成 201.1.3.8——这是 R1-R2 链路所属子网的网络号(不是任何接口的 IP)。/30 子网 201.1.3.8/30 包含 4 个 IP:.8(网络号)/.9(R1)/.10(R2 L0)/.11(广播)。R2 的接口是 .10,不是 .8。错的根源:把网络号当成可用的接口 IP。
总解析
第一步:算 R1-R2 链路上 R2 的接口 IP
链路使用 /30 子网。题面"R1 (201.1.3.9)"——R1 这端 IP 是 201.1.3.9。
/30 子网的第四字节步长 = 4,可能的子网起点 = 0, 4, 8, 12, ...。201.1.3.9 落在 [201.1.3.8, 201.1.3.11] 这个 /30 子网(即 201.1.3.8/30)。
| 角色 | IP |
|---|---|
| 网络号 | 201.1.3.8 |
| R1 接口 | 201.1.3.9 |
| R2 接口(L0) | 201.1.3.10 |
| 广播 | 201.1.3.11 |
第二步:分析 NAT 转换
H3 → S 的 IP 分组在 H3 内网段的源/目的:
| 字段 | 值 |
|---|---|
| 源 IP(H3) | 192.168.3.251(私网) |
| 目的 IP(S) | 130.18.10.1(公网) |
R2 是 NAT 路由器,把分组从内网转发到公网(经过 R1-R2 链路)时:
| 字段 | NAT 转换 | R2 转发出去后的值 |
|---|---|---|
| 源 IP | 私网 → R2 公网接口 | 201.1.3.10(R2 L0 接口 IP) |
| 目的 IP | 不变 | 130.18.10.1 |
第三步:核对选项
R2 转发出去的 IP 分组:源 = 201.1.3.10、目的 = 130.18.10.1 → D。
最终答案是 D(201.1.3.10,130.18.10.1)。
编者注(生僻术语):NAT(Network Address Translation)的核心动作——把内网私网 IP(10/8、172.16/12、192.168/16)替换为路由器的公网接口 IP。NAT 路由器有多个公网接口时,按"分组要从哪个接口送出去"决定用哪个接口的 IP(路由查表后确定的下一跳所在链路的本地 IP)。本题 R2 要把分组送往 R1(再经 Internet 到 S),所以用 R2 的 L0 接口(201.1.3.10)作为源 IP,不是 L1 接口(201.1.3.2)。