4.2【2020统考真题】


题目原文
(16)【2020统考真题】某校园网有两个局域网, 通过路由器 R1、 R2 和 R3 互联后接入 Internet, S1和 S2 为以太网交换机。局域网采用静态 IP 地址配置, 路由器部分接口以及各主机的 IP 地址如下图所示。
假设 NAT 转换表结构为:
| 外网IP地址 | 外网端口号 | 内网IP地址 | 内网端口号 |
|---|
- 为使 H2 和 H3 能够访问 Web 服务器 (使用默认端口号),需要进行什么配置?
- 若 H2 主动访问 Web 服务器时, 将 HTTP 请求报文封装到 IP 数据报 P 中发送, 则 H2 发送的 P 的源IP 地址和目的 IP 地址分别是什么? 经过 R3 转发后, P 的源 IP 地址和目的 IP 地址分别是什么? 经过R2 转发后, P 的源 IP 地址和目的 IP 地址分别是什么?
综合解析
一、运用了什么知识点?
-
网络地址转换 (NAT): 这是本题的核心。
- 动态NAT/NAPT (网络地址端口转换): 用于内部主机访问外部网络。当内部主机(如H2)访问外部时,NAT路由器(R3)会将其私有源IP地址转换为自己的公网IP地址,并记录这个转换关系,以便回程的报文能正确返回。这是“多对一”的转换。
- 静态NAT/端口转发 (Port Forwarding): 用于外部网络访问内部服务器。由于内部服务器(Web服务器)使用私有IP,外界无法直接访问。必须在NAT路由器(R2)上配置一条静态映射规则,将一个公网IP和端口“指向”内部服务器的私有IP和端口。这是“一对一”的固定映射。
-
IP路由与寻址:
- 私有IP地址 vs 公网IP地址: 理解
192.168.x.x这类私有地址不能在公网上传播,必须经过NAT转换。 - 数据包转发逻辑: 理解数据包在网络中是一跳一跳(hop-by-hop)转发的。主机发送数据包时,其目的IP地址必须是公网上可达的地址,或者是其NAT网关的公网地址。
- 私有IP地址 vs 公网IP地址: 理解
-
TCP/IP协议栈封装:
- 理解HTTP报文被封装在TCP报文中,TCP报文再被封装在IP数据报中。
- 知道Web服务的默认端口号是80 (HTTP)。
二、考了什么?为什么这么考?
-
第1问:考察的是**静态NAT(端口转发)**的配置。这是一个非常实际的场景:如何在公司或学校内部署一个网站,并让外部用户(在此题中,“外部”指的是Web服务器所在局域网之外的H2/H3)能够访问到它。这检验了你是否理解如何让一个“隐藏”在内网的服务“暴露”给外界。
-
第2问:考察的是一个数据包在经过多个NAT路由器时的完整生命周期。这是一个综合性极强的能力考查,要求你:
- 能站在发送主机(H2)的角度,思考它应该把包发往哪里。
- 能扮演NAT路由器(R3),对出站的数据包进行源地址转换。
- 能扮演另一台NAT路由器(R2),对入站的数据包进行目的地址转换。
为什么这么考? 因为这道题模拟了一个非常真实的、由多个部门或校区组成的复杂网络环境。它不再是单一的“内网-外网”模型,而是“一个内网 -> 公网 -> 另一个内网”的模型。能够完整追踪数据包在这种环境下的IP地址变化,标志着你对NAT的工作原理和IP路由的理解已经达到了一个非常深入的层次。
三、解题思路与详细分析 (为什么怎么样?)
问题1分析:如何让外部主机访问内网服务器
-
障碍分析:Web服务器的IP是
192.168.1.2,这是一个私有IP。主机H2/H3在另一个局域网,它们无法直接将数据包的目的地址写成192.168.1.2并发送,因为这个地址在公网(R1-R2-R3之间的网络)上是不可路由的。 -
解决方案:必须通过Web服务器的“守护者”——路由器R2来访问。H2/H3只能看到R2的公网接口地址
203.10.2.2。我们需要在R2上设置一个规则,告诉它:“凡是发往我公网地址203.10.2.2并且端口是80(Web服务默认端口)的请求,都请帮我转发给内网的192.168.1.2的80端口”。这就是静态NAT,也叫端口转发或服务器发布。 -
具体配置:在路由器R2的NAT转换表中,添加一条静态映射条目。
- 外网IP地址:
203.10.2.2(R2的公网IP) - 外网端口号:
80(Web服务的公认端口) - 内网IP地址:
192.168.1.2(Web服务器的私有IP) - 内网端口号:
80(Web服务器正在监听的端口)
- 外网IP地址:
-
结论: 需要在路由器R2上配置一条静态NAT条目,将
(203.10.2.2, 80)映射到(192.168.1.2, 80)。
问题2分析:追踪IP数据包P的地址变化
这是一个分步的推理过程,我们一步一步来分析。
阶段一:H2发送P时
- 源IP地址: H2自己的IP地址,即
192.168.1.2。 - 目的IP地址: 根据问题1的分析,H2不能直接访问Web服务器的私有IP。它必须访问那个配置了端口转发的公网地址。所以,目的IP是R2的公网接口地址
203.10.2.2。 - 结论:
源IP: 192.168.1.2,目的IP: 203.10.2.2
阶段二:经过R3转发后
- R3是H2所在局域网的NAT网关。它看到一个来自内网 (
192.168.1.2)、要去往外网 (203.10.2.2) 的数据包。 - R3会执行一次动态NAT(NAPT)操作,将数据包的源IP地址从私有IP换成自己的公网IP,以便回程报文能找到R3。
- 源IP地址变化:
192.168.1.2->203.10.2.6(R3的公网IP) - 目的IP地址变化: 不变。R3的任务是帮助数据包到达目的地,而不是修改目的地。
- 结论:
源IP: 203.10.2.6,目的IP: 203.10.2.2
阶段三:经过R2转发后
- R2收到了一个数据包,其目的地址是
203.10.2.2,也就是R2自己的公网接口。 - R2会检查这个数据包的目的端口(虽然题目没问,但这是它判断的依据,即80端口),然后查询自己的NAT表。
- 它找到了我们在问题1中配置的静态NAT规则:“凡是到
203.10.2.2:80的包,都转给192.168.1.2:80”。 - R2会执行这次静态NAT操作,将数据包的目的IP地址从自己的公网IP换成内网Web服务器的私有IP。
- 源IP地址变化: 不变。R2必须保留源IP为
203.10.2.6,这样Web服务器才知道应该把响应数据发回给谁(发回给R3,R3再根据自己的NAT表发回给H2)。 - 目的IP地址变化:
203.10.2.2->192.168.1.2 - 结论:
源IP: 203.10.2.6,目的IP: 192.168.1.2
最终,Web服务器收到的数据包源IP是R3的公网IP,目的IP是它自己的私有IP。
