- CTF126
- 计算机基础122
- 复习重点95
- Web安全30
- Pwn18
- 逆向工程18
- 密码学17
- Misc15
- AI安全14
- 方法论8
- 基础通识5
- PDF3
- 开源项目2
- 博客搭建2
- AI 创作1
- 前端工程1
- 漏洞挖掘1
- 幻灯片1
- OSINT1
一个问题:几十亿台设备怎么寻址
如果让你设计一个全球网络,第一步是什么?答案是:给每台设备分配一个唯一地址。但 IPv4 地址只有 32 位,能表示 2^32 ≈ 43 亿个地址。听起来很多,但 2025 年全球联网设备已经超过 200 亿台。43 亿根本不够分。
IPv4 的设计者(1970 年代)显然低估了互联网的规模。1981 年 RFC 791 发布 IPv4 时,全球计算机数量才几万台。没人想到 40 年后连冰箱、灯泡都要 IP。
地址不够用是 IPv4 的根本困境。围绕这个困境,诞生了一整套 IP 协议族:子网划分(CIDR)、网络地址转换(NAT)、私有地址、IPv6。下面我们从"为什么要有 IP 地址"开始,一步步走完这套体系。
一个问题:公网 IP 不够怎么办
1990 年代初,互联网开始商业化。中国第一批网民拿到的不是公网 IP,而是 10.0.0.0/8 这种私有地址。运营商出口设备做一件事:把内部私有 IP 翻译 成公网 IP,再把外网回来的包翻译回去。用户的电脑不知道这件事,外部服务器也以为在跟一个普通公网 IP 通信。
这就是 NAT(Network Address Translation)——网络地址转换。它是 IPv4 枯竭的"创可贴",让互联网多撑了 20 多年。今天中国家庭宽带 100% 是 NAT,企业出口 90% 是 NAT。如果没 NAT,IPv4 早就用完了,IPv6 会被迫提前 10 年普及。
网络层到底在管什么
把数据链路层想象成"两台相邻设备之间的对话",物理层想象成"线缆里跑的电子"。那网络层要解决的问题是:跨越多个网络,把一个包从北京送到纽约。
你打开 https://www.example.com 看到页面,背后数据可能跨了 15 个路由器、3 个大洲、几千公里光缆。每一个路由器在网络层做决策:下一跳给谁?走哪条路?这些决策合起来就是网络层的全部工作。
网络层要解决三个核心问题:
- 寻址:给每台设备分配全球唯一的 IP
- 路由:决定一个包从源到目的走哪条路
- 转发:每个路由器收到包后怎么快速决定下一跳
一个问题:路由器怎么知道路
假设全球有 10 万台路由器,每台连着几个网络。路由器 A 知道它的直连网络是 X、Y、Z,但它不知道北京的用户怎么去纽约。这件事没有人能预先知道——网络拓扑一直在变(新运营商上线、链路故障、设备维护)。
如果让你设计一套机制让全球路由器能"互相学习"到达信息,你会怎么设计?
这是路由协议要解决的核心问题。从 1980 年代开始,网络工程师们想了 3 种主流方案:
- 距离向量(RIP):每台路由器告诉邻居"我能到哪些网,距离多少"
- 链路状态(OSPF):每台路由器告诉所有人"我连了哪些邻居,链路开销多少"
- 路径向量(BGP):每台路由器告诉邻居"我能到这些 AS,沿途经过哪些 AS"
一个问题:怎么可靠地建立连接
你想给朋友寄一封信。先打个电话确认"我现在寄可以吗",朋友说"可以",你说"好"。三句话完成确认,对方知道你真的要寄,你知道对方准备好了,可以开始寄了。
这通电话的逻辑,就是 TCP 三次握手的本质。问题是:为什么是三次不是两次或四次?
我们一步步推演。
两次握手为什么不够
假设两次握手就够:
- 客户端发 SYN("我要连你")
- 服务器回 SYN+ACK("好的,同意")
一个问题:网络满了会怎样
你在一段公路上开车。前方堵了 10 公里,所有车都慢下来,挤在一起。最后一公里完全不动。这就是网络拥塞——路由器队列满了,新到的包被丢,丢包又触发重传,重传又让队列更满,雪崩。
1986 年互联网经历了一次"拥塞崩溃"——LBL 到 UC Berkeley 的链路 400 米距离,理论 32Kbps 带宽,因为 TCP 不断重传拥塞丢失的包,实际吞吐量降到 40bps,1/800。Van Jacobson 1988 年发表那篇经典论文《Congestion Avoidance and Control》,发明了 TCP 拥塞控制四大算法,从此互联网没再大规模崩溃过。