在数据链路层,封装成帧(Frame Encapsulation)是指将上层传递的数据(通常是网络层的数据包)封装成帧的过程。这个过程确保数据能够在物理网络中可靠地传输。数据链路层将接收到的数据包进行封装,并根据不同的协议使用不同的封装方法。常见的封装成帧的方法有以下几种:
1. 字符计数法 (Character Count Method)
字符计数法是最早的封装方式之一。它通过在数据帧的头部添加一个字段,来指示数据部分的字节数(即数据区的长度)。接收方根据这个计数字段来确定帧的结束位置,从而提取出正确的数据。
- 结构:帧的结构一般包括:帧头(Header) + 字符计数字段 + 数据部分(Data) + 帧尾(Trailer)
- 特点:字符计数字段记录了数据部分的长度,接收方根据此值来判断数据帧的结束。
例子:
如果传输的数据为 "Hello"
(5字节),帧的内容可能是:
字段 | 内容 |
---|---|
字符计数 | 5 |
数据部分 | "Hello" (5字节) |
帧尾 | CRC校验码(2字节) |
2. 字符定界法 (Character Stuffing Method)
字符定界法使用特殊的字符或字节来表示帧的开始和结束。该方法通过定义特定的帧起始符和结束符来区分帧的边界,确保帧被正确地识别。
- 结构:帧的结构一般包括:帧起始符 + 数据部分 + 帧结束符
- 特点:采用特殊的起始符和结束符来标识帧的边界。
例子:
在使用字符定界法时,常见的帧起始符为 0x7E
,结束符也为 0x7E
,数据部分可能会被 "转义"(字符填充)以避免数据部分出现起始符或结束符。
如果数据是 0x7E 0x01 0x02 0x7E
,为了避免数据部分与结束符冲突,通常会进行字符填充,如将 0x7E
转换成 0x7D 0x5E
。
字段 | 内容 |
---|---|
帧起始符 | 0x7E |
数据部分 | 0x01 0x02 0x7E |
帧结束符 | 0x7E |
3. 位定界法 (Bit Stuffing Method)
位定界法与字符定界法类似,但是它对数据进行位级的处理。在数据帧中,如果出现某些特定的比特模式(如 11111
),则会在该模式后插入一个额外的比特 0
,以避免与帧的开始或结束标志冲突。接收方在解帧时会删除多余的比特。
- 结构:帧的结构一般包括:帧起始符 + 数据部分 + 帧结束符
- 特点:通过在数据中插入额外的比特来避免与帧的起始符和结束符冲突。
例子:
如果数据部分是 1111101
(包含连续的5个1),根据位定界法,发送方会在这段数据后插入一个比特 0
,变成 111110101
。接收方会识别并去掉这个额外的 0
。
字段 | 内容 |
---|---|
帧起始符 | 01111110 |
数据部分 | 0111110101 |
帧结束符 | 01111110 |
4. 定长帧法 (Fixed Length Frame Method)
定长帧法规定每个数据帧的长度都是固定的。帧的头部包含数据长度的信息,接收方通过此信息来处理数据。与其他方法不同,定长帧法不依赖于帧的边界符或计数字段,而是规定每个帧的总长度。
- 结构:每个帧的长度是固定的,因此帧头只需要提供足够的字段来区分每个字段的开始和结束。
- 特点:固定长度的数据帧,便于高速传输,常用于高速网络和一些特定协议中。
例子:
在定长帧法中,每个帧的长度固定为100字节,不论数据内容如何,每个数据帧的长度始终为100字节。如果数据内容不足100字节,则通过填充(padding)来填充帧。
字段 | 内容 |
---|---|
帧头 | 固定字段(如地址信息等) |
数据部分 | 数据(可以填充至固定长度) |
帧尾 | 固定长度校验码 |
5. 以太网帧封装方法
以太网帧是一种典型的数据链路层帧格式,通常用于局域网中。以太网帧封装方法与字符定界法和位定界法相似,但它还包括了目标地址、源地址和协议类型等信息。
以太网帧结构如下:
- 帧头(Header):包含目标MAC地址、源MAC地址、类型字段等。
- 数据部分(Data):包含从网络层传递的数据。
- 帧尾(Trailer):包含错误检测码(通常是CRC)等。
以太网帧格式:
字段 | 内容 |
---|---|
目标地址 | 6字节的目标MAC地址 |
源地址 | 6字节的源MAC地址 |
类型 | 2字节,表示上层协议(如IP) |
数据 | 46-1500字节的上层数据 |
校验和 | 4字节的CRC错误检测码 |
总结
不同的封装成帧方法有不同的特点和适用场景,常见的封装方法包括字符计数法、字符定界法、位定界法、定长帧法和以太网帧封装等。每种方法都有其优缺点,选择哪种方法通常取决于具体的网络协议和传输需求。
- 字符计数法:通过字符计数字段表示数据长度。
- 字符定界法:通过起始符和结束符界定帧的边界。
- 位定界法:通过位级插入“填充比特”避免冲突。
- 定长帧法:帧的长度固定。
- 以太网帧:常用于局域网,带有源、目标MAC地址和协议类型等字段。