NAT 是一种在 IP 网络中,通过修改 IP 数据包的源或目标地址信息,将一个地址空间映射到另一个地址空间的技术。
简单来说,NAT 就像一个公司或一栋大楼的总机接线员,它使得一个组织内部的所有设备可以使用"内部号码"(私有IP地址),但与外界通信时,都统一使用公司总机的"公共号码"(公有IP地址)。
一、为什么需要 NAT?------ 核心问题:IPv4 地址枯竭
互联网的基石是 IP 协议,而 IPv4 协议提供的 IP 地址数量约为 43 亿个。随着互联网的爆炸式发展,全球联网设备数量远超这个数字。如果每台手机、电脑、智能手表都分配一个独一无二的公网 IP 地址,地址早就用完了。
为了解决这个问题,人们划分出了两类 IP 地址:
- 
公网 IP 地址 (Public IP):全球唯一,可以直接在互联网上被访问,由互联网服务提供商(ISP)分配,数量有限且需要付费。
 - 
私网 IP 地址 (Private IP) :在一个局部范围(如你家、一个公司、一所学校)内使用,可以重复。你家里的
192.168.1.101和我家的192.168.1.101互不影响。这些地址不能在公共互联网上被路由。- 
常见的私网地址段:
- 
10.0.0.0-10.255.255.255 - 
172.16.0.0-172.31.255.255 - 
192.168.0.0-192.168.255.255 
 - 
 
 - 
 
NAT 的诞生,就是为了让众多使用私网 IP 的设备,能够通过共享一个或少数几个公网 IP 地址来访问互联网。
二、NAT 是如何工作的?------ 接线员的比喻
我们用一个具体的例子来解释你家路由器(最常见的 NAT 设备)的工作流程。
- 
你的电脑 : 私网 IP
192.168.1.100 - 
你的路由器 : 它有两个地址,对内是私网地址
192.168.1.1,对外是运营商分配的公网 IP120.50.60.70 - 
你想访问的网站 :
example.com(假设其公网 IP 为93.184.216.34) 
步骤 1:发送数据(内部员工打外线电话)
- 
创建数据包: 你的电脑创建一个数据包,包头信息如下:
- 
源地址:
192.168.1.100:12345(IP:端口号) - 
目标地址:
93.184.216.34:80 
 - 
 - 
路由器接收: 数据包发送到你的默认网关,也就是路由器。
 - 
NAT 转换 (接线员操作): 路由器看到这是一个发往公网的数据包,于是执行 NAT 操作:
- 
它将数据包的源地址 从你的私网 IP 替换成它自己的公网 IP。为了区分内部多台设备同时上网,它还会分配一个新的端口号。
 - 
修改后的数据包:
- 
源地址 :
120.50.60.70:55555(路由器的公网IP:一个新的端口) - 
目标地址 :
93.184.216.34:80(目标地址不变) 
 - 
 
 - 
 - 
建立映射表 (接线员做笔记) : 路由器内部会有一个 NAT 转换表,它会记录下这次转换,以便回来的数据能找到路:
 
| 内部地址 (私网) | 外部地址 (公网) | 
|---|---|
192.168.1.100:12345 | 
120.50.60.70:55555 | 
- 发送到公网 : 路由器将修改后的数据包发送到互联网。对于 
example.com服务器来说,它认为这个请求来自120.50.60.70,完全不知道你192.168.1.100的存在。 
步骤 2:接收数据(外线电话回拨)
- 
服务器响应 :
example.com服务器处理完请求,发回一个响应数据包。这个包的目标是请求的来源:- 
源地址:
93.184.216.34:80 - 
目标地址:
120.50.60.70:55555 
 - 
 - 
路由器接收: 你的路由器收到了这个从公网发来的数据包。
 - 
查询映射表 (接线员查笔记) : 路由器查看数据包的目标地址
120.50.60.70:55555,然后去自己的 NAT 转换表里查询。 - 
反向 NAT 转换 : 它找到了匹配的记录,知道这个数据包是给
192.168.1.100:12345的。于是它再次修改数据包:- 
源地址:
93.184.216.34:80 - 
目标地址 :
192.168.1.100:12345(换回了你的电脑的私网地址) 
 - 
 - 
转发到内网: 路由器将这个最终的数据包转发给你局域网内的电脑。你成功收到了网页内容。
 
三、NAT 的主要类型
- 
静态 NAT (Static NAT)
- 
一对一映射:将一个私网 IP 地址永久地、唯一地映射到一个公网 IP 地址。
 - 
用途:通常用于需要从外部直接访问的内部服务器,比如公司的网站服务器或邮件服务器。这并没有节省 IP 地址,但能隐藏内部真实 IP。
 
 - 
 - 
动态 NAT (Dynamic NAT)
- 
多对多映射:有一个公网 IP 地址池,内部设备需要上网时,就从池中临时租用一个公网 IP。用完后释放,供其他设备使用。
 - 
用途:适用于内部设备数量大于可用公网 IP 数量,但同时上网设备不多的情况。
 
 - 
 - 
PAT (Port Address Translation) 或 NAPT
- 
多对一映射 :这是最常见、最主流的一种 NAT,也叫"地址过载 (Overloading)"。我们上面详细解释的例子就是 PAT。
 - 
它将多个私网 IP 地址映射到同一个公网 IP 地址的不同端口号上,通过端口号来区分不同的内部设备和会话。你家里的路由器使用的就是这种技术。
 
 - 
 
四、NAT 的优缺点
优点
- 
✅ 缓解 IPv4 地址耗尽:这是它最核心的贡献,极大地延长了 IPv4 的生命周期。
 - 
✅ 增强网络安全:NAT 设备像一个天然的防火墙。由于外部网络无法直接知道你内部设备的私网 IP,也无法主动发起连接(因为 NAT 表里没有映射记录),这在很大程度上保护了内部网络免受外部的直接攻击。
 
缺点
- 
❌ 破坏了端到端连接模型:互联网设计的初衷是任何两个节点都可以直接通信。NAT 的存在使得位于 NAT 后面的设备无法轻易地被外界直接访问,破坏了这一原则。
 - 
❌ 影响 P2P 应用:像在线游戏、视频会议、BT 下载等需要建立点对点(Peer-to-Peer)连接的应用会变得非常困难。因为双方都可能在 NAT 后面,谁也无法主动连接谁。这催生了像 STUN/TURN/ICE 这样的"NAT 穿透"技术。
 - 
❌ 处理某些协议时会出问题:有些协议(如 FTP 的一部分)会在其数据载荷中包含 IP 地址信息,标准的 NAT 设备可能无法识别并修改这些信息,导致协议工作不正常。
 
总结
NAT 是一项为了应对 IPv4 地址短缺而发明的伟大"变通"技术。它通过扮演一个"中间人"或"接线员"的角色,成功地让大规模的私有网络共享有限的公网资源。尽管它带来了一些副作用,但在 IPv6(拥有近乎无限的地址空间,旨在消除对 NAT 的需求)完全普及之前,NAT 仍然是支撑现代互联网运作不可或缺的关键技术。