📄 一句话概括
只改 IP 会让【同端口的两条内部连接】撞车——改端口才能区分给谁,所以这项技术其实是 NAPT(IP 伪装)。
📝 本节和前面几节的关系
3.4.2 提了端口改写;本篇讲清它为什么必不可少。
一、撞车的例子
内部 A(…1.10:51234) 与 B(…1.11:51234) 同时访问同一服务器; 若都改成源 IP 202.1.2.3 而端口不变——回包分不清给谁。
二、NAPT
把端口也换成路由器自己的端口号(60001/60002), 对照表记住【路由器端口 ↔ 内部地址+端口】; 严格说这叫 NAPT(Network Address Port Translation)。
三、动手 Demo:端口为什么要改写
撞车场景与解法:
print('A(192.168.1.10:51234) -> 服务器 X')
print('B(192.168.1.11:51234) -> 服务器 X')
print('若端口不改 -> 回包分不清给谁!')
print('改端口: 60001->A, 60002->B')
实跑输出:
--------------------------------------------------------------------
端口为什么要改写
--------------------------------------------------------------------
只改 IP 会撞车,看一个例子:
内部 A(192.168.1.10:51234) -> 服务器 X
内部 B(192.168.1.11:51234) -> 服务器 X
两条连接出去都改成源 IP 202.1.2.3
若端口不改 -> 回包分不清给谁!
改写端口后:60001 给 A、60002 给 B——
这就是这项技术叫 **NAPT(IP 伪装)** 的原因。
⭐ 2026 现状:这也是 IPv6 想解决的【端到端被破坏】。
⭐ 2026 现状:NAPT 也带来两端之间【端到端被破坏】的问题—— P2P 打洞、IPv6 端到端回归都跟它有关。
30 秒实验
- 查查家用路由器标称的 NAT 会话数上限。
- 想想为什么服务器通常放在 NAT 之外(或做端口映射)。
- 用自己的话解释 NAPT 与 NAT 的区别。
常见误区
- 以为端口是【顺便】改的——不改就撞车,是必需。
- 以为外部能主动连内网——对照表只认自己开过的会话。
自测三问(点开对答案)
1. 为什么必须改端口? —— 区分同源端口的多条内部连接。 2. 这项技术的准确名称是? —— NAPT(IP 伪装)。 3. 对照表记什么对应关系? —— 路由器端口 ↔ 内部地址+端口。- ☐ 下一节(3.4.4 从互联网访问公司内网)
相关笔记
- 从私有网络到互联网间的通信(NAT) — 12 课同款
- 从互联网访问公司内网 — 反向访问怎么做
- 🔌 网络是怎样连接的 · 索引