解决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 访问不到你的原因(除非你在路由器上做"端口映射")。

相关推荐
解局易否结局39 分钟前
昇腾CANN上手笔记:从cann-learning-hub学会ops-transformer
笔记·深度学习·transformer
TechWayfarer6 小时前
查询IP所在地的3种方案:从API到离线库,风控场景怎么选?
开发语言·网络·python·网络协议·tcp/ip
摇滚侠6 小时前
Java 零基础全套教程,集合框架,笔记 153-163
java·开发语言·笔记
hj2862517 小时前
Linux 磁盘管理 + 文件系统 + LVM 笔记整理
linux·运维
ゆづき7 小时前
计算机数据存储全解:从底层进制转换到存储介质演进
笔记·学习·生活
小+不通文墨7 小时前
树莓派玩转EMQX的常用指令清单
经验分享·笔记·学习
.YYY8 小时前
Linux--如何安装rockyLinux9虚拟机
linux
kdxiaojie8 小时前
U-Boot分析【学习笔记】(12)
linux·笔记·学习
ylscode9 小时前
微软Exchange Server曝高危零日漏洞:朝鲜黑客利用“Toast攻击“入侵企业邮件系统
网络·安全·web安全
玄米乌龙茶1239 小时前
LLM成长笔记(五):提示词工程与模型调用
人工智能·笔记