当前位置: 首页 > news >正文

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 转换表实现地址的双向翻译。




场景设定

  • 公网服务器:IP203.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,完全不知道内网有两个不同的设备
http://www.jsqmd.com/news/722225/

相关文章:

  • 别再为6D位姿估计数据发愁了!用BlenderProc+BOP工具包,从零合成你的专属数据集(附避坑代码)
  • AI初创公司Profluent与礼来达成高达22.5亿美元的基因编辑合作
  • 群晖NAS安装Realtek USB网卡驱动:突破千兆限制的完整教程
  • PvZ Toolkit修改器:3大核心功能彻底改变植物大战僵尸游戏体验
  • Go语言的runtime.MemProfile方法论
  • HTML5与PPS在嵌入式HMI开发中的实践与优化
  • 在Ubuntu 20.04上搞定Ipopt和CasADi:一个机器人工程师的踩坑与填坑实录
  • 终极视频转PPT指南:3步从视频中提取高质量幻灯片
  • 逆向工程入门:手把手教你用Bytecode Viewer分析Spring Boot Jar包结构
  • 匿名管道实例
  • 开源鸿蒙 Flutter 实战|编译错误修复:Icons.active_sessions 不存在问题解决
  • 如何在Windows系统中使用Mem Reduct实现多语言内存监控:终极配置指南
  • 抖音下载器终极指南:3步免费获取高清无水印视频的完整方案
  • 医疗无线脚踏开关技术解析与应用实践
  • 飞书文档转Markdown:5分钟搞定文档格式转换的终极指南
  • AI岗位暴涨12倍成“香饽饽”!2026求职市场回温,高薪高要求成主流
  • 智源社区@2050 | 从大脑到代码,你真能被上传吗?
  • 告别MATLAB?手把手教你用开源QT库实现专业级信号频谱与瀑布图分析
  • 第12篇 | 结语:东数西算背后的生死账,为什么宁愿把数据传三千公里?
  • 2026绵阳特殊儿童康复机构可靠度top5技术维度解析:绵阳特殊儿童康复中心,绵阳特殊教育康复机构,实力盘点! - 优质品牌商家
  • AI算法在矿山罐笼超员检测中的应用
  • 论文AI检测通关攻略:4个实用技巧帮你快速达标
  • 告别FTP!用Windows自带的pscp工具,5分钟搞定服务器文件上传下载
  • Logisim避坑指南:从连线混乱到电路封装,新手最容易踩的5个雷区及解决方法
  • 2026年国内膜结构景观棚专业厂家TOP5实测排行 - 优质品牌商家
  • 7-Zip完全指南:免费开源压缩工具的超详细使用教程
  • 告别抢票焦虑:DamaiHelper如何用Python脚本让你轻松买到演唱会门票
  • CompactGUI终极指南:如何免费为你的游戏节省60%硬盘空间
  • 2026年4月有实力的铝艺大门地址如何选推荐榜:铸铝门、铝艺对开门、铝艺庭院门、铝艺围栏门厂家选择指南 - 海棠依旧大
  • 2026年广州越秀搬家公司top5实测排行一览:广州荔湾搬家,设备搬运吊装,跨城搬家,钢琴搬运,优选指南! - 优质品牌商家