透明传输
发布时间:2014/8/23 18:53:14 访问次数:1561
由于帧的开始和结束LM2596-12V的标记是使用专门指明的控制字符,因此,所传输的数据中的任何8比特的组合一定不允许和用作帧定界的控制字符的比特编码一样,否则就会出现帧定界的错误。
当传送的帧是用文本文件组成的帧时(文本文件中的字符都是从键盘上输入的),其数据部分显然不会出现像SOH或EOT这样的帧定界控制字符。可见不管从键盘上输入什么字符都可以放在这样的帧中传输过去,因此这样的传输就是透明传输。
但当数据部分是非ASCII码的文本文件时(如二进制代码的计算机程序或图像等),情况就不同了。如果数据中的某个字节的二进制代码恰好和SOH或EOT这种控制字符一样(见图3-6),数据链路层就会错误地“找到帧的边界”,把部分帧收下(误认为是个完整的帧),而把剩下的那部分数据丢弃(这部分找不到帧定界控制字符SOH)。
像图3-6所示的帧的传输显然就不是“透明传输”,因为当遇到数据中碰巧出现字符“EOT”时就传不过去了。数据中的“EOT”将被接收端错误地解释为“传输结束”的控制字符,而在其后面的数据因找不到“SOH”被接收端当作是无效帧而丢弃。但实际上在数据中出现的字符“EOT”并非控制字符而仅仅是二进制数据00000100。
前面提到的“透明”是一个很重要的术语。它表示:某一个实际存在的事物看起来却是好像不存在一样(例如,你看不见在你前面有块100%透明的玻璃的存在)。“在数据链路层透明传送数据”表示无论什么样的比特组合的数据都能够通过这个数据链路层。因此,对所传送的数据来说,这些数据就“看不见”数据链路层有什么妨碍数据传输的东西。或者说,数据链路层对这些数据来说是透明的。
为了解决透明传输问题,就必须设法使数据中可能出现的控制字符“SOH”和“EOT”在接收端不被解释为控制字符。具体的方法是:发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十大进制编码是1B,二进制是00011011)。而在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。这种方法称为字节填充(byte stuffing)或字符填充(character stuffing)。如果转义字符也出现在数据当中,那么解决方法仍然是在转义字符的前面插入一个转义字符。此,当接收端收到连续的两个转义字符时,就删除其中前面的一个。图3-7表示用字节填充法解决透明传输的问题。
由于帧的开始和结束LM2596-12V的标记是使用专门指明的控制字符,因此,所传输的数据中的任何8比特的组合一定不允许和用作帧定界的控制字符的比特编码一样,否则就会出现帧定界的错误。
当传送的帧是用文本文件组成的帧时(文本文件中的字符都是从键盘上输入的),其数据部分显然不会出现像SOH或EOT这样的帧定界控制字符。可见不管从键盘上输入什么字符都可以放在这样的帧中传输过去,因此这样的传输就是透明传输。
但当数据部分是非ASCII码的文本文件时(如二进制代码的计算机程序或图像等),情况就不同了。如果数据中的某个字节的二进制代码恰好和SOH或EOT这种控制字符一样(见图3-6),数据链路层就会错误地“找到帧的边界”,把部分帧收下(误认为是个完整的帧),而把剩下的那部分数据丢弃(这部分找不到帧定界控制字符SOH)。
像图3-6所示的帧的传输显然就不是“透明传输”,因为当遇到数据中碰巧出现字符“EOT”时就传不过去了。数据中的“EOT”将被接收端错误地解释为“传输结束”的控制字符,而在其后面的数据因找不到“SOH”被接收端当作是无效帧而丢弃。但实际上在数据中出现的字符“EOT”并非控制字符而仅仅是二进制数据00000100。
前面提到的“透明”是一个很重要的术语。它表示:某一个实际存在的事物看起来却是好像不存在一样(例如,你看不见在你前面有块100%透明的玻璃的存在)。“在数据链路层透明传送数据”表示无论什么样的比特组合的数据都能够通过这个数据链路层。因此,对所传送的数据来说,这些数据就“看不见”数据链路层有什么妨碍数据传输的东西。或者说,数据链路层对这些数据来说是透明的。
为了解决透明传输问题,就必须设法使数据中可能出现的控制字符“SOH”和“EOT”在接收端不被解释为控制字符。具体的方法是:发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十大进制编码是1B,二进制是00011011)。而在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。这种方法称为字节填充(byte stuffing)或字符填充(character stuffing)。如果转义字符也出现在数据当中,那么解决方法仍然是在转义字符的前面插入一个转义字符。此,当接收端收到连续的两个转义字符时,就删除其中前面的一个。图3-7表示用字节填充法解决透明传输的问题。
上一篇:用帧首部和帧尾部封装成帧
上一篇:差错检测