网络数据包:报文、帧、包的区别
大约 2 分钟
数据包:报文/帧/包的区别(简明版)
大家好,我是小北。
在学习计算机网络的时候,经常会看到对数据包的各种称呼,有的叫 Message,有的叫 Packet,有的叫 Frame,所以这篇文章是简单总结下各种场景,方便大家记忆。
当然了每一层的数据都可以统称为“数据包”。
一句话核心总结
报文(Message)、包(Packet)、帧(Frame)是数据在不同网络分层中的不同“包装形式”,对应不同层级的协议处理逻辑,区别在于所属层级、封装信息、传输范围三方面。
1. 各层数据包
关键逻辑:不同层级处理不同维度的信息
网络分层 | 数据包名称 | 典型协议 | 核心任务 |
---|---|---|---|
应用层 | 报文(Message) | HTTP, FTP | 用户可理解的完整数据块 |
传输层 | 段(Segment) (TCP)或数据报(Datagram)(UDP) | TCP, UDP | 端到端传输控制(端口号) |
网络层 | 包(Packet) | IP | 全局寻址(IP地址) |
数据链路层 | 帧(Frame) | Ethernet, WiFi | 本地设备间物理传输(MAC地址) |
2. 数据包的逐层封装
这里引用之前文章TCP/IP 模型中提到的图:
1️⃣ 应用层:生成原始数据(如 HTTP请求报文
)
2️⃣ 传输层:添加TCP头部(端口号、序列号)→ 变成 TCP段
3️⃣ 网络层:添加IP头部(源/目标IP地址)→ 变成 IP包
4️⃣ 链路层:添加帧头帧尾(源/目标MAC地址、CRC校验)→ 变成 以太网帧
❗ 注意:
• MTU(最大传输单元):链路层帧的数据部分最大长度(如以太网默认1500字节),若IP包超过MTU,需在网络层分片(Fragment)。
总结
术语在不同协议中可能有别名(如TCP叫Segment,UDP叫Datagram),但核心逻辑一致。
实际开发中"包"可能泛指所有数据单元,需结合上下文判断~