1.数据链路层
数据链路层属于计算机网络的底层,使用的信道主要有两种类型,
1)点对点信道,这种信道使用一对一的点对点通信;
2)广播信道,这种信道使用一对多的广播通信方式,因此过程比较复杂,广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。
2.帧
点对点信道的数据链路层的协议数据单元。
数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出并上交给网络层。在互联网中,网络层协议数据单元就是ip数据报(简称为数据报、分组或包)。
3.数据链路层的三个基本问题
数据链路层的协议有很多种,但有三个基本问题是共同的:封装成帧、透明传输、差错检测。
1)封装成帧
就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。
2)透明传输
表示无论什么样的比特组合的数据,都能够按照原样没有差错地通过这个数据链路层。
3)差错检测
现实的通信链路都不会是理想的。
比特在传输的过程中可能产生差错:1可能变成0,0可能变成1,这就是比特差错。比特差错是传输差错中常见的一种。
目前在数据链路层广泛使用了循环冗余检验CRC(cyclic redundancy check)的检错技术,原理如下,
->在发送端,先把数据划分为组,假定每组k各比特,CRC运算就是在数据M的后面添加供差错检测用的n位冗余码,然后构成一个帧发送出去,一共发送(k+n)位,在所要发送的数据后面增加n位冗余码,虽然增大了数据传输的开销,当传输出现差错时,付出这种代价往往是值得的。
->举例n位冗余码得出的方法:
用二进制的模2运算进行2**n乘M的运算,这相当于在M后面添加n各0。得到的(k+n)位的数除以双方事先商定的长度为(n+1)位的除数P,得出商是Q,而余数是R(n位,比P少一位)。如下图,得到的余数R,作为冗余码拼接在数据M的后面发送出去(此时再除以P,结果为0)。
->在接收端,把接收到的数据以帧为单位进行CRC检验:把收到的每一个帧都除以同样的除数P(模2运算),然后检查余数,如果余数为0就接收,否则丢弃。(如果出现误码,而余数仍然为0的概率非常非常小)
本章小结