NAT NAPT

NAT

NAT(Network Address Translation,网络地址转换) 主要用于在不同网络(如私有网络和公共互联网 )之间进行 IP 地址转换 ,解决IP 地址短缺 问题,并提供一定的安全性

  • IPv4 地址是 32 位 (最多 2^32 ≈ 43 亿 个地址),但全球设备数量远超这个范围。
  • 私有 IP 地址(如 192.168.1.0/24)不能直接在公网使用,必须通过 NAT 转换成公网 IP。

NAT IP转换过程

当主机A私有IP地址访问服务器公有IP时,先把数据发给路由器,NAT 路由器将报文的源地址从 10.0.0.10 替换成全局的 IP 202.244.174.37;并在转换表中建立私有IP和公有IP的映射关系。

当服务器返回报文时,NAT 路由器收到外部的数据时, 再根据转变表的映射关系,把目标 IP 从 202.244.174.37 替换回10.0.0.10;

当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系;

NAPT

那么问题来了, 如果局域网内, 有多个主机都访问同一个外网服务器 , 那么对于服务器返

回的数据中, 目的 IP 都是相同的 . 那么 NAT 路由器如何判定将这个数据包转发给哪个
局域网的主机?

这时候就不能但使用IP建立联系,要用IP+port。

同一个子网中每个主机的私有 IP 是唯一的 ,即使端口号一样,也能保证唯一性。IP+端口号保证了在同一个子网中,每台主机以及主机上客户端的唯一性。

NAPT,转换的公网IP一样,但可以分配不同的端口号,也保证了唯一性。

这样映射双方都保证了唯一性。
再来想一下,同一子网中主机的私有IP不同,但不同子网的私有IP可能会相同。如果这两个子网有同一个路由器,在不同子网的两个主机私有IP相同,端口号也相同,访问同一个服务器,会怎么样?

即使不同子网的主机 IP + 端口号相同,NAPT 仍然能基于 NAT 端口号 + 子网信息( NAPT 设备用来区分不同子网的标识信息:入接口 eth 源子网 VLAN 标识**)唯一映射,确保数据包不会错误地送达另一台主机。**

子网 A 的 192.168.1.100:5001 → 203.0.113.1:30001

子网 B 的 192.168.1.100:5001 → 203.0.113.1:30002

服务器返回数据时,NAPT 设备根据 NAT 端口号找到正确的原始子网,并正确转发回去。

其他 NAT 方案:

  • 策略 NAT(Policy-Based NAT)

    • 不同子网使用不同的 NAT 端口范围,确保 NAT 端口不重叠。
    • 例如:
      • 子网 A:NAT 端口 30000-31000
      • 子网 B:NAT 端口 31001-32000
  • 使用多个公网 IP

    • 如果 NAT 设备支持多个公网 IP,可以为不同子网分配不同的公网 IP ,避免 NAT 端口冲突:
      • 子网 A → 203.0.113.1
      • 子网 B → 203.0.113.2
相关推荐
zzzzzz31015 小时前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
XIAOHEZIcode16 小时前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220701 天前
如何搭建本地yum源(上)
运维
大树884 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠4 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质4 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
小宇宙Zz4 天前
Maven依赖冲突
java·服务器·maven
Inhand陈工4 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
网络研究院4 天前
2026年网络安全
网络·安全·法律·法规·趋势·发展
酣大智4 天前
ARP代理--工作原理
运维·网络·arp·arp代理