数据链路层——概述

来源:互联网 发布:基金分析软件 编辑:程序博客网 时间:2024/05/22 08:25

链路是一条点对点的物理线路,中间没有任何其他交换站点。一条链路只是一条通路的一个组成部分。

数据链路除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。

在数据链路层中称这种数据块为帧(frame),帧是数据链路层的传送单位。数据链路层给数据报加上帧头、帧尾、物理层地址和检验值。

1. 作用

屏蔽掉底层(物理层)的差错,从而为上层(网络层)提供良好的服务。

2. 数据链路层基本结构与基本模型:

这里写图片描述
数据链路层通信的基本步骤:
1. 节点A的数据链路层把网络层的IP数据报封装成帧。(封装成帧
2. 节点A吧封装好的帧传递给节点B。(透明传输
3. 节点B从帧中提取出数据包发送给网络层。(差错检验

这里写图片描述
这里写图片描述

以太网的帧格式:
这里写图片描述

3. 三个基本问题

  1. 封装成帧
    封装成帧就是在一段数据前后分别添加首部和尾部,然后构成一个帧。封装成帧确定帧的界限。首部和尾部的作用就是进行帧定界。
    这里写图片描述

  2. 透明传输
    透明传输是指不管所传数据是什么样的比特组合,都应当能够在链路上传送。当所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使接收方不会将这样的数据误认为是某种控制信息。这样才能保证数据链路层的传输是透明的。
    若传输的数据是ASCII码中“可打印字符(共95个)”集时,一切正常。若传输的数据不是仅由“可打印字符”组成时,就会出现问题,SOH表示帧开始符,EOT表示帧结束符,如图所示:
    这里写图片描述

    解决方法:

    • 发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面加一个转义字符“ESC”(十六进制编码是1B)。
    • 字节填充或字符填充:接收端的数据链路层在将数据送往网络层前删除插入的转义字符。
    • 如果转义字符也出现在数据中,就在转义字符前也插入一个转义字符。当接收端收到连续两个转义字符时,就删除前一个转义字符。
      这里写图片描述
  3. 差错控制
    传输过程中可能产生比特差错:1可能变成0,0可能变成1。
    在一段时间内,传输错误的比特占所传输比特总数的比例成为误码率BER(Bit Error Rate)。误码率与信噪比有很大关系。因此需要采用差错检测。

    在A向B发送数据的链路中间会经过多个路由器,路由器在数据链路层检测数据是否正确,如果错误就丢弃这个帧,以保证通过这个路由器传输过去的(不包括丢弃的)都是正确的帧。

    链路层只进行差错检验,不进行差错纠正,差错纠正由传输层进行,由传输层进行可靠传输。链路层丢弃错误的帧后,发送端长期得不到帧接收确认信息,就会重新发送一次该帧。

    循环冗余校验CRC

    1. 数据链路层传输中广泛使用了循环冗余校验CRC。

    2. 在发送端,先把数据划分为组,每组k个比特。
      假设待传送的一组数据M=101001(k=6),我们在M的后面再添加供差错检测用的n位冗余码一起发送。

      冗余码的计算:

      • 在二进制M后面添加n个0。假设n=3,则M变为(k+n)位的101 001 000.
      • 把(k+n)位的数除以事先选定好的长度为(n+1)位的除数P,得到商是Q,余数是R,R为n位,也就是M的CRC冗余校验码。把余数R作为冗余码添加在数据M的后面发送过去。发送数据是 101 001 001,共(k+n)位。
        这里写图片描述
        注:可以用生成多项式来表示循环冗余的除数,例如
        P(X)=X^3+X^2+1可以表示1101这个除数。

      在数据后面添加上的冗余码称为帧校验序列FCS(Frame Check Sequence)。循环冗余检验CRC和帧检验序列FCS并不等同:

      • CRC是一种常见的检错方法,而FCS是添加在数据后面的冗余码。
      • FCS可以用CRC这种方法得出,但CRC并非用来获得FCS的唯一方法。

      CRC检测不能确定究竟是哪一个或哪几个比特出现了差错,也不能保证如果出现错误就一定能检测出来(错误数据也可能得到正确的余数),但是只要经过严格的挑选,并使用位数足够多的除数P,那么出现检测不到的差错的概率就很小很小。

数据链路层使用的信道主要两种类型:

1)点对点信道:使用一对一的点对点通信方式。
2)广播信道:使用一对多的广播通信方式。由于连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。

参考文献
http://www.jianshu.com/p/3dce189f0234
《计算机网络》第6版