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

相关推荐
M78佐菲5 小时前
Linux学习笔记:TCP协议
linux·笔记·学习·tcp/ip·算法
Brilliantwxx5 小时前
【Linux】 进程(9)程序与进程地址空间(基础+进阶+面试题)
linux·运维·服务器·开发语言·c++
不怕犯错,就怕不做6 小时前
git prune 自动删除本地记录中那些远程已经不存在的分支引用
linux·服务器·git
噜~噜~噜~6 小时前
操作系统笔记-2.3.5.1.1生产者-消费者问题
笔记·操作系统
weixin_416667967 小时前
【无标题】
运维·服务器·网络
予昊7 小时前
从零实现“在线五子棋对战“:WebSocket 实时通信 + 段位匹配
java·开发语言·网络·websocket
一池秋_8 小时前
arm低配linux设备,桌面应用冷启动提速方法
linux·运维·arm开发
惜离殇8 小时前
从零开始的敲代码生活--Linux应用软件(文件操作基础1)
linux·c语言·文件操作·标准io
上海云盾-小余9 小时前
流量攻击复盘:为什么 WAF 完好,业务依旧瘫痪
运维·服务器·网络
戴西软件9 小时前
戴西iDWS.3DViz Suite数据轻量化可视化软件,从传统桌面软件向云端协同的重大突破
大数据·运维·网络·人工智能·机器学习·3d