基本概念:
数据链路层属于计算机网络的低层。主要有两种信道:(1)点对点信道(2)广播信道
当主机a1向a2传送数据时,通过以下方式传播:
所谓链路(link)就是从一一个结点到相邻结点的一段物理线路 (有线或无线),而中间没有任何其他的交换结点。在进行数据通信时,两台计算机之间的通信路径往往要经过许多段这样的链路。可见链路只是一条路径的组成部分。
数据链路(data link)则是另一个概念。这是因为当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输(这将在后面几节讨论)。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。现在最常用的方法是使用网络适配器(既有硬件,也包括软件)来实现这些协议。一一般的适配器 都包括了数据链路层和物理层这两层的功能。
数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出并上交给网络层。在互联网中,网络层协议数据单元就是IP数据报(或简称为数据报、分组或包)。
3.1使用点对点信道的数据链路层
3.1.1数据链路和帧
3.1.2 三个基本问题
三个基本问题:封装成帧,透明传输,差错检测。
封装成帧(framing)就是在- . 段数据的前后分别添加首部和尾部,这样就构成了一个帧。每一种链路层协议都规定了所能传送的帧的数据部分长度上限一最大传送单元MTU。基本原理如下图:
2.透明传输
透明的概念:某一个实际存在的物体看起来却好像不存在一样。
“在数据链路层透明传送数据”表示无论什么样的比特组合的数据,都能够按照原样没有差错地通过这个数据链路层。
为了解决透明传输问题,就必须设法使数据中可能出现的控制字符“SOH"和“EOT"在接收端不被解释为控制字符。具体的方法是:发送端的数据链路层在数据中出现控制字符“SOH"或“EOT"的前面插入-一个转义字符“ESC”(其十六进制编码是1B,二进制是00011011)。而在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。这种方法称为字节填充(byte stfing)或字符填充(character sufing)。 如果转义字符也出现在数据当中,那么解决方法仍然是在转义字符的前面插入一个转义字符。因此,当接收端收到连续的两个转义字符时,就删除其中前面的一个。
3.差错检测
比特在传输过程中可能会出错,比如0传成1,1传成0,这就是比特差错。
因此,为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。目前在数据链路层广泛使用了循环冗余检验CRC (Cyclic Redundancy Check)的检错技术。
在发送端,先把数据划力为组,假定每组k个比特。现仅正付传达的奴据M =101001(k=6)。CRC运算就是在数据M的后面添加供差错检测用的n位冗余码,然后构成一个帧发送出去,一共发送(k + n)位。
这n位冗余码可用以下方法得出。用二进制的模2运算进行2"乘M的运算,这相当于在M后面添加n个0。得到的(k + n)位的数除以收发双方事先商定的长度为(n + 1)位的除数P,得出商是Q而余数是R(n位,比P少-位)。关于除数P下面还要介绍。在图3-8所示的例子中,M= 101001 (即k=6)。假定除数P= 1101 (即n= 3)。经模2除法运算后的结果是:商Q = 110101 (这个商并没有什么用处),而余数R = 001.这个余数R就作为冗余码拼接在数据M的后面发送出去。这种为了进行检错而添加的冗余码常称为帧检验序列FCS (Frame Check Sequence)。因此加上FCS后发送的帧是101001001 (即2"M + FCS),共有(k + n)位。
如下图所示:
最后,若得出的余数为0,这个帧就没有差错,就可以接受。
如果不是0,就判定这个帧有差错。
3.2 点对点协议PPP
在设计PPP协议时要考虑以下方面的要求:
(1)简单
(2)封装成帧 PPP协议必须规定特殊的字符作为帧定字符(标志帧开始或结束的字符),以准确找到帧开始或结束的位置。
(3)透明性 PPP协议必须保证数据传输的透明性。
(4)多种网络层协议 PPP协议必须能在同一条物理链路上同时支持多种网络层协议。
(5) 多种类型链路
(6)差错检测 理由同上。
(7)检测连接状态 必须有一种机制检测链路是否处于正常连接状态。
(8)最大传送单元
(9)网络层地址协商 PPP协议必须提供-种机制使通信的两个网络层(例如,两个IP层)的实体能够通过协商知道或能够配置彼此的网络层地址。
(10)数据压缩协商:PPP协议必须提供一种方法来协商使用数据压缩算法。
本博客先到这里,更多内容请阅读下篇博客。