数据链路层属于计算机网络的低层。使用的信道主要有两种类型。
- 点对点信道 : 这种信道使用一对一的点对点通信方式。
- 广播信道 : 这种信道使用一对多的广播方式,广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。
使用点对点信道的数据链路层
首先我们需要明确一下链路和数据链路并不是一回事。
- 链路 :从一个结点到相邻结点的一段物理线路(有线或无线),中间没有任何其他的交换结点。两个计算机的通信路径旺旺要经过许多段这样的链路。
- 数据链路 :在一条线路上传送数据时,除了必须的物理线路外,还必须要有一些通信协议(早期也叫通信规程)来控制这些数据的传输。把这些协议的硬件和软件加到链路上,就构成了数据链路。
现在最常用的方法是使用网络适配器(既有硬件也有软件)来实现这些协议。一般的适配器都包括数据链路层和物理层这两层功能。
帧
数据链路层把网络层下发的数据构成帧发送到链路上,以及把接收到的帧中的数据取出并上交给网络层。
在因特网中,网络层协议数据单元就是IP数据报(亦称数据报、分组或包)。
封装成帧
在一段数据的前后分别添加首部和尾部,就能够构成一个帧。
接收端在收到物理层上交的比特流之后,就能根据首部和尾部的标记,从比特流中识别帧的开始和结束。
帧就是数据链路层数据传送单元
一个帧的帧长等于帧的数据部分长度加上帧首部和帧尾部的长度
透明传输
由于帧的开始和结束的标记是使用专门指明的控制字符,因此,所传输的数据中的任何8比特的组合一定不允许和用作帧定界的控制字符的比特编码一样,否则就会出现错误。
透明 : 透明表示某一个实际存在的事物看起来好像不存在一样。就像在你面前有一面100%透明的玻璃一样。
-
字节(符)填充 :为了解决透明传输的问题,发送端的数据链路层在数据中出现的控制字符之前插入一个转入字符。
如果转义字符也出现在数据当中,那么解决方法则是在前面再插入一个转移字符, 当接收端收到连续的两个转移字符时,就删除前面一个
差错检测
- 比特差错 : 比特在传输过程中可能会产生差错:1可能会变成0,而0页可能变成1 。
- 误码率BER(Bit Error Rate) : 在一段时间内,传输错误的比特占所传输比特总数的比率。
循环冗余检验CRC(Cyclic Redundancy Check)
- 原理
举例说明:
在发送端,先把数据划为分组,假定每组k个比特,先假定带传送的数据M = 101001(k=6)。CRC运算就是在数据M的后面添加共差错检测用的n位冗余码。
这n位冗余码可用以下方法得出。用二进制的模2运算(加法时不进位,减法按加法规则计算),这相当于在M后面添加n个0。�得到的(k+n)位的数除以收发双方事先商定的长度为(n+1)位的除数P,得出商是Q而余数是R(n位,比P少一位)。
这个例子中,假定除数P = 1101 (即n=3)。经模2计算后的结果是 Q = 110101,余数R = 001.这个余数R就作为冗余码拼接在M后面发送出去。
这种为了进行检错而添加的冗余码常称为帧检验序列FCS(Frame Check Sequence)