NAT工作机制(中间人为请求和响应搭桥牵线)

NAT(Network Address Translation,网络地址转换)是解决 IPv4 地址不足的核心技术,它让多个内网设备共用一个公网 IP 访问互联网,同时隐藏内网地址,提升安全性。下面用通俗的方式拆解它的工作流程:


一、核心原理:"地址翻译官"

NAT 设备(通常是路由器 / 防火墙)会维护一张NAT 转换表,记录内网地址与公网地址 / 端口的映射关系,实现内网 ↔ 公网的双向地址转换。


二、核心工作流程(以常见的 PAT/NAPT 为例)

PAT(Port Address Translation,端口地址转换)是最常用的 NAT 模式,也是我们家里路由器的工作方式,它通过端口号区分不同内网设备的连接,实现 "多对一" 映射。

1. 内网设备访问外网(出方向流程)

  1. 内网主机发送请求 内网主机(IP:192.168.1.10:1025)访问外网服务器(IP:100.100.100.100:80),数据包源 IP / 端口为 192.168.1.10:1025,目的 IP / 端口为 100.100.100.100:80

  2. NAT 路由器接收并转换路由器收到数据包后,查询 NAT 转换表:

    • 若没有映射记录,就为这个连接分配一个公网端口(比如 60001)。
    • 在 NAT 表中添加一条记录:192.168.1.10:1025 ↔ 公网IP:60001
    • 修改数据包的源 IP / 端口为 公网IP:60001,目的 IP / 端口保持不变。
  3. 转发修改后的数据包路由器将修改后的数据包发送给外网服务器,服务器看到的源地址只有路由器的公网 IP,完全不知道内网主机的真实地址。


2. 外网服务器响应请求(入方向流程)

  1. 外网服务器返回响应 服务器收到请求后,向 公网IP:60001 发送响应数据包,目的 IP / 端口为 公网IP:60001,源 IP / 端口为 100.100.100.100:80

  2. NAT 路由器接收并反向转换路由器收到响应数据包后,查询 NAT 转换表:

    • 找到 公网IP:60001 对应的内网映射记录:192.168.1.10:1025
    • 修改数据包的目的 IP / 端口为 192.168.1.10:1025,源 IP / 端口保持不变。
  3. 转发到内网主机 路由器将修改后的响应数据包转发给内网主机 192.168.1.10,主机收到响应,完成一次通信。


三、NAT 转换表的核心作用

NAT 表是整个机制的核心,它的每条记录包含:

表格

字段 作用
内网地址 / 端口 内网主机的真实地址
公网地址 / 端口 NAT 分配的公网映射地址
目的地址 / 端口 通信的外网服务器地址
协议类型 TCP/UDP/ICMP
超时时间 空闲一段时间后自动删除映射记录,释放公网端口

四、常见 NAT 模式对比

表格

模式 特点 适用场景
静态 NAT 一对一固定映射,一个内网 IP 对应一个公网 IP 内网服务器对外提供服务(如网站)
动态 NAT 多对多映射,内网 IP 从公网地址池中动态分配 企业内网批量访问外网
PAT/NAPT 多对一映射,通过端口号区分不同连接 家庭 / 小型网络,多个设备共用一个公网 IP

五、NAT 的优缺点

✅ 优点

  1. 解决 IPv4 地址不足问题,多个内网设备共用少量公网 IP。
  2. 隐藏内网地址,外网无法直接访问内网主机,提升安全性。
  3. 简化网络管理,内网地址变更不影响公网访问。

❌ 缺点

  1. 破坏端到端通信,外网无法主动访问内网设备(需端口映射 / 打洞解决)。
  2. 部分应用(如 P2P、IPsec VPN)会受 NAT 影响,需要特殊配置。
  3. 路由器需要额外处理地址转换,增加性能开销。

一句话总结 NAT 工作流程

内网设备发请求 → NAT 路由器记录映射、修改源地址 → 外网服务器响应 → NAT 路由器查询映射、修改目的地址 → 转发回内网设备,全程靠 NAT 转换表实现地址的双向翻译。




场景设定

  • 公网服务器 :IP 203.0.113.100,提供 HTTP 服务(端口 80)
  • NAT 路由器
    • 公网 IP:1.2.3.4
    • 内网网段:192.168.1.0/24
  • 内网主机 A192.168.1.10:1025(浏览器访问网页)
  • 内网主机 B192.168.1.20:2048(也访问同一个网页)

