写点什么

链路层的封装成帧和透明传输基本问题

用户头像
Regan Yue
关注
发布于: 刚刚

链路层的封装成帧和透明传输基本问题

封装成帧

网络层向下传递的数据再添加上首部和尾部就成为了一个完整的帧。其中的首部和尾部是用来进行帧定界的。其中的数据部分应当尽可能大一点,但是由于差错控制等许多因素,我们应当限制数据部分的长度。实现帧定界有许多方法,其中比较容易的一种方法是以太网中使用的方法——在帧与帧之间加上时间间隔。另一种常用的方法是在各帧的起始处(终点处)加上帧开始标志(帧结束标志),这两个标志可相同可不相同。


这样就会出现一个问题?你想一想会是什么问题呢?


是不是数据部分可能出现和帧开始标志或帧结束标志相同的数据?这样就可能会出现误判到帧开始处和帧结束处。


为了解决这个问题,我们使用字节填充(字符填充)或比特填充的方式。

透明传输

字节填充(字符填充)

就是在数据中出现的帧开始标志和帧结束标志前加上一个转义字符。这样接收端就不会把数据中的和帧开始标志或帧结束标志相同的数据识别为帧开始标志或帧结束标志。而如果数据中有转义字符的话,就在转义字符前加上转义字符。

比特填充

PPP 协议采用的就是比特填充,它的开销更小。它是在数据中出现 5 个连续的 1 时就立刻填充一个 0,因为它用“01111110”来表示帧定界标志,而 5 个 1 后面加 0 就会避免出现 6 个连续的 1。当接收端遇到 5 个连续的 1 就将后面的 0 删除,来还原原来的比特流。


明天我们继续。关注博主不迷路~

发布于: 刚刚阅读数: 2
用户头像

Regan Yue

关注

还未添加个人签名 2020.08.12 加入

对Go、Python、网络安全、区块链感兴趣. · 华为云云享专家 · 掘金资讯创作者

评论

发布
暂无评论
链路层的封装成帧和透明传输基本问题