§ 1.5 · Sub-chapter

数据包 · Packet 篇

The Atom of the Internet

互联网发送信息,从来不是一整块扔过去——而是先切成一小块一小块,每块叫一个"数据包"(Packet)。这些包独立走自己的路,到了目的地再拼回来。这个看似简单的设计,是互联网能稳定运转 50 年的核心秘密。

生活场景
📦 你搬家,但不会"一次性搬所有家具"

你不会叫一辆大卡车把所有家具一次搬走——你会把沙发拆成几块、把书装箱、把餐具分门别类包好,每一箱都贴上标签:"厨房"、"客厅"、"书房",到了新家再拼起来。
为什么要这么做?
① 卡车装不下整家当;
② 一箱丢了还能单独补,不用全部重搬;
③ 不同的箱子可以走不同的路(有的走高速、有的走船)——哪条快到哪。
网络发数据,逻辑完全一样。大包拆小包、每个包贴序号、到了目的地再拼起来——这就是为什么你的视频哪怕跨越半个地球,画面也是完整流畅的。

一个数据包长什么样

每个数据包大致分两块——头部(Header)载荷(Payload)

部分类比装的是什么
头部 · Header快递面单源地址、目标地址、序号、长度、协议类型、校验码
载荷 · Payload快递内容真正的数据——可能是网页代码的一小段、图片的一个分片、视频的一帧
Analogy · 快递包裹

一个快递包裹里——面单是"头部"(收件人、寄件人、单号、重量),里面的东西是"载荷"。
快递公司只看面单就能决定这包往哪送——根本不需要打开看里面是书还是袜子。
数据包也一样——路由器只读头部,不关心载荷里装的是什么字节。

包可以有多小?可以有多大?

数据包不是想多大就多大——受一个叫 MTU(Maximum Transmission Unit)的限制:以太网默认是 1500 字节。超过这个大小,就必须切片。

场景典型包大小备注
普通以太网1500 B最常见的 MTU
数据中心专用 Jumbo Frame9000 B减少头部开销,效率更高
语音 / 视频流几十到几百 B小包降低延迟
纯 ACK 确认包40-60 B只有头没有载荷

为什么要拆小?三个原因

为什么"绕路"也能拼回去

这是新手最容易困惑的一点——包走的路线不同,到达时间不同,怎么保证最后拼出来的内容是正确的?答案是序号

生活场景
🧩 把 100 张纸装进 10 个信封寄出

你有一份 100 页的报告,但每个信封最多塞 10 页——你只能拆成 10 个信封,分别寄给朋友。
① 你给每个信封标注:"第 1 页到第 10 页"、"第 11 页到第 20 页"……
② 朋友收到所有信封后,按编号排好,从 1 拼到 100。
③ 如果第 5 个信封没到,朋友就告诉你:"请重发第 5 封。"——不用重发全部 10 封。
这就是 TCP 协议做的事——给每个字节一个序号,按序号排序、按序号确认、按序号重传。

数据包的"生命周期"

1. 诞生

你的应用程序(比如浏览器)构造一份数据,TCP 协议栈把它切成若干段,每段加序号、加校验和,封装成 TCP 包。

2. 加 IP 头

TCP 包再被 IP 层包裹——加上源 IP 和目标 IP。现在它能被路由器识别了。

3. 加 MAC 头

IP 包再被以太网层包裹——加上源 MAC 和下一跳路由器的 MAC。现在它能从你家网卡出去了。

4. 一跳一跳转发

包经过你家路由器 → 运营商骨干 → 骨干网 → 对方运营商 → 对方路由器——每跳都会看一眼目标 IP,决定下一跳去哪。

5. 抵达目标

对方机器收到包,反过来一层一层"剥皮"——MAC 头撕掉、IP 头撕掉、TCP 头撕掉——剩下的就是真正的数据。

6. 拼装回完整内容

所有包都到齐了,TCP 按序号排序、检查有没有缺——齐了,交给应用程序(浏览器)渲染。

Analogy · 洋葱

一个完整的数据包像一颗洋葱——MAC 头在最外层,IP 头在中间,TCP 头在更里,数据在最心
每过一台路由器,路由器会撕掉外层(MAC 头),换上新的(自己的 MAC 头)继续往前送。最终目标机器一层层撕到最里,才看到真正的数据。

包丢了怎么办

你刚才看这篇文章,经过了多少数据包

粗略估算:本页 HTML + 样式 + 字体 + 图片 ≈ 300KB。
按每包 1500 字节算,大约需要 200 个数据包,从 Cloudflare 服务器发到你手机。这 200 个包跨越了十几个路由器,可能走了3-5 条不同路径,最终在 200 毫秒内全部到齐——你完全无感知。

Recap · 收束

数据包是互联网的"原子"——小而独立、贴序号、走自己的路、到了再拼
这个看似简单的设计,让互联网能做到"任何一条线路断了都不影响整体"、"任何一段内容丢了只重传那一点"、"所有人共享同一张网而不互相堵死"。
下一次你看到"网络拥塞"、"丢包"、"MTU"这些词,脑海里就该浮现出"快递分箱"的画面。

Xue Hai Wu Ya · Network · § 1.5 · Packet