(7条消息) 透明传输方法总结
原文出处:
http://blog.csdn.net/u014301418/article/details/24877431
帧的传送需要具有透明性,即透明传输。透明传输是指不管所传数据是什么样的比特组合,都应当能够在链路上传送。当所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使接收方不会将这样的数据误认为是某种控制信息。这样就是保证数据链路层的传输是透明的。
透明传输在HDLC协议中使用零比特填充法,PPP协议的同步传输链路中也用的是零比特填充法;PPP协议异步传输时和BSC协议使用的是字符填充法。
下面介绍两种方法的原理:
(1)零比特填充法:使一帧中两个控制字段之间不会出现连续6个1;当发送端出现有5个连续1,则立即填入一个0;当接收端出现5个连续1时,删除其后的一个0。
示例:
例如:0100 1111 1100 0101 0
发送: 0100 1111 10100 0101 0
接收: 0100 1111 1100 0101 0
(2)字符填充法(首尾定界符法):
在这种帧同步方式中,为了不使数据信息位中与特定字符相同的字符被误判为帧的首尾定界符,可以在这种数据帧的帧头填充一个转义控制字符(DLE STX,Data Link Escape – Start of Text),在帧的结尾则以DLE ETX(Data Link Escape-End of Text)结束,以示区别,从而达到数据的透明性。若帧的数据中出现DLE字符,发送方则插入一个“DLE”字符,接收方会删除这个DLE字符。如现在要发送一个如图(a)所示的字符帧,在帧中间有一个“DLE”字符数据,所以发送时会在其前面插入一个“DLE”字符,如图(b)所示。在接收方接收到数据后会自己删除这个插入的“DLE”字符,结果仍得到原来的数据,但帧头和帧尾仍在,予以区别,如图(c)所示。
在以前这种同步方式中,起始和结束字符是不同的(如起始字符为DLE,而结束字符是DLE ETX),但是近几年,绝大多数协议倾向于使用相同的字符来标识起始和结束位置。按这样的做法,在接收方丢失了同步,则只需搜索一下标志符就能找到当前帧的结束位置。两个连接的标志符代表了当前帧的结束和下一帧的开始。
但这种同步方式也有缺陷。当标志符的位模式出现在数据中时,这时不同步问题就可能发生了,这种位模式往往会干扰正常的帧分界。解决这一问题的办法是在发送方的数据链路层传输的数据中,在与分界标志符位模式一样的字符中插入一个转义字符(如ESC)。接收方的数据链路层在将数据送给网络层前删除这种转义字符。因此,成帧用的标志字符与数据中出现的相同位模式字符就可以分开了,只要看它前面有没有转义字符即可。