计算机网络-数据链路层-封装成帧

如题所述

第1个回答  2022-07-27
封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。 接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。图3-4表示用帧首部和帧尾部封装成帧的一般概念。我们知道,分组交换的一个重要概念就是:所有在互联网上传送的数据都以分组(即IP数据报)为传送单位。网络层的IP数据报传送到数据链路层就成为帧的数据部分。 在帧的数据部分的前面和后面分别添加上首部和尾部,构成了一个完整的帧。 这样的帧就 是数据链路层的数据传送单元 。一个帧的帧长等于帧的数据部分长度加上帧首部和帧尾部的长度。首部和尾部的一个重要作用就是进行 帧定界 (即确定帧的界限)。此外,首部和尾部还包括许多必要的控制信息。在发送帧时,是从帧首部开始发送的。各种数据链路层协议都对帧首部和帧尾部的格式有明确的规定。显然,为了提高帧的传输效率,应当使帧的数据部分长度尽可能地大于首部和尾部的长度。但是,每一种链路层协议都规定了所能传送的帧的数据部分长度上限一 最大传送单元MTU(Maximum Transfer Unit) 。图3-4给出了帧的首部和尾部的位置,以及帧的数据部分与MTU的关系。

当数据是由可打印的ASCII码组成的文本文件时,帧定界可以使用特殊的帧定界符。我们知道,ASCII码是7位编码,一共可组合成128个不同的ASCIIⅡ码,其中可打印的有95个 ① ,而不可打印的控制字符有33个。图3-5的例子可说明帧定界的概念。 控制字符SOH(Start Of Header)放在一帧的最前面,表示帧的首部开始。另一个控制字符EOT(End Of Transmission)表示帧的结束。 请注意,SOH和EOT都是控制字符的名称。它们的十六进制编码分别是01(二进制是00000001)和04(二进制是00000100)。SOH(或EOT)并不是S,O,H(或E,O,T)三个字符。

当数据在传输中出现差错时,帧定界符的作用更加明显 。假定发送端在尚未发送完一个帧时突然出故障,中断了发送。但随后很快又恢复正常,于是重新从头开始发送刚才未发送完的帧。由于使用了 帧定界符 ,接收端就知道前面收到的数据是个不完整的帧(只有首部开始符SOH而没有传输结束符EOT),必须丢弃。而后面收到的数据有明确的帧定界符(SOH和EOT),因此这是一个完整的帧,应当收下。

帧的首部和尾部分别为四个字段和两个字段。 首部的第一个字段和尾部的第二个字段都是标志字段F(Flag),规定为0x7E(符号“0x”表示它后面的字符是用十六进制表示的。十六进制的7E的二进制表示是01111110)。标志字段表示一个帧的开始或结束。因此标志字段就是帧的定界符。连续两帧之间只需要用一个标志字段。如果出现连续两个标志字段,就表示这是一个空帧,应当丢弃。

信息字段的长度是可变的,不超过1500字节。

尾部中的第一个字段(2字节)是使用CRC的帧检验序列FCS。

① 注:“可打印的字符”就是“可以从键盘上输入的字符”(因而也是可打印出的)。我们使用的标准键盘有47个键可输入94个字符(包括使用Si键),加上空格键,一共可输入95个可打印字符。
相似回答