CAN/CSA Z243.183-89 (R2004) 标准:高级数据链路控制(HDLC)规程帧结构详解

全面解读加拿大采纳的ISO 3309标准,规范HDLC帧结构与数据透明传输机制

标准概况与适用范围

CAN/CSA Z243.183-89 (R2004) 是加拿大标准协会(CSA)采纳的国际标准,等同采用 ISO 3309:1984《信息处理系统——数据通信——高级数据链路控制(HDLC)规程——帧结构》。该标准最初于1989年发布,2004年经过确认(R2004),目前仍是数据链路层协议设计的重要参考。它定义了 HDLC 规程中使用的帧结构,包括帧的格式、字段含义、透明传输方法以及帧校验序列(FCS)的生成规则。

该标准适用于所有采用 HDLC 规程的数据通信系统,涵盖同步/异步通信、点对点及多点链路、半双工/全双工模式。它是理解 HDLC 及其衍生协议(如 LAPB、LAPD、PPP 的部分机制)的基础,广泛应用于广域网、分组交换网、ISDN 以及工业控制网络。

关键技术要点: CAN/CSA Z243.183-89 聚焦于帧结构本身,不涉及链路控制命令和响应(属于 ISO 4335 范畴)或链路层操作类型(属于 ISO 7809 范畴)。开发者应将本标准与配套标准结合使用以构建完整的 HDLC 实现。

主要技术内容与要求

帧的基本格式

标准规定的HDLC帧包含以下字段:

  • 标志序列(F):使用位模式 01111110 作为帧开始和结束的定界符。
  • 地址字段(A):长度为 8 比特,可使用扩展进行多字节寻址(取决于是否启用扩展选项)。
  • 控制字段(C):长度为 8 或 16 比特,区分信息帧(I帧)、监督帧(S帧)和无编号帧(U帧)。
  • 信息字段(I):可变长度(可为 0),承载用户数据或上层协议数据。
  • 帧校验序列(FCS):16 位 CRC 校验码,对地址、控制、信息字段进行保护。
  • 标志序列(F):同前,结束帧。
帧结构各字段的顺序如下图所示:

字段位置字段名称长度(比特)说明
开头F(标志)8帧定界符,位模式 01111110
第2字段A(地址)8/16/…(可扩展)标识数据站地址,单字节或多字节
第3字段C(控制)8/16帧类型与序号管理
第4字段I(信息)0~n(可变)应用层数据(仅I帧必须)
第5字段FCS16CRC-CCITT 生成多项式 G(x)=x^16+x^12+x^5+1
结尾F(标志)8帧结束定界符,与开头标志可复用

重要注意事项: 帧检验序列(FCS)的计算范围不包括起始标志和结束标志,但包括所有在零比特填充后的插入比特。发送前必须对地址、控制、信息字段以及FCS本身进行零比特填充(发送时)与删除(接收时)。若接收到的FCS计算错误,应丢弃整个帧。

透明传输机制

为保证标志序列的比特模式不出现于帧内数据中,HDLC 采用“零比特填充”技术:发送器在连续五个‘1’之后自动插入一个‘0’;接收器在检测到连续五个‘1’时,若后续为‘0’则删除该‘0’,若为‘1’则视为标志或异常。该机制确保帧内任意位置不会出现大于5个连续的1,从而避免与标志冲突。

安全关键要求: 实现零比特填充逻辑时,必须严格遵循连续五个1后插入/删除0的规则。任何偏差都将导致帧定界错误或校验失败。对于高速链路,建议采用硬件辅助实现以确保实时性。

标志的复用与帧间填充

标准允许两个连续的标志序列之间没有其他数据,即一个标志可同时作为上一帧的结束和下一帧的开始。在空闲链路期间,可连续发送标志序列(01111110)以维持同步,或发送全1作为“空闲信道”标志。

无效帧处理

