在阅读Behrouz A. Forouzan 的数据通信和网络(第 5 版)时,我对 NAT 的解释有困难。在第 546 页,该书描述了带有公共 IP 地址池的仅修改 IP NAT(又名基本 NAT;不是常用的修改 IP 和端口 NAT 或 NAPT)。它说“没有任何专网主机可以同时访问两个外部服务器程序(例如,HTTP 和 TELNET)”。但在我的理解中,它可以。这是我的论点:
假设私网主机的IP地址是10.1.1.1,其中一个NAT的公网IP地址是200.2.2.2(一个就够了,这种情况下一个pool就有点过分了),服务器的IP地址是30.3.3.3。
当主机访问服务器的HTTP服务时,主机发出的数据包为[10.1.1.1:1111 -> 30.3.3.3:80]。经过NAT后,数据包变为[200.2.2.2:1111 -> 30.3.3.3:80],即源IP地址被NAT替换为公网IP地址,其他内容不变。NAT 还在其转换表中创建一个新条目,将 30.3.3.3 映射到 10.1.1.1。当回复包[30.3.3.3:80 -> 200.2.2.2:1111]到达时,NAT在其转换表中查找源IP地址(30.3.3.3)并找到刚刚创建的映射项说真正的目的地是 10.1.1.1。因此,NAT 将回复数据包转换为 [30.3.3.3:80 -> 10.1.1.1:1111 ]。
如果同时主机在服务器上登录TELNET,则出包为[10.1.1.1:1112 -> 30.3.3.3:23],翻译为[200.2.2.2:1112 -> 30.3.3.3: 23] 由 NAT。请注意,这次没有创建新的映射条目,因为它将与前一个相同。回复包是[30.3.3.3:23 -> 200.2.2.2:1112],同样经过NAT转换为[30.3.3.3:23 -> 10.1.1.1:1112 ]。
因此,(翻译的)回复数据包都将到达(单个)正确的主机。并且由于它们的目的端口不同,它们都会被正确地传送到主机上的启动程序。完毕。
我错过了什么吗?谢谢你。
附录:这是数据通信和网络(第 4 版)供您参考。