在计算机网络与数据通信中,帧是数据链路层传输的基本单位,它由 帧头(Frame Header) 、 数据载荷(Payload) 和 帧尾(Frame Trailer) 三部分组成。帧头和帧尾虽然位于帧的两端,但各自承担着不可替代的关键作用,二者协同工作,共同确保数据在物理介质上能够被准确识别、可靠传送和完整接收。以下将从定义、具体功能、实现机制及协议实例等多个维度,对帧头和帧尾的作用进行详尽阐述。
一、帧头的作用与机制
1. 帧定界与同步——标识帧的起始位置
帧头的首要功能是标识一个帧的起始位置,使接收端能够从连续的比特流中正确识别出每个帧的开始边界。这一功能通常通过固定格式的特殊码型或标志字段实现。例如:

在SDH/SONET或OTN帧格式中,帧头采用F6 28的重复序列模式作为帧起始标识;
在基本数据帧格式中,帧起始字段可定义为1002H等特定数值;
在光纤通道(Fibre Channel)中,帧头前有SOF(Start Of Frame)标志;
某些协议使用特定的比特模式(如1010)标记帧开始。
这种固定模式使得接收端可以通过硬件或软件快速搜索到帧头,从而实现字节对齐和帧同步。
2. 携带控制与寻址信息
帧头承载了数据链路层协议所需的各类控制信息,这些信息是每种协议独有的,用于适配特定的逻辑拓扑和传输介质。具体包括:
源地址与目的地址:帧头中包含发送方和接收方的物理地址(如MAC地址、节点ID等),帮助网络设备将帧正确交付到目标节点。例如在以太网帧头中,包含6字节的目的MAC地址和6字节的源MAC地址。
帧类型/协议标识:指明上层协议类型(如IP、ARP、IPv6等),供接收端将数据载荷交给正确的网络层协议处理。
帧长度或净荷长度:告知接收端数据部分的字节数,以便正确提取数据(如charSize字段)。
序列号/帧序号:用于帧的顺序控制、重传确认以及重组(如Fibre Channel中的SEQ_ID和Sequence Count)。
标志位:如Flags字段存放各种控制标志(如分段标志、优先级标志等)。
命令类型码:在管理系统中,帧头可区分命令帧(例如字符&)与响应帧(例如字符%)。
3. 帧同步与信道探测
除了定界,帧头还可用于维持收发双方的时钟同步,并在跳频通信等系统中承担信道探测功能。收发双方可事先约定多种帧头模式,接收端收到帧头后便连续接收固定长度的数据块;帧头本身可作为探测信号,评估信道的质量(如信噪比、多径效应)。
4. 速率匹配与流量控制
帧头中可能包含速率匹配信息,用于调整传输速率,使接收端能够与发送端保持一致的接收速度,防止数据溢出或丢失。此外,某些协议的帧头还包含CS_CTL(通道选择控制)或F_CTL(帧控制)字段,用于实现优先级管理和流量控制。
5. 错误保护(帧头自身的校验)
为了保障帧头信息在传输过程中不被干扰,一些协议会对帧头区域进行 循环冗余校验(CRC)。例如,在GFP或ATM封装中,帧头净荷经过CRC校验产生校验信息附加在后,形成完整的帧头区域。接收端需通过CRC计算正确解析帧头信息,这种方式可大幅提高帧头在噪声线路中的鲁棒性。
6. 其他高级功能
- 片段标识:在支持分片和重组的协议中,帧头通过Fragment ID和Fragment Size字段指示当前帧所承载的片段信息。
- 奇偶校验标识:用于存储系统中的冗余校验,如Parity和Parity Sequence字段。
- 时间戳:记录帧头写入或发送的时间,用于延迟测量或同步协议。
二、帧尾的作用与机制
1. 帧定界——标识帧的结束位置
帧尾最直观的作用是标志一个帧的结束,使接收端能够判断当前帧的边界,避免将后续数据误认为本帧的一部分。常见的实现方式包括:
专用结束码型:如CAN总线的帧结束由7个隐性位组成;某些简单协议使用回车/换行符作为帧结束标识;以太网使用特定的EDF(End Of Frame)符号;帧结构的比特模式1001标记帧结束。
固定长度帧尾字段:如1003H作为帧结束标识。
利用帧长度字段推算:结合帧头中的长度信息,接收端在接收到指定字节数后自然知道帧尾位置,此时帧尾可作为校验冗余。
2. 错误检测——确保数据传输的完整性
帧尾的核心功能之一是提供错误检测机制,这是保证网络可靠性的基石。最常见的做法是在帧尾放置 帧检查序列(FCS) ,通常采用循环冗余校验(CRC)计算数据帧所有字节(或部分字节)产生的校验和。接收节点在收到完整帧后,自行计算CRC值并与FCS字段中的CRC值进行比较:
若两者相同,则认为帧在传输过程中未发生错误;
若不同,则判定帧已损坏,直接丢弃该帧。
不同协议对CRC字段的长度有不同规定:例如以太网帧尾为4字节CRC;传输帧标准中,帧错误控制字可为16位;Fibre Channel的CRC为4字节。这种机制能发现媒体上发生的大多数随机错误和突发错误。
3. 携带控制与操作信息
帧尾并不仅仅是校验码,某些协议的帧尾还包含控制信息,用于进一步管理通信过程:
- 操作控制字段:如ESA标准中,帧尾包含32位的操作控制字段(内含CLCW循环校验字),用于协调传输行为。
- 帧类型与优先级:在数字对讲机协议中,尾帧数据包含2比特的尾帧类型(普通尾帧、带状态消息的尾帧),以及自动重发请求命令(是否需要应答)和发射等待时间。
- 源地址与目的地址:在一些数据链路层帧中,帧尾可能携带目的和源MAC/IP地址的冗余信息,以增强寻址可靠性。
4. 流量控制与优先级管理
帧尾中的控制信息还可用于指定帧的优先级(例如根据TYPE字段或专用比特),确保高优先级数据在接收端被优先处理,从而优化网络性能。
5. 定界与错误检测的协同
在某些协议中,帧尾本身与帧头配合完成帧的完整定界。例如,基本帧格式中帧起始为1002H,帧结束为1003H,接收端通过检测这一对标志来界定完整帧。而当帧结束标识与CRC同时存在时,CRC还间接起到了验证帧结束点正确性的作用。
三、帧头与帧尾的协同关系
帧头和帧尾虽然在位置上首尾分离,但在功能上紧密相关,共同构成了数据链路层可靠传输的基础:
| 维度 | 帧头 | 帧尾 |
|---|---|---|
| 位置 | 帧的开始部分 | 帧的结束部分 |
| 主要任务 | 标识开始、提供寻址和控制信息 | 标识结束、提供错误检测 |
| 关键字段 | 起始标志、地址、类型、长度、序列号、标志位等 | 结束标志、FCS/CRC、操作控制字段、紧急标志等 |
| 错误处理 | 部分协议对帧头自身进行CRC保护 | 对整个帧(除帧头部分或包括帧头)进行CRC校验 |
| 关联性 | 帧头中的长度字段可协助精确定位帧尾位置 | 帧尾的CRC覆盖帧头+数据,验证帧头信息是否受损 |
| 典型实例 | 以太网帧头:目的MAC+源MAC+类型;Fibre Channel帧头:多种控制字段 | 以太网帧尾:FCS;CAN帧结束:7个隐性位;传输帧尾部:操作控制+错误控制 |
协同示例:在标准以太网帧中,接收端先通过前导码和帧起始定界符找到帧头,解析出目的MAC、源MAC和长度/类型;然后接收后续的数据,直到收到帧尾(包含4字节CRC)。接收端计算从目的MAC至数据结尾的CRC,与帧尾CRC比较,从而判断整个帧的正确性。若CRC不一致,则丢弃整个帧,包括帧头中携带的所有信息。
此外,在跳频通信中,帧头用于同步和信道探测,帧尾则可能携带与可靠性相关的信息(如重发请求)。在光端机系统中,帧头包含起始符和结束符(实际上的帧尾逻辑也由帧头统一描述),共同保证数据不丢失、不乱序。
四、总结
帧头和帧尾是数据链路层帧结构中不可或缺的双重保障。帧头如同帧的“身份证”和“导航仪”,负责标识帧的起点、携带寻址与协议信息、维持同步、进行速率匹配,并通过自身的CRC保护提高抗干扰能力;帧尾则如同帧的“终止符”和“验货员”,负责明确帧的结束,通过FCS/CRC机制提供强有力的错误检测,还可携带操作控制信息和流量管理信令。二者的有机结合,使得数据链路层能够在不可靠的物理介质上实现可靠、有序、高效的帧级通信,为上层网络协议提供坚实的基础服务。
在实际网络和通信系统中,不同协议对帧头与帧尾的设计各有侧重(如简单串行协议使用固定码型、复杂存储网络协议使用多字段控制),但其核心目标始终一致:确保数据被正确起始、完整传输和准确验证。理解帧头与帧尾的作用,是深入掌握数据链路层乃至整个网络通信体系的关键起点。