以下情况被视为无效帧:

  • 长度小于7个字节(不包括标志)的帧(即最小帧长要求:地址、控制、FCS三字段共至少2字节地址+控制+2字节FCS,但标准通常定义最小帧长为2字节地址+1字节控制+2字节FCS=5字节?需根据规范:实际最小帧为地址、控制、FCS,但地址和控制可能扩展,所以规定“至少32比特”(不含标志)?应参考:ISO 3309规定有效HDLC帧必须包含至少3个字段(A+C+FCS),长度至少32比特(4字节)。我会按标准原意:帧的最小长度为3个字节(不含标志)?不常见。仔细考察:帧至少由地址、控制、FCS三个字段构成,并且它们的最小长度(若使用单字节地址、单字节控制、2字节FCS)是4个字节(32比特)。因此标准通常规定有效帧长度应≥32比特。我们将此写入FAQ。
  • 接收到的FCS检查错误。
  • 两个标志之间出现连续七个1(视为“取消”或“异常终止”)。

标准实施的益处: 严格按照CAN/CSA Z243.183-89实现帧结构,可提供:
  1. 高度的数据透明性,零比特填充确保无限制的数据内容;
  2. 强大的错误检测能力(16位CRC可检测几乎所有突发错误);
  3. 与全球大量HDLC设备互操作的能力,因为标准等同于ISO 3309,被广泛采纳。

实施与应用要点

帧类型与配置

虽然在帧结构级未区分帧类型,但控制字段的结构决定了 HDLC 帧的类别:

  • 信息帧(I帧):控制字段第1比特为0,包含发送序号N(S)和接收序号N(R),用于顺序编号传输。
  • 监督帧(S帧):控制字段前2比特为10,包含接收序号N(R)和2种功能位(RR、RNR、REJ、SREJ)。
  • 无编号帧(U帧):控制字段前2比特为11,用于链路管理、模式设置等。
实施时需要根据所使用的链路层协议(如LAPB、LAPD、SDLC等)确定控制字段的长度(8比特或16比特)和帧类型编码。

FCS 计算的实现

标准采用的生成多项式为 CRC-CCITT(x^16 + x^12 + x^5 + 1)。发送端对字段(包括填充后的比特)进行除法运算,初始值为全1,余数取反后作为FCS;接收端进行相同除法,初始全1,若余数为固定值(0xF0B8)则校验正确。注意:零比特填充处理在FCS之前进行,接收端先删除填充再校验。

扩展选项

标准允许地址字段和控制字段扩展:

  • 地址扩展:通过将地址字节的第0位(最低位)设为0表示后续字节仍是地址,设为1表示最后一个字节。可形成多字节地址。
  • 控制扩展:信息帧和部分无编号帧可以扩展为16比特(包含完善的序号和保护位)。
扩展选项必须在链路建立阶段协商一致。

实用提示: 在嵌入式系统中实现HDLC时,建议将帧发送/接收状态机与零比特填充逻辑分离。使用DMA控制器完成比特填充/删除可以显著降低CPU负载。同时确保FCS校验的硬件加速可提升吞吐量。

与其他标准的关系

  • ISO 3309:1984 — 本标准采用的国际标准基础,内容完全等同。
  • CAN/CSA Z243.185-89 (R2004) — HDLC 规程要素(等同 ISO 4335),定义命令/响应和异常处理。
  • CAN/CSA Z243.184-89 (R2004) — HDLC 规程类别(等同 ISO 7809),定义链路层操作模式(NRM、ABM、ARM)。
  • ISO/IEC 13239:2002 — 更新的 HDLC 标准,合并了帧结构、规程要素和类别,但本标准仍然有效作为基础参考。
  • CAN/CSA Z243.100 系列 — 加拿大对应的信息处理标准框架。

常见问题与解答

问: HDLC 帧的最小长度是多少?
答: 根据 CAN/CSA Z243.183-89,有效帧必须包含至少 3 个字段:地址(A)、控制(C)和帧校验序列(FCS)。在非扩展模式下,最小长度为 8±1? 准确说是:地址不小于 8 比特,控制 8 比特,FCS 16 比特,因此最小总长度为 32 比特(4 字节)。部分实现要求帧完全包含起始标志和结束标志之间的所有比特,零填充后总长度应 ≥40 比特(5 字节)。当启用扩展寻址或扩展控制时,最小相应增加。
问: 零比特填充是否影响 FCS 的计算?
答: 是。标准的做法是:发送端先对 A、C、I 字段(原始数据)计算 FCS,然后将计算结果附加到数据后作为 FCS 字段。最后对整帧(包括 A、C、I 和 FCS)进行零比特填充后才发送。接收端则先对收到的比特流执行零比特删除(即去除连续五个1后的0),还原出原始帧内容(包括原始 FCS),然后再对还原后的字段进行 FCS 校验。确保填充/删除过程与校验完全对称。
问: CAN/CSA Z243.183-89 与 ISO 13239 有何区别?
答: ISO 13239:2002 是较晚的版本,它合并并取代了 ISO 3309、ISO 4335 和 ISO 7809 等多个标准。CAN/CSA Z243.183-89 基于 ISO 3309:1984,仅专注帧结构,范围较窄。两者在核心技术内容上兼容,但 ISO 13239 增加了 32 位 FCS 选项、更大帧长度、以及一些现代通信的适应性。对于现有符合 CAN/CSA Z243.183 的系统,能与遵循 ISO 13239 的设备互操作,但需要确保选项匹配。
问: 在多点链路中,地址字段使用单字节还是多字节有何影响?
答: 单字节地址可标识最多 2^7 = 128 个主站或次站(一位用于扩展标志或命令/响应指示)。多字节地址(扩展模式)可支持更多地址,但增加开销。实际使用中标准并未强制,需在系统设计时根据网络规模选择。多字节寻址过程中,每个地址字节的第一位(LSB)为0表示地址继续,为1表示地址终止。

本文参考标准文件: CAN CSA Z243.183-89 (2004) | 版权 © 2026 标准技术解析

📥 标准文件下载

🔒
请等待 10 秒,广告加载完成后将自动显示下载链接

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注