只是对 NAT 的特定场景感到好奇。假设我们有 4 台计算机在 NAT 下共享一个全局 IP 地址。我了解 NAT 框保留内部记录以了解将请求转发到哪台计算机。但是,假设在#2 计算机上,我正在尝试下载文件。假设在 #1、#3 和 #4 计算机上,我只是正常浏览网页。当浏览器启动 TCP 连接以获取该文件时,它如何知道将其提供给哪台计算机?我的意思是,四台计算机中的每一台都使用端口 80 浏览网页,对吗?NAT 的记录如何区分哪个“80 端口”属于哪台计算机?
问问题
1925 次
2 回答
15
Internet 上的每个唯一 TCP 连接都由四个数字组成- {source IP, source port, destination IP, destination port}
.
NAT 网关 (GW) 将其转换为,{GW public IP, GW-mapped port, destination IP, destination port}
以便外部路由器知道将数据包返回到此特定网关。它还保留这些映射端口到源 IP 和端口号的映射,沿线{GW-mapped port -> {source IP, source port}}
,这允许它找出将响应数据包发送到的内部机器。
于 2010-05-23T05:10:58.523 回答
5
“http 的 80 端口”的概念不像这些那样起作用。当计算机浏览网页时,只有服务器使用 80 端口,而客户端会使用随机端口号。服务器以附加的客户端提供的目标端口进行回复。端口 80 仅用于敲 Web 服务器的门。
NAT 所做的是将所有这 4 台计算机向外传输数据包,以使它们的源端口不重复。当 NAT 接收到一个数据包时,它会检查附加的目标端口是否可以被转换,如果可能的话,将其转换到 LAN。
于 2010-05-23T05:13:00.857 回答