核心 · Key Idea
一句话:发送方从应用层往下走,每一层都在数据外面加一个本层的头部(有时还加尾部);接收方反过来一层层拆开。这个过程叫封装 / 解封装。
是什么#
应用程序写出的就是一段字节,比如一个 HTTP 请求:
GET /index.html HTTP/1.1
Host: example.com
它不会"赤裸"地跑在网线上。从上往下走的过程:
HTTP 报文 ← 应用层
[TCP 头 | HTTP 报文] ← 传输层
[IP 头 | TCP 头 | HTTP 报文] ← 网络层
[以太网头 | IP 头 | TCP 头 | HTTP 报文 | 以太网尾] ← 链路层
比特流 ← 物理层
每加一层头部,都是为了让下一层知道怎么处理这个包。
打个比方#
打个比方 · Analogy
你写完一封信(HTTP 报文),先装进信封 1(TCP,写明发件号);再放进信封 2(IP,写明最终地址);最后给快递员打包成信封 3(以太网,写明本段从哪到哪)。每个中转站只拆最外层信封看下一段送哪,不拆里面。
关键概念#
Frame帧
链路层的 PDU。以太网帧有源 / 目的 MAC、类型、CRC。
Packet包
网络层的 PDU。IP 包有源 / 目的 IP、TTL、协议号。
Segment段
TCP 的 PDU,含端口、序号、窗口。UDP 称 datagram。
MTU最大传输单元
链路层一帧能装的最大字节数(以太网默认 1500)。超过就要分片。
Payload载荷
本层头部之后真正要传输的数据。
怎么工作#
中间每个路由器到了网络层就会重写以太网头(因为下一跳变了),但不会动 IP 以上。
实操要点#
- MTU 不匹配就麻烦:IP 层会分片(fragmentation)。VPN / 隧道场景常见 MTU 偏小,TCP 性能下降。可以
ping -s 1472 -M do测最大不分片大小。 - 抓包就是按层看头:Wireshark 把每个包按 frame / IP / TCP / HTTP 展开,手动撕了给你看。
- 每层有最大长度限制:以太网 1500、IP 包理论 65535、TCP segment 受 MSS 限制。
- 加密发生在哪层很关键:HTTPS 在应用 / 传输之间加 TLS,链路层看到的还是密文 —— 但 IP 头还是明文,运营商能看到你访问哪个 IP。
易混点#
头部 (Header)
多数协议只有头部。
比如 IP、TCP。
比如 IP、TCP。
尾部 (Trailer)
链路层(以太网)会加 4 字节 CRC 校验尾部。