第一阶段:主机 A 发请求到服务器(出方向)

  1. 主机 A 发出请求包

    • 源 IP: 端口:192.168.1.10:1025
    • 目的 IP: 端口:203.0.113.100:80
    • 协议:TCP
  2. 路由器收到包,进行 NAT 转换路由器发现这是内网访问外网,开始处理:

    • 分配一个公网端口 60001
    • 在 NAT 表中添加一条记录:192.168.1.10:1025 ↔ 1.2.3.4:60001(目标:203.0.113.100:80
    • 修改数据包的源 IP 和端口 :新源:1.2.3.4:60001目的不变:203.0.113.100:80
  3. 路由器把修改后的包发给服务器服务器收到的包:

    • 源:1.2.3.4:60001
    • 目的:203.0.113.100:80服务器完全不知道有 192.168.1.10 这个地址,只知道是 1.2.3.4 发来的请求。

第二阶段:主机 B 也发请求到服务器(出方向)

几乎和主机 A 一样,但路由器会分配不同的端口:

  1. 主机 B 发出请求包

    • 源:192.168.1.20:2048
    • 目的:203.0.113.100:80
  2. 路由器收到包,再次 NAT 转换

    • 分配公网端口 60002
    • NAT 表新增记录:192.168.1.20:2048 ↔ 1.2.3.4:60002(目标:203.0.113.100:80
    • 修改源地址:新源:1.2.3.4:60002目的不变:203.0.113.100:80
  3. 路由器把包发给服务器服务器收到的包:

    • 源:1.2.3.4:60002
    • 目的:203.0.113.100:80服务器看到两个不同端口(6000160002),就知道是两个不同的连接请求。

第三阶段:服务器响应主机 A(入方向)

  1. 服务器给 1.2.3.4:60001 发回响应包

    • 源:203.0.113.100:80
    • 目的:1.2.3.4:60001
  2. 路由器收到响应,反向 NAT 转换路由器查 NAT 表:

    • 1.2.3.4:60001 对应的是 192.168.1.10:1025
    • 修改数据包的目的 IP 和端口 :新目的:192.168.1.10:1025源不变:203.0.113.100:80
  3. 路由器把包转发给主机 A主机 A 收到响应,完成这次通信。


第四阶段:服务器响应主机 B(入方向)

  1. 服务器给 1.2.3.4:60002 发回响应包

    • 源:203.0.113.100:80
    • 目的:1.2.3.4:60002
  2. 路由器收到响应,反向 NAT 转换路由器查 NAT 表:

    • 1.2.3.4:60002 对应的是 192.168.1.20:2048
    • 修改数据包的目的 IP 和端口:新目的:192.168.1.20:2048源不变:203.0.113.100:80
  3. 路由器把包转发给主机 B主机 B 收到响应,完成这次通信。


关键总结:为什么两个主机的响应不会搞混?

全靠 NAT 表 + 端口号

  • 路由器用不同的公网端口(60001 / 60002)区分不同内网主机的连接
  • 响应回来时,路由器根据端口号查 NAT 表,把包 "送回" 对应的内网主机
  • 服务器只看到一个公网 IP,完全不知道内网有两个不同的设备
相关推荐
丝雨_xrc2 小时前
Claude Opus 4.7 新手快速上手指南
大数据·网络·人工智能
Mr_sst2 小时前
文件上传并发控制:为什么选Redisson可过期信号量?(避坑指南)
网络·数据库·redis·分布式·安全架构
时空自由民.2 小时前
HTTP协议帧格式
网络·网络协议·http
汽车仪器仪表相关领域2 小时前
Kvaser Memorator R SemiPro:双通道CAN总线记录仪,汽车与工业测试的高性价比之选
大数据·网络·人工智能·功能测试·汽车·安全性测试
sdszoe49222 小时前
华为设备安全管理之路由器+ACL
网络·安全·华为·路由器+acl
Inhand陈工2 小时前
智能驾驶数据高可靠上云实战:EC3320+IR315双路冗余方案
网络·物联网·自动驾驶·智能路由器·边缘计算·腾讯云·信息与通信
byoass2 小时前
企业云盘全文检索实战:Elasticsearch集成与分布式搜索
网络·分布式·安全·elasticsearch·云计算·全文检索
云布道师2 小时前
阿里云 Tablestore 为 Hermes Agent 构建记忆系统最佳实践
网络·人工智能·阿里云
雨浓YN3 小时前
GKMLT通讯工具箱(WPF MVVM) - 02-Modbus RTU 与 TCP 报文格式、原理与CRC校验
网络·网络协议·tcp/ip