首页 理论教育 数据链路层透明传输的实现及字符填充法

数据链路层透明传输的实现及字符填充法

时间:2023-11-09 理论教育 版权反馈
【摘要】:于是,数据链路层的透明传输被破坏,所传输的帧无法被正确识别。图3-5被破坏的透明传输为了保障帧的透明传输不被破坏,需要使在数据部分可能出现的控制字符SOH和EOT在接收方的数据链路层不被理解为帧定界符,为了达到这个目的,人们定义了一个新的控制字符,即转义字符ESC。图3-6利用字符填充法实现的透明传输采取上述的字符填充法可以有效保障数据链路层的透明传输。

数据链路层透明传输的实现及字符填充法

当所传输的是由文本文件组成的帧时,类似SOH和EOT这样的控制字符永远不会出现在帧的数据字段中。在这种情况下,可以利用SOH和EOT两个控制字符唯一确定帧的边界,从而保障帧的有效传输。这种有效传输被称为“透明传输”。对于计算机网络而言,“透明”是一个非常重要的术语,它的原始含义是指某个真实存在但人们却看不到或者感觉不到的事物,借指幕后工作,如看一场电影时,人们会被演员的精彩演绎而吸引,但是却看不到服装、灯光、摄影化妆等这些幕后工作者所作的贡献。对于观众而言,他们就是“透明”的。所以,数据链路层的透明传输就是指无论是哪一种比特组合的数据,都可以原封不动、无差别的通过数据链路层传输出去,对于这些数据而言,它们不关心,或者说“看不见”数据链路层所做的工作,对它们来说,数据链路层是“透明”的。

当所传输的帧是由非文本文件组成的帧时(如由二进制代码组成的计算机程序、图像或视频文件等),上述的规则可能就会被打破,数据部分中某个二进制代码可能就会与SOH或EOT这种控制字符的二进制编码一致,这种情况一旦出现,就会引发帧边界的错误。例如,当结束标志EOT的二进制编码出现在数据部分时,接收方的数据链路层就会错误地认为这是帧的结束标志,从而将帧的一部分当成了完整的帧“错误”地接收下来,把这一帧剩余的部分当作出错数据而直接丢弃(因为在后续数据中没有找到帧的起始标志SOH)。

如图3-5所示,当前所传输的帧的数据部分中,包含了字符“EOT”(其实是包含了二进制字符串00000100,接收方的数据链路层会错误地把这个字符串理解为帧结束标志EOT),当接收方的数据链路层读到这个字符串时,就会错把它当成是帧结束标志,从而取出了一个残缺的帧,而EOT字符后面的部分,被当成了无效帧进而被丢弃。于是,数据链路层的透明传输被破坏,所传输的帧无法被正确识别。

图3-5 被破坏的透明传输(www.xing528.com)

为了保障帧的透明传输不被破坏,需要使在数据部分可能出现的控制字符SOH和EOT在接收方的数据链路层不被理解为帧定界符,为了达到这个目的,人们定义了一个新的控制字符,即转义字符ESC(其十六进制编码为1B,对应的二进制编码为00011011)。接下来的具体做法是:发送方的数据链路层在进行封装成帧时,对数据部分进行检查,如果发现其中包含对应的控制字符SOH或EOT,就在其前面插入一个转义字符ESC(在具体操作时,以控制字符的二进制编码为查找标准)。如果发现转义字符ESC本身也在数据字段中,就在其前面再插入一个转义字符ESC。上述做法叫作字符填充法,同时,接收方的数据链路层对接收到的数据帧进行检查,如果遇到一个转义字符ESC,就将其删除。如果遇到连续的两个转义字符ESC,就将前面的转义字符删除,并且接收方的数据链路层知道紧跟在转义字符ESC后面的是与某个控制字符二进制编码相同的字符串,而不是真正的控制字符。利用字符填充法实现的透明传输问题如图3-6所示。

图3-6 利用字符填充法实现的透明传输

采取上述的字符填充法可以有效保障数据链路层的透明传输。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