数据链路层需要将位组合成帧,并使帧之间是可识别的。

在数据链路层中,通过添加发送放地址和接收方地址,成帧将一条从源端到目的端的报文分离开来,或者将到不同目的端的报文分离开来。目的方地址定义了分组要去的地方,而发送方地址帮助接收方确认接收。

帧可以分为固定长度成帧和可变长度成帧。

1.固定长度成帧

不需要定义帧的边界,长度本身可以用作分隔符,这种成帧类型的一个例子就是ATM广域网,它使用称为信元的固定长度帧。
 

2.可变长度成帧

可变长度成帧通过在帧的开头和结尾添加标记来一个帧与下一个帧分离开来,主要有面向字符的方式和面向位的方式。

2.1面向字符协议

面向字符协议通过在帧的开头和结尾增加8位(1个字节)的标记,编辑由与协议相关的特殊字符组合而成,标明一个帧的开始和结束。下面说明了在面向字符协议中帧的格式。
 
《数据通信与网络》笔记--数据链路层的成帧_其他
那如果数据内容中包含了和标记一样的字节,怎么办呢?那就要使用转移字符(ESC character),这个转移字符可以自己定义。下图就是一个包含了ESC字符的帧的处理过程。

《数据通信与网络》笔记--数据链路层的成帧_其他_02

那如果数据内容里本身要包含ESC字符,怎么办呢?请看下图:
《数据通信与网络》笔记--数据链路层的成帧_特殊字符_03
应该很清楚,不用解释了吧。

2.2面向位协议

面向位的协议其实和面向字符协议原理差不多,只是标记可能不再是8位(1个字符)。而在数据中不再使用ESC字符,如果数据中出现和标记一样的位,则修改数据的内容,使其和标记不一致,请看下图,图中假设帧的开始和结尾标记为01111110
《数据通信与网络》笔记--数据链路层的成帧_数据链路层_04

 

《数据通信与网络》笔记--数据链路层的成帧_数据链路层_05