**NAT (Network Address Translation,网络地址转换)** 是一种网络技术,用于将私有IP地址转换为公有IP地址。
### NAT的基本工作原理
```
内网设备 (192.168.1.100)
↓
路由器/防火墙 (NAT设备)
↓
互联网 (公网IP: 120.25.30.40)
```
当内网设备访问外网时:
- **出去的包**:私有IP → 公网IP
- **返回的包**:公网IP → 私有IP
## 为什么需要NAT?
### 1. IPv4地址短缺
- 全球IPv4地址不够用
- 大量设备共享少量公网IP
### 2. 网络安全
- 隐藏内网结构
- 防止外网直接访问内网设备
### 3. 成本考虑
- 减少公网IP的需求和费用
## NAT的问题
### 主要限制
```
外网用户无法主动连接内网设备
↓
问题:P2P通信困难
```
比如:
- 两个都在NAT后面的用户无法直接连接
- 游戏、视频通话、文件传输受阻
- 服务器部署受限
## NAT打洞是什么?
**NAT打洞(NAT Traversal/Hole Punching)** 是绕过NAT限制,使两个内网设备能够直接通信的技术。
### 基本原理
1. **建立映射**:内网设备先向外网发包,在NAT上建立端口映射
2. **保持映射**:定期发包保持映射不失效
3. **直接通信**:利用已建立的映射进行P2P通信