Skip to content

2016年 408 计算机网络 第 38 题

计算机网络2016年选择题2分

题目

下图所示网络中,假设连接 R1、R2 和 R3 之间的点对点链路使用 201.1.3.x/30 地址,当 H3 访问 Web 服务器 S 时,R2 转发出去的封装 HTTP 请求报文的 IP 分组的源 IP 地址和目的 IP 地址分别是( )。

201.1.3.9L0L1201.1.3.1InternetWeb 服务器 S 130.18.10.1R1R2 (NAT)R3HubH3192.168.3.251H4

图中说明: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.1D

最终答案是 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)。

最后更新:

⚠️ 这道题暂未配可视化,欢迎在 CodeBrick 反馈区告诉我们你想看哪道题