
学得慢,忘得快,网络协议亦是如此,今天准备捡起一个数据链路层的协议——HDLC(High-Level Data Link Control,高级数据链路控制)。
HDLC协议用以实现远端资源共享及交互,面向比特传播,并且保证远端准确无误的接收到数据流。
特点
- 不依赖于任何一种字符编码集
- 对于任何一种比特流都可以透明传输,使用“0比特填充法”易于硬件实现
- 全双工通信,有较高的数据链路传输效率
- 所有帧采用CRC检验,对信息帧进行顺序编号,可防止漏收或重发,传输可靠性高
- 传输控制功能与处理功能分离,具有较大灵活性。
站类型
- 主站。主站发出的帧为命令帧,负责链路控制
- 从站。从站发出的帧为响应帧,在主站控制下操作
- 复合站。既有主站功能,又有从站功能
帧类型
- 信息帧(I帧)。包含用户数据、该帧的编号和捎带的应答序列N
- 管理帧(S帧)。负责流量控制和差错控制
- 无编号帧(U帧)。用于链路控制
链路配置
- 非平衡配置。既可用于点对点链路也可用于多点链路。这种配置由一个主站和多个从站组成,可以支持全双工或半双工
- 平衡配置。只能用于点对点链路。这种配置由两个复合站组成,同样支持全双工或半双工
传输方式
- 正常响应方式(Normal Response Mode,NRM),适合不平衡配置,主站启动数据传输过程,从站只有收到命令时才能发送数据
- 异步平衡方式(Asynchronous Balanced Mode,ABM),适合两端都是复合站的平衡配置,任何一方都可以启动数据传输
- 异步响应方式(Asynchronous Response Mode,ARM),适合不平衡配置,从站在没有收到主站命令时,就可以启动数据传输服务
协商过程
- 协商建立过程。HDLC每隔10s后互相发送链路探测的协商报文,其收发顺序是由序号决定的,序号失序则造成链路中断。这种用来探询点到点链路是否激活状态的报文称之为keep-alive报文
- 传输报文过程。将IP报文封装在HDLC层上,数据传输过程中,仍然进行keep-alive报文协商以探测链路的合法有效
- 超时断连阶段。当封装HDLC的接口连续3次(当接收包速率超过1000packets/s时为6次),无法收到对方对自己的递增序号的确认时,HDLC协议Line Protocol由Up向Down转变。此时链路处于瘫痪状态,数据无法通信
0比特填充法
零比特填充法又称零比特插入法。若在两个标志字段之间的比特串中,碰巧出现了和HDLC标志字段F(01111110)一样的比特组合,那么就会误认为是帧的边界。为了避免出现这种情况,HDLC采用零比特填充法使一帧中两个F字段之间不会出现6个连续1,即在出现5个1后自动填充1个0,以此来区别标志字段F。