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
传输层Transport
TCP Segment / UDP Datagram

Port 端口、序号、确认号、窗口等字段在这里出现。

51234 → 443
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
物理层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、FCSMAC 地址一跳:当前链路到下一跳
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
生成 TCP 段
家用路由器NAT / NAPT
192.168.1.1
改 IP / 端口
ISP 路由器公网链路
下一跳 MAC
换 Frame
互联网路由TTL 逐跳递减
查路由表
TTL − 1
服务器45.62.125.222
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

五元组

防火墙、NAT 和内核连接表常用五元组识别一条流:

源 IP · 源端口 · 目的 IP · 目的端口 · 协议
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 / 端口传输层的逻辑编号,用于进程复用和分用。服务是否监听?防火墙放行了吗?