路由器中NAT(Network Address Translation)网络地址转换

1. 主机内部的端口

  • 在一台主机上,每个网络应用(浏览器、SSH 客户端、游戏等)都会绑定一个“源端口”(通常是 1024–65535 之间的临时端口),操作系统内核借此区分不同的进程/连接。
  • 当 A 进程想和 B 服务器通信时,它选一个源端口(如 12345),目标是服务器的 IP+端口(如 180.101.49.11:443)。
Outbound Packet (from PC A):
源 IP:  192.168.1.100  
源端口: 12345            ← A 进程的端口
目  标 IP: 180.101.49.11  
目标端口: 443

2. NAT 路由器的“重写”动作

  1. 接收:路由器收到这个发往互联网的数据包。

  2. 修改源地址和源端口

    • 把源 IP 192.168.1.100 → 换成公网 IP 123.45.67.89
    • 把源端口 12345 → 换成一个路由器随机/预分配的外网端口,比如 60001
  3. 记录映射表

    内网 (IP:Port)       ↔ 外网 (IP:Port)
    192.168.1.100:12345  ↔ 123.45.67.89:60001
    
  4. 转发:把修改后的包发到互联网。


3. 流量返回时的处理

当互联网服务器把响应发回 123.45.67.89:60001,路由器:

  1. 查表:发现这条记录对应内网 192.168.1.100:12345
  2. 还原包头:把目的 IP/端口从 123.45.67.89:60001 改回 192.168.1.100:12345
  3. 转发到主机:内核看到目标端口 12345,就交给发起请求的进程。

4. 为什么要改端口?

  • 如果不改端口,多个内网主机同时用同一个源端口(比如都用 12345),路由器就无法区分哪个包给哪台机器/进程。
  • 通过改成不同的外网端口,路由器就能一一对应,每个连接都有唯一的外网 (IP, Port)

5. 重点回顾

  • 路由器并不“为每个连接启动进程”,它只是在内存里维护一张“内网 IP:端口 ↔ 外网 IP:端口” 的映射表。

  • 真正的进程端口(如 12345)只在主机内部被使用,路由器只是在转发时改写包头而已。

  • 端口始终是“端到端”的概念:

    • 主机看的是“内网 IP + 原端口”
    • 互联网看的是“公网 IP + 新端口”

这样就解决了“多台机器共享一个公网 IP 时,如何正确区分不同进程/连接”的问题。希望这个梳理能让你对 NAT 中端口转换的全过程更加清晰!

这种映射表应该会很大,因为一台电脑可能会和不同服务器建立连接,然后局域网中又有多台电脑

在 NAT 路由器中维护的映射表确实可能很大,因为:

  • 一台内网电脑可能同时访问多个公网服务器(浏览器开多个标签页、微信、QQ、Steam等);
  • 每一个 TCP/UDP 连接(或“会话”)都需要单独映射一条记录;
  • 局域网里有多台设备,每台都在做这些连接。

✅ 映射表的实际规模举例

假设你有 10 台电脑

每台电脑:

  • 浏览器开 10 个网页(10 个连接)
  • 正在用微信(5 个连接)
  • 正在打游戏(3 个连接)
  • 还有系统更新、NTP 校时等后台请求(2 个连接)

总连接数 ≈ 10 × (10 + 5 + 3 + 2) = 200 条连接映射记录

这还只是比较轻量的场景。比如公司网络有 100 台设备,那就成了几千条甚至上万条连接。


✅ NAT 路由器是怎么应对的?

1. 使用哈希表 / 哈希映射数据结构

  • 路由器通常使用高效的数据结构(如哈希表)来维护这张表,查找/插入/删除都在常数时间复杂度完成;
  • 映射项按五元组索引:
    源内网IP + 源端口 + 目标IP + 目标端口 + 协议(TCP/UDP)

2. 端口重用范围大

  • 路由器有 65535 个端口(除去保留的一部分),大多数用于 NAT 分配。
  • 在一个公网 IP 下,可以同时维护几万个不同的 (公网IP:端口) 映射。

3. 设置连接超时清理

  • 路由器会定期清理长期不活动的连接,释放资源。

    协议空闲连接超时时间(常见)
    UDP30~60 秒(无状态协议)
    TCP300 秒(5 分钟)或更久

所以如果一个连接建立后长时间没数据传输,就会被 NAT 表清理掉。


4. 大型企业或运营商使用“会话容量更大的设备”

  • 普通家用路由器支持几千到几万个 NAT 映射;
  • 企业级防火墙/路由器(如 Cisco、华为设备)可支持百万级连接。

✅ 总结

  • NAT 映射表确实会变大,尤其是局域网设备多、访问频繁的时候;
  • 但现代路由器通过高效算法和超时清理机制来应对;
  • 所以哪怕一台主机同时连接多个服务、局域网中设备众多,只要 NAT 设备容量足够,都能正常运作。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值