【问题标题】:About Network Address Translation (NAT)?关于网络地址转换 (NAT)?
【发布时间】:2010-05-23 04:55:10
【问题描述】:

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

【问题讨论】:

标签: networking nat


【解决方案1】:

互联网上的每个唯一 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}} 的行,这允许它找出将响应数据包发送到的内部机器。

【讨论】:

  • 我有一个问题,如果服务器在他这边使用 NAT 怎么办?数据包到达后,目标端口会被替换吗?例如,当我们与服务器的公共端口 80 通信时,会不会是服务器端的实际端口是其他数字?如果是,这是否意味着服务器程序员必须确保端口 80 不用于其他任何用途?
  • NAT 对应用程序是透明的,因此服务器开发人员只关心他的进程正在侦听的端口号。
【解决方案2】:

“http 的 80 端口”的概念不像这些那样起作用。计算机浏览网页时,只有服务器使用 80 端口,而客户端会使用随机端口号。服务器以附加的客户端提供的目标端口进行回复。 80端口只是用来敲Web服务器的门。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    相关资源
    最近更新 更多