解决IP不够用的问题

1. 根本矛盾:僧多粥少

IPv4 地址总共只有 43 亿个(2\^{32})。

早在 2011 年,全球的 IPv4 地址就已经被分配光了。但是现在你家里可能就有 5 台设备(手机、电脑、iPad、电视...),全世界加起来设备早已超过几百亿。

如果不解决这个问题,大约 90% 的人都没法上网。


2. 解决方案:公网 IP vs 私网 IP

为了省着用,工程师们想出了一个绝妙的办法:"只有在公海上航行才需要合法执照,在自家小河沟里划船随便叫什么都行。"

于是,IP 地址被划分成了两类:

  • 公网 IP (Public IP): 全球唯一,必须花钱向运营商申请。这才是真正的"互联网门牌号"。
  • 私网 IP (Private IP): 免费,随便用,但是出不去互联网
    • 你最眼熟的 192.168.x.x
    • 还有 10.x.x.x
    • 以及 172.16.x.x

现在的家庭网络架构通常是这样的:

  • 你家里的所有设备(手机、电脑) :用的全是私网 IP(比如 192.168.1.5, 192.168.1.6)。这些 IP 在互联网上是无效的,出了你家门就是废纸。
  • 你的路由器 :它是全家唯一的"富豪",拥有一个运营商分配的公网 IP(比如 110.242.68.4)。

Shutterstock


3. 核心魔术:路由器如何"偷天换日"?

既然只有路由器有公网 IP,那你的手机是怎么刷到抖音的呢?全靠路由器的 NAT 功能。

我们可以把路由器想象成一家大公司的收发室

场景模拟:你要给百度写信
  1. 你(内网设备):
    • 你想发请求给百度。
    • 寄信人:192.168.1.5 (你的内网 IP)
    • 收信人:百度 IP
    • 问题: 这封信如果直接扔到公网,回信时百度找不到 192.168.1.5 是谁(因为全世界有一亿人的电脑都叫这个)。
  1. 路由器(NAT 转换):
    • 信到了路由器这里,被拦截下来。
    • 路由器把信封上的"寄信人"擦掉,改成路由器自己的公网 IP
    • 关键动作: 路由器在自己的小本本(NAT 映射表)上记一笔:

"刚才我用我的名义帮 192.168.1.5 发了一封信去百度,如果百度回信了,记得转给它。"

  1. 百度(服务器):
    • 收到信,一看寄信人是路由器的公网 IP。
    • 处理完,把回信发给路由器。
  1. 路由器(逆向转换):
    • 收到百度的回信。
    • 查小本本:"哦,这是刚才帮 192.168.1.5 发的那个请求的回信。"
    • 把信封上的"收信人"擦掉,改回 192.168.1.5
    • 把信转交给你。

结果: 你完全感觉不到中间发生了替换,你以为是你直接连上了百度。


4. 进阶:如果全家人都在刷百度怎么办?(NAPT)

你可能会问:"如果我和我爸同时访问百度,百度回了两封信,路由器怎么知道哪封是给我的,哪封是给爸爸的?"

这时候,传输层 的知识(端口号)就派上用场了!这叫 NAPT (Network Address Port Translation)

路由器的小本本记得更详细:

|---------------------|----------|---------------|------------|--------|
| 内网 IP | 内网端口 | 转换后的公网 IP | 分配的新端口 | 目标 |
| (192.168.1.5) | 1001 | 110.242.68.4 | 8001 | 百度 |
| (192.168.1.6) | 1001 | 110.242.68.4 | 8002 | 百度 |

  • 当路由器收到发给 110.242.68.4:8001 的数据包,就知道是给你的。
  • 当路由器收到发给 110.242.68.4:8002 的数据包,就知道是给爸爸的。

5. 总结

  • NAT 的本质:一个公网 IP 代表无数个内网设备上网。
  • 好处: 极大地节省了 IPv4 地址(原本需要 10 个 IP 的家庭,现在只要 1 个)。
  • 副作用: 外网无法主动访问内网(因为外网不知道你在内网的端口映射)。这就是为什么你在家里搭个网站,外面的人直接输 IP 访问不到你的原因(除非你在路由器上做"端口映射")。

相关推荐
polarislove02142 小时前
8.1 时钟树-嵌入式铁头山羊STM32笔记
笔记·stm32·嵌入式硬件
zly35002 小时前
linux查看正在运行的nginx的当前工作目录(webroot)
linux·运维·nginx
QT 小鲜肉2 小时前
【Linux命令大全】001.文件管理之file命令(实操篇)
linux·运维·前端·网络·chrome·笔记
qq_254674413 小时前
2025年软考网络规划设计师近期论文考题及范文分享
网络
问道飞鱼3 小时前
【Linux知识】Linux 虚拟机磁盘扩缩容操作指南(按文件系统分类)
linux·运维·服务器·磁盘扩缩容
_F_y3 小时前
Socket编程TCP
网络·网络协议·tcp/ip
egoist20233 小时前
【Linux仓库】超越命令行用户:手写C语言Shell解释器,解密Bash背后的进程创建(附源码)
linux·c语言·bash·xshell·环境变量·命令行参数·内建命令
Lenyiin3 小时前
《 Linux 修炼全景指南: 八 》别再碎片化学习!掌控 Linux 开发工具链:gcc、g++、GDB、Bash、Python 与工程化实践
linux·python·bash·gdb·gcc·g++·lenyiin
hetao17338373 小时前
2025-12-21~22 hetao1733837的刷题笔记
c++·笔记·算法