计算机网络数据链路层
数据链路层的作用
数据链路层使用的信道
-1使用点对点信道的数据链路层
1.数据链路和帧
(1)链路 (link) 是一条无源的点到点的物理线路段,中间没有任何其他的交换结点。
一条链路只是一条通路的一个组成部分。
(2)数据链路 (data link) 除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
现在最常用的方法是
1.使用适配器(即网卡)来实现这些协议的硬件和软件。
2.一般的适配器都包括了数据链路层和物理层这两层的功能。
(3)也有人采用另外的术语。这就是把链路分为物理链路和逻辑链路。
(4)物理链路就是上面所说的链路。
(5)逻辑链路就是上面的数据链路,是物理链路加上必要的通信协议。
(6)早期的数据通信协议曾叫做通信规程 (procedure)。因此在数据链路层,规程和协议是同义语。
数据链路层传送的是帧
数据链路层像个数字通道
1.常常在两个对等的数据链路层之间画出一个数字管道,而在这条数字管道上传输的数据单位是帧。
2.数据链路层不必考虑物理层如何实现比特传输的细节。甚至还可以更简单地设想好像是沿着两个数据链路层之间的水平方向把帧直接发送到对方
2.三个基本问题
数据链路层协议有许多种,但有三个基本问题则是共同的。这三个基本问题是:
1.封装成帧
封装成帧 (framing) 就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。
首部和尾部的一个重要作用就是进行帧定界。
用控制字符进行帧定界的方法举例
当数据是由可打印的 ASCII 码组成的文本文件时,帧定界可以使用特殊的帧定界符。
控制字符 SOH (Start Of Header) 放在一帧的最前面,表示帧的首部开始。另一个控制字符 EOT (End Of Transmission) 表示帧的结束。
2.透明传输
**透明传输:**如果数据中的某个字节的二进制代码恰好和 SOH 或 EOT 一样,数据链路层就会错误地“找到帧的边界”。
解决透明传输问题
解决方法:字节填充 (byte stuffing) 或字符填充 (character stuffing)。
1.发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制编码是1B)。
2.接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
3.如果转义字符也出现在数据当中,那么应在转义字符前面插入一个转义字符 ESC。当接收端收到连续的两个转义字符时,就删除其中前面的一个。
透明
指某一个实际存在的事物看起来却好像不存在一样。
“在数据链路层透明传送数据”表示无论发送什么样的比特组合的数据,这些数据都能够按照原样没有差错地通过这个数据链路层。
用“字节填充”法解决透明传输的问题
3.差错控制
在传输过程中可能会产生比特差错:1