3.2 封装成帧

封装成帧是指数据链路成把上层丢下来的加帧头和帧尾。

帧头和帧尾含有重要的信息。作用之一就是帧定界

思考这样的一个问题:我们发送方发到接收方了,那接收方如何从一大堆0101比特流中知道一个帧并且提取出来?

实际上,帧头和帧尾带有醒目的标志,各占一个字节。我们看下面点对点的传输

 

需要说明的是,并不是每一种帧都包含标志。

比如以太网V2的MAC帧格式

那么接收方在这种网络下又是如何提取出帧的呢?

实际上我们在概述的时候讲过,物理层看网络是什么,如果是以太网,就加上8字节的前导码。前导码中的前7个字节为前同步码,作用是使接收方的时钟同步。之后的一字节为帧开始定界符。表明其后面紧跟着的就是MAC帧。

另外啊:以太网还规定了帧间间隔时间为96比特的发送时间。因此MAC帧并不需要帧结束定界符。

 

透明传输是指数据链路层对上层交付的数据没有任何限制,就好像数据链路层不存在一样。

我们的帧标志是一个数值,如果我们网络层传到数据链路层刚好含有相同的数值,那接收方还能收到正确的帧吗?

  • 不能

那么数据链路层是如何解决这个问题的呢?网络层传来的时候,他加了帧头帧尾扫描一遍标志,如何出现相同的那就加上一个ESC标志转义字符(1个字节,10进制值为27),告诉我们的接收方跳过扫描这玩意。这是数据不是定界符。

那再来思考这样一种情况,上层传下来的即包含转移字符,又包含和定界符相同的数字。这个又该怎么处理呢?

  • 也是相同的处理方法,还是加转义字符。

上面我们将的都是面向字节的物理链路使用字节填充(或称字符填充)的方法实现透明传输。

面向比特的物理链路使用比特填充的方法实现透明传输。

为了简单起见,在帧首部和尾部中,仅给出了帧定界标志。而未给出其他控制字段。

现在帧的数据部分出现两个和标志一样的,那我们该怎么处理呢?

在发送前可以采用0比特填充法对数据部分进行扫描,每5个连续的比特1后面就插入一个比特0。这样就确保了帧定界的唯一性。

 

最后还要提醒大家。为了提高帧的传输效率,应当使帧的数据部分的长度尽可能大些。

但是考虑到差错控制等因素,数据链路层的协议也规定了帧的数据部分的长度上限。最大传送单元MTU

 

原文地址:https://www.cnblogs.com/YXBLOGXYY/p/15399708.html