数据链路层协议有许多种,但有三个基本问题则是共同的。
这三个基本问题是: 1、封装成帧。2、透明传输。3、差错控制。
封装成帧 (framing) 就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。 首部和尾部的一个重要作用就是进行帧定界。
帧是数据链路层按照具体协议要求由比特流装配而成的。这样,数据是一帧一帧地传送的,当出现差错时,就可以只将有差错的帧重传一次,而避免将全部数据进行重传。
当数据是由可打印的 ASCII 码组成的文本文件时, 帧定界可以使用特殊的帧定界符。控制字符 SOH (Start Of Header) 放在一帧的最前面, 表示帧的首部开始。另一个控制字符 EOT (End Of Transmission) 表示帧的结束。
帧同步是为了使接受方能够从收到的比特流中准确区别出一帧的开始和结束。 帧的结构设计必须要有帧首和帧尾的标识方法,以标识帧的开始和结束,还要包括校验信息和帧序号,以便检测出传输中出现的差错和保持帧传输的有序性。
实现帧同步的方法有四种: 1、字节计数法。2、字符填充法。3、比特填充法。4、违法编码法。
以一个特殊字符表征一帧的开始(如SOH控制字符),并用一个专门字段来标明一帧的字节数。接收方可以通过表征帧开始的特殊字符区别出帧的开始,并从专门字段中获知该帧的字节数,从而确定帧的终止位置。
采用这种帧同步的方法不会引起数据信息与其它控制信息的混淆,因而不必采用任何措施即可实现数据的透明性, 任何数据都可不受限制地传输。
注意:Start Of Header(首部开始),SOH都是 ASCII码中的控制字符。SOH的十六进制编码是01H。
使用特定字符界定一帧的起始与终止。为了不使数据信息位中出现与特定字符相同的字符,可在特定字符前填充一个转义控制字符(如ESC)以示区别,从而达到数据的透明性。由于这种方法的特定字符依赖于所采用的字符编码集,故兼容性较差。
IBM的二进制同步通信规程BSC:
用一组特定的比特组合(如HDLC中为01111110,7EH)标志一帧的起始与终止。为了不使数据信息中出现与特定的比特 组合相同的比特串,可以在数据信息位中填充某一比特位,使两者不致混淆,从而实现数据的透明性。
比特填充法很容易由硬件来实现,其性能也优于字符填充法。
方法:在帧的传输起始标志和结束标志之间,每当出现5个1之后,发送器就会插入一个附加的0。一旦有5个1模式出现, 就会检查第6个比特。若为0,该比特将被删除。若为1,且第7个比特为0,那么这个组合被认为是标志字段。若第六位和第七位都为1,则此时处于异常终止状态。
采用特定的比特编码方法界定帧的起始与终止,一般在物理层实现。
曼彻斯特编码和差分曼彻斯特编码属于违法编码法。
目前较普遍使用的帧同步方法为: 1、特填充法(如HDLC)。2、违法编码法(如以太网)。
该法在物理层采用特定的比特编码方法时采用。例如,曼彻斯特编码方法,是将数据比特“1”编码成“高—低”电平对,将数据比特“0”编码成“低—高”电平对。而 “高—高”电平对和“低—低”电平对在数据比特中是违法的。可以借用这些违法编码序列来界定帧的起始与终止。 局域网IEEE 802标准中就采用了这种方法。违法编码法不需要任何填充技术,便能实现数据的透明性,但它只适于采用冗余编码的特殊编码环境。
由于字节计数法中Count字段的脆弱性(其值若有差错将 导致灾难性后果)及字符填充实现上的复杂性和不兼容性, 目前较普遍使用的帧同步法是比特填充法和违法编码法