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
相关推荐
张书名27 分钟前
高性能服务器配置经验指南3——安装服务器可能遇到的问题及解决方法
运维·服务器
christine-rr1 小时前
【25软考网工】第三章(3)虚拟局域网VLAN
网络·笔记·软考
bing_1581 小时前
Nacos 客户端 SDK 的核心功能是什么?是如何与服务端通信的?
服务器·数据库·nacos 通信
落笔画忧愁e1 小时前
数据通信学习笔记之OSPF的基础术语-距离矢量路由协议
网络·智能路由器
jingshaoyou1 小时前
【防火墙 pfsense】1简介
网络·智能路由器·防火墙
Jackilina_Stone1 小时前
【网工第6版】第5章 网络互联⑦
网络·软考·网络互联·网工·第5章 网络互联
supermapsupport1 小时前
SuperMap GIS基础产品FAQ集锦(20250421)
服务器·webgl·supermap·idesktop
前进的程序员1 小时前
在Linux驱动开发中使用DeepSeek的方法
linux·运维·服务器·人工智能
福大大架构师每日一题1 小时前
docker v28.1.1 正式发布!修复关键Bug,网络与安全性再升级
网络·docker·bug
kaixin_learn_qt_ing1 小时前
了解通信链路
网络