给出一个STUN的工作流程例子
时间: 2025-08-28 09:55:45 AIGC 浏览: 11
<think>
我们正在讨论NAT穿透技术,用户要求给出STUN的工作流程例子。
STUN(Session Traversal Utilities for NAT)是一种用于帮助设备发现其NAT类型和公网地址映射的协议。
工作流程通常涉及客户端(位于NAT后)、STUN服务器(公网)和可能的对等端。
我们将描述一个典型场景:内网主机通过STUN服务器获取其公网地址信息,并用此信息与另一台主机建立P2P连接。
注意:需用中文回答,并在末尾提出3-5个相关问题,第一行必须是“§§相关问题§§”。
</think>
### STUN的工作流程例子
STUN(Session Traversal Utilities for NAT)是一种帮助位于NAT后的设备发现其公网地址映射的协议,常用于P2P通信穿透NAT。以下是典型工作流程示例(以视频通话应用为例):
#### 场景设定
- **客户端A**:位于NAT后,私有IP 192.168.1.100
- **客户端B**:位于另一NAT后,私有IP 10.0.0.200
- **STUN服务器**:公网IP 203.0.113.5(端口3478)
#### 工作流程步骤
1. **客户端A查询STUN服务器(绑定请求)**:
- A发送UDP请求到STUN服务器:`源地址 192.168.1.100:54321 → 目标 203.0.113.5:3478`
- NAT设备创建映射:`私有地址 192.168.1.100:54321 → 公网映射 198.51.100.1:60000`
- STUN服务器收到请求的**实际源地址**为公网映射地址:198.51.100.1:60000
2. **STUN服务器响应(绑定响应)**:
- 服务器在响应包中返回A的公网映射信息:
```json
{
"XOR-MAPPED-ADDRESS": "198.51.100.1",
"PORT": 60000
}
```
- NAT根据映射表将响应转发给A的私有地址192.168.1.100:54321
- A获知自己的公网地址为:198.51.100.1:60000
3. **客户端B执行相同过程**:
- B通过STUN查询获得自己的公网映射:203.0.113.2:55000
4. **建立P2P连接(UDP打洞)**:
- A通过信令服务器(如SIP)将地址198.51.100.1:60000发送给B
- B立即发送UDP包到该地址:`源地址 10.0.0.200:12345 → 目标 198.51.100.1:60000`
- 此操作在B的NAT创建映射:`10.0.0.200:12345 → 203.0.113.2:55000`
- 同时A发送UDP包到B的公网地址:`192.168.1.100:54321 → 203.0.113.2:55000`
5. **穿透成功**:
- B的入站包到达A的NAT时,因已有映射记录(步骤4中A发出的包创建),NAT允许转发
- 同理,A的包到达B的NAT时也被放行
- 双方建立直接UDP连接,开始传输视频数据
> **关键点**:STUN仅用于发现公网地址,实际穿透依赖双方同时发起的"打洞"操作。此流程适用于锥型NAT,对称NAT需要更复杂的ICE协议。
阅读全文
相关推荐




















