2010-05-23 79 views
3

只是对NAT的特定场景感到好奇。假设我们有4台计算机在NAT下共享全局IP地址。我知道NAT盒保留一个内部记录以知道要将请求转发给哪台计算机。但是让我们来说说#2计算机我正在尝试下载一个文件。假设在计算机#1,#3和#4上,我只是正常浏览网页。当浏览器启动一个TCP连接来获取该文件时,它如何知道要将其提供给哪台计算机?我的意思是,四台电脑中的每台电脑都使用80端口来浏览网页? NAT记录如何区分哪个“端口80”属于哪台计算机?关于网络地址转换(NAT)?

回答

5

“http 80端口”的概念不起作用。当计算机浏览网页时,只有服务器使用端口80,而客户端将使用随机端口号。服务器回复一个目标端口,由客户端提供,附加。 80端口仅用于敲击Web服务器的门。

NAT所做的工作就是将所有这4台计算机向外传输数据包,以便其源端口不会重复。当NAT收到一个数据包时,它会检查连接的目标端口是否可以被翻译,并且如果可能的话将它翻译成局域网。

+0

非常感谢。 – Rudi 2010-05-23 18:17:58

8

互联网上每个唯一的TCP连接由四个数字组成 - {source IP, source port, destination IP, destination port}

NAT网关(GW)将其转换为{GW public IP, GW-mapped port, destination IP, destination port},以便外部路由器知道将数据包返回给此特定网关。它还沿着{GW-mapped port -> {source IP, source port}}这些线路保持这些映射端口映射回源IP和端口号,这使得它能够找出将响应分组发送到哪个内部机器。

+0

非常感谢。 – Rudi 2010-05-23 18:17:11

+0

我有一个问题,如果服务器在他身边使用NAT会怎么样?数据包到达后,目标端口是否会被某些东西取代?例如,当我们与服务器公共端口80通信时,服务器端的实际端口是否可以是其他数字?如果是,那么这是否意味着服务器程序员必须确保端口80不用于其他任何事情? – mercury0114 2016-04-10 19:24:42

+0

NAT对于应用程序是透明的,所以服务器开发人员只会关心他的进程正在监听的端口号。 – 2016-04-10 21:00:15