这个题只有两问,虽说不知所以然也能做做个七七八八,但是把背后的原理搞懂是有必要的。
2020年的计网大题看似简单,实际上他考察了一个冷门的点:NAT的配置。经过了多年的变革,网络大题也逐渐开始整活。而且考的是具体的基于端口号划分的NAT方法。这个方法在王道书里基本上没怎么提及,所以初见也是做的云里雾里。
首先要搞清楚从H2向Web发送数据,总体的过程是什么样子呢?
第一个点,H2发送数据的目的ip地址是谁?
很明显,我们有4个选择:192.168.1.1(所谓的“默认网关”),192.168.1.2(web服务器的ip地址),203.10.2.6(R3的ip),203.10.2.2(R2的ip)。
198.168.1.2首先排除,因为这个ip地址是服务器的内网ip,显然不能作为目的ip地址。其次是192.168.1.1和203.10.2.6,如果这两个ip地址作为目的ip,那么数据报转发到R3之后,R3就不知道该给谁发了,也排除。所以只剩下一个:203.10.2.2(R2的ip)。
H2的源ip就是它本身的内网ip:192.168.1.2
当这个数据报发送到R3的时候,NAT的问题来了。因为源ip地址是内网ip,它不能放到公网上,所以R3要进行NAT变换,将源ip换为203.10.2.6(R3的ip)。
R2收到这个数据报的时候,新的问题又来了。这个数据报目的ip是203.10.2.2,但是R2下的内网有web服务器和H1,R2怎么知道给谁呢?这个时候就要引入端口号了,基于端口的NAT方法,加入了端口号这个信息,根据端口号来确定给谁转发。
实际上,H2在最初发送的时候,ip地址是203.10.2.2:80,是带着端口号的,R2看到这个80端口号,才知道要给web服务器转发而不是H1转发。此时R2做NAT变换,目的ip变为192.168.1.2:80,源ip不变,依旧是203.10.2.6(R3的ip)。
这就是整个发送过程。
说到这里,答案里的R2配置便很容易理解了。
R2收到目的地址为203.10.2.2,端口为80的数据报,就转换成192.168.1.2,端口号为80并转发。
关于R3的问题,我个人认为也是需要配置的。
R3收到192.168.1.2或者192.168.1.3,端口为本地默认http协议端口的数据报时,就转换成203.10.2.6,端口号不变。
这里为什么不是80呢?因为H2是客户机,端口不一定必须是80。(好像哪一年的选择题考察了这个知识点)但是它的目的ip地址对应的端口是服务器的端口,一定是80,这个要弄清。
还有一点:这里数据流向是H2向web发送数据。R2做NAT变换是针对从R3发过来的数据报,并且只对目的地址做变换;R3做NAT变换是针对从H2H3发过来的数据报,并且只对源ip地址做变换。
以上就是个人对这个题的深入理解。对细节把握到位,考试的时候才能游刃有余。