1.数据链路和帧
????链路(link),是从一个结点到相邻结点的一段物理线路,而中间没有其他的交换结点。当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输,当把实现这些协议的硬件和软件加到链路上,就构成了数据链路。 ????帧是数据链路层的协议数据单元,数据链路层将网络层交下来的数据构成帧发到链路上,把接收到的帧中的数据取出上交给网络层。 ????数据链路层不必考虑物理层之间如何实现比特传输的细节。可以简单地将其设想为沿着两个数据链路层之间的水平方向把帧直接发送给对方。
2.封装成帧
????封装成帧就是在一段数据的前后分别添加首部和尾部,构成了一个帧。网络层的IP数据报传送到数据链路层就成为帧的数据部分,添加首部和尾部后,就构成了完整的帧,就是数据链路层的数据传送单元。 ????帧的长度等于数据部分长度加上帧首部和尾部的长度,首部和尾部的一个作用就是进行帧定界,此外其中还包含一些控制信息。为了提高帧的数据传输效率,应当使数据部分长度尽可能地大于首部和尾部的长度,但每一种数据链路层协议都规定了所能传送的帧的数据部分长度上限——最大传送单元MTU。 ????当数据由可打印的ASCII码组成时,帧定界可以使用特殊的帧定界符。ASCII码是7位编码,一共可组成128个不同的ASCII码,可打印的是95个,不可打印的控制字符有33个。控制字符SOH放在一帧的最前面,表示帧的首部开始,EOT表示帧的结束。
3.透明传输
????由于帧的开始和结束的标记使用专门指明的控制字符,因此所传输的数据中的任何8比特的组合一定不允许和用作帧定界的控制字符的比特编码一样,否则会出现错误。 ????如上图所示的帧,中间的数据部分出现了帧定界符EOT,那么接收端会将EOT以后的数据丢弃,造成传输错误。 ????透明是一个重要术语,它表示一个实际存在的事物看起来像不存在一样。在数据链路层透明地传输数据表示,任何比特组合的数据都能够按照原样没有差错地通过数据链路层。 ????为了解决透明传输的问题,提出了解决方法:发送端的数据链路层在数据中出现控制字符SOH或者EOT的前面插入一个转义字符ESC(二进制编码为00011011),接收端的数据链路层在把数据送往网络层前删除插入的转义字符。这种方法称为字节填充或者字符填充。
|