封装成帧 Framing Methods
封装成帧

Framing Methods

封装成帧封装成帧就是在一段数据的前后部分添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。 MTU:最大传送单元,帧的...
封装成帧
封装成帧就是在一段数据的前后部分添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
MTU:最大传送单元,帧的数据部分的极限大小(具体大小和协议有关)。
数据链路层的帧长:从帧首部到帧尾部之间的长度。
封装成帧有四种方法:1.字符计数法 2.字符填充法 3.零比特填充法 4.违规编码法
而这四种方法首先要遵守的原则,就是透明传输。
透明传输是指不管所传数据是什么样的比特组合,都应当能够在链路上传送。因此,链路层就“看不见”有什么妨碍数据传输的东西。
当所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使收方不会将这样的数据误认为是某种控制信息。这样才能保证数据链路层的传输是透明的。
解释略有点抽象,举个栗子:
如图所示,SOU为开头,EOT为结尾,透明传输就是要保证SOH到EOT之间的所有数据都能正确发送,要能保证在帧数据部分中遇到了EOT之类的控制字段而不为所动。
值得一提的是:当传送的帧都是文本文件组成时(文本文件的字符都是从键盘上输入的,都是ASCII码,不管从键盘上输入什么字符都可以放在帧里传过去,即实现了透明传输)
下面介绍一下四种封装成帧的方法:

1.字符计数法

很简单的一种封装方法,它通过在帧首部使用一个计数字段(第一个字节,八位)来表明帧内字符数。
如图所示,每个帧首部都加了个数字,表明自己要发几个字符。这种方法就叫做字符计数法。
缺点也很显然,如果帧首部的数字突变了,就会造成毁灭性的连锁反应。

2.字符填充法

字符填充法是一种常用的方法,通过在关键字段前增加一个转义字符,使得在数据传输过程中忽略掉数据部分中的控制字。
这种方法的原理近似于c语言中的’‘字符。比如,要输出’]'字符,就要printf("]")一样。
接收端接收到这样加过转义字符的帧后,会自动脱去转移字符。

3.零比特填充法

零比特填充法的开始和结束标志都是一样的,都是01111110。它实现的方法是:在发送端,扫描整个信息字段,只要有5个1,就立即填入1个0,而在接收端,先找到标志字段确定边界,再用硬件对比特流进行扫描。发现连续5个1时,就把后面的0删除。

4.违规编码法

这种方法蛮特别,如图所示,曼彻斯特编码只有 “高-低” "低-高"两种,所以可以用“高-高”,“低-低”来定界帧的起始和众之。
一般而言,由于字节计数法中 Count字段的脆弱性(其值若有差错将导致灾难性后果)及字符填充实现上的复杂性和不兼容性,目前较普遍使用的帧同步法是比特填充和违规编码法。
封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。LM2591HVSX-ADJ接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。 图3-4...
作用:有助于数据进出介质。
封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。LM2591HVSX-ADJ接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
图3-4表示用帧首部和帧尾部封装成帧的一般概念。
封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。首部和尾部的一个重要作用就是进行帧定界 透明传输 发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的...

三个基本功能

封装成帧(framing)

封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。首部和尾部的一个重要作用就是进行帧定界

透明传输

发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制编码是 1B)。
字节填充(byte stuffing)或字符填充(character stuffing)——接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
如果转义字符也出现数据当中,那么应在转义字符前面插入一个转义字符。当接收端收到连续的两个转义字符时,就删除其中前面的一个

两种类型的数据链路层

点到点线路 ,使用PPP协议,比如ADSL
广播信道,使用CSMA/CD,比如标准以太网,以及交换式以太网的部分类型
这三个基本问题是: 1、封装成帧。2、透明传输。3、差错控制。封装成帧封装成帧 (framing) 就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。 首部和尾部的一个重要作用就是进行帧定...