Layered Encapsulation · Field Guide
Frame · Packet · Port
这一页专门回答:数据从应用程序发出后,怎样一层层变成报文、报文段、IP 数据包、链路帧,最后变成比特?端口号又出现在哪一层,经过路由器之后哪些字段会变化?
先记一句:Frame 是链路层的一跳容器,Packet 通常指网络层 IP 数据包,TCP Segment / UDP Datagram 是传输层数据单元;Port 是传输层标识应用进程的逻辑编号,不是“包”的一种。
一、TCP/IP 分层与数据单元
THE LAYER MAP应用层Application
Message · 报文
HTTP 请求、DNS 查询、SSH 数据等。应用协议决定内容格式。
GET /
Host: net.wujun.org
Host: net.wujun.org
传输层Transport
TCP Segment / UDP Datagram
Port 端口、序号、确认号、窗口等字段在这里出现。
51234 → 443
TCP · SYN / ACK
TCP · SYN / ACK
网络层Internet / Network
IP Packet / Datagram
源 IP、目的 IP、TTL / Hop Limit、Protocol / Next Header。
192.168.1.2 → 45.62.125.222
IPv4 · TTL 64
IPv4 · TTL 64
数据链路层Link
Frame · 帧
源 MAC、目的 MAC、EtherType、VLAN 标签、FCS;只负责一跳链路。
MAC A → MAC 网关
Ethernet II · FCS
Ethernet II · FCS
物理层Physical
Bits · 比特
电信号、光脉冲或无线信号;网卡把帧编码后发送到介质。
10101010 01010101
线缆 / 光纤 / 无线
线缆 / 光纤 / 无线
术语边界:“Packet”在日常网络工程中也常被泛称为“网络包”,但严格讲 IP Packet 是网络层数据单元;Frame、Segment、Datagram 才能说明它具体处在哪一层。
二、封装过程:一层层加上首部
ENCAPSULATION应用数据准备发送
STEP 0 / 5应用 → TCP
HTTP DATA
TCP → IP
TCP SEGMENT
IP → 链路
IP PACKET
链路 → 介质
ETH FRAME
点击下一步,观察每一层为数据增加什么。
三、Frame / Packet / Segment 字段对照
HEADER MAP| 数据单元 | 所在层 | 关键字段 | 地址 / 标识 | 作用范围 |
|---|---|---|---|---|
| Ethernet Frame 以太网帧 | 数据链路层 | 目的 MAC、源 MAC、EtherType、VLAN、FCS | MAC 地址 | 一跳:当前链路到下一跳 |
| IP Packet IP 数据包 / 数据报 | 网络层 | 源/目的 IP、TTL、Protocol、分片字段 | IP 地址 | 端到端路径;每跳由路由器转发 |
| TCP Segment TCP 报文段 | 传输层 | 源/目的端口、Seq、Ack、Flags、Window、Options | 端口 + 四元组 | 端到端进程之间的可靠字节流 |
| UDP Datagram UDP 用户数据报 | 传输层 | 源/目的端口、Length、Checksum | 端口 + 五元组 | 端到端数据报;保留消息边界 |
| Message 应用报文 | 应用层 | HTTP 方法、DNS Question、TLS Handshake 等 | 域名、URL、应用标识 | 由具体应用协议解释 |
Port 在哪里?TCP 和 UDP 首部各有 16 位源端口、16 位目的端口。操作系统依靠端口把收到的传输层数据分用给正确的 socket;IP 层只知道交给 TCP 还是 UDP,不负责识别具体应用。
四、经过路由器后,什么变、什么不变?
ONE PACKET'S JOURNEY示例:手机访问 https://net.wujun.org。以下是教学模型;真实环境还会受到代理、隧道、负载均衡、IPv6、QUIC 和防火墙策略影响。
手机192.168.1.2
源端口 51234
源端口 51234
生成 TCP 段
家用路由器NAT / NAPT
192.168.1.1
192.168.1.1
改 IP / 端口
ISP 路由器公网链路
下一跳 MAC
下一跳 MAC
换 Frame
互联网路由TTL 逐跳递减
查路由表
查路由表
TTL − 1
服务器45.62.125.222
TCP :443
TCP :443
交付 socket
通常会变化
- Frame 的源/目的 MAC:每一跳重新封装,指向当前下一跳。
- IPv4 TTL / IPv6 Hop Limit:经过三层转发通常减 1。
- NAT 场景的源 IP / 源端口:出口设备维护映射表,返回流量再还原。
- IPv4 首部校验和:TTL 改变后需要重算。
通常保持
- 目的 IP 和目的端口:普通路由转发不会改;负载均衡、NAT 等例外需单独分析。
- TCP Seq / Ack 和应用数据:普通路由器不会理解或重排它们。
- TCP/UDP Protocol:IP 依据协议号分用给 TCP 或 UDP。
- 链路层的 MAC 不负责端到端寻址。
五、端口与五元组
PORTS & SOCKETS端口是什么?
端口是传输层的 16 位逻辑编号,范围为 0–65535。它不是物理插口,也不是 IP 地址;它帮助一台主机上的多个应用共享同一个 IP。
客户端 socket
192.168.1.2:51234
服务器 socket
45.62.125.222:443
192.168.1.2:51234
服务器 socket
45.62.125.222:443
五元组
防火墙、NAT 和内核连接表常用五元组识别一条流:
源 IP · 源端口 · 目的 IP · 目的端口 · 协议
192.168.1.2:51234
→ 45.62.125.222:443 · TCP
192.168.1.2:51234
→ 45.62.125.222:443 · TCP
- 服务器可以让许多客户端同时连接自己的 443 端口。
- 区分连接的不是“服务器端口单独唯一”,而是完整连接标识。
- UDP 也使用端口,但 UDP 本身不建立 TCP 那样的连接状态。
六、最后记忆表
QUICK MEMORY| 关键词 | 一句话 | 典型问题 |
|---|---|---|
| Frame / 帧 | 链路层的一跳容器,带 MAC 和 FCS。 | 交换机转发到哪个端口? |
| Packet / IP 数据包 | 网络层的数据单元,带 IP,路由器据目的 IP 转发。 | 下一跳从哪里走?TTL 是否耗尽? |
| Segment / 报文段 | TCP 的传输层数据单元,带端口、序号、确认号。 | 哪个 socket?是否重传? |
| Datagram / 数据报 | UDP 的传输层数据单元,保留消息边界但不保证可靠。 | 端口是否监听?应用是否自行重试? |
| Port / 端口 | 传输层的逻辑编号,用于进程复用和分用。 | 服务是否监听?防火墙放行了吗? |