数据链路和帧以及数据链路层的三个基本问题

目录

一、概述

二、数据链路和帧

1、链路(或物理链路)

2、数据链路(或逻辑链路)

3、帧

三、三个基本问题

1.封装成帧

2、透明传输

3、差错检测

3.1循环冗余检验 CRC 原理

3.2 CRC 冗余码的计算

3.3 注意 


一、概述

数据链路层属于计算机网络的低层。数据链路层使用的信道主要有以下两种类型:

(1)点对点信道。这种信道使用一对一的点对点通信方式,使用的协议为PPP协议。

(2)广播信道。这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专门的共享信道协议(CSMA/CD协议)来协调这些主机的数据发送。

数据链路和帧以及数据链路层的三个基本问题_第1张图片

数据链路和帧以及数据链路层的三个基本问题_第2张图片

数据链路和帧以及数据链路层的三个基本问题_第3张图片

 注意:不同的链路层可能采用不同的数据链路层协议

二、数据链路和帧

1、链路(或物理链路)

从一个节点到相邻节点的一段物理线路(有线或无线),而中间没有任何其他的交换节点。一条链路只是一条通路的一个组成部分。

2、数据链路(或逻辑链路)

把实现控制数据传输的协议的硬件和软件加到链路上,就构成了数据链路。现在最常用的方法是使用网络适配器(既有硬件,也包括软件)来实现这些协议。一般的适配器(即网卡)都包括了数据链路层和物理层这两层的功能。

数据链路=链路+协议

3、帧

定义:点对点信道数据链路层的协议数据单元。

数据链路和帧以及数据链路层的三个基本问题_第4张图片

数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出并上交给网络层。 

三、三个基本问题

1.封装成帧

在一段数据的前后分别添加首部和尾部,构成一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。

首部和尾部的一个重要作用就是进行帧定界(即确定帧的界限)。

最大传送单元MTU:规定了所能传送的帧的数据部分长度上限。

数据链路和帧以及数据链路层的三个基本问题_第5张图片

 用控制字符作为帧定界符:控制字符 SOH (Start Of Header) 放在一帧的最前面,表示帧的首部开始;控制字符 EOT (End Of Transmission) 放在一帧的末尾,表示帧的结束。

数据链路和帧以及数据链路层的三个基本问题_第6张图片

 2、透明传输

透明:指某一个实际存在的事物看起来却好像不存在一样。

“在数据链路层透明传送数据”表示:无论发送什么样的比特组合的数据,这些数据都能够按照原样没有差错地通过这个数据链路层。

问题:如果数据中的某个字节的二进制代码恰好和 SOH 或 EOT 一样,数据链路层就会错误地“找到帧的边界”,导致错误。

数据链路和帧以及数据链路层的三个基本问题_第7张图片

 解决方法:字节填充或字符填充。发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制编码是1B,二进制是00011011)。而在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。

数据链路和帧以及数据链路层的三个基本问题_第8张图片

3、差错检测

(1)比特差错: 比特在传输过程中可能会产生差错:1可能会变成0,而0也可能变成1。

(2)误码率BER:在一段时间内,传输错误的比特占所传输比特总数的比率。

数据链路和帧以及数据链路层的三个基本问题_第9张图片

3.1循环冗余检验 CRC 原理

在发送端,先把数据划分为组。假定每组 k 个比特。 假设待传送的一组数据 M= 101001(现在 k = 6), CRC 运算在后面再添加供差错检测用的 n 位冗余码,然后构成一个帧发送出去。一共发送 (k + n) 位。

数据链路和帧以及数据链路层的三个基本问题_第10张图片

 3.2 CRC 冗余码的计算

3.2.1 计算过程

(1)用二进制的模 2 运算进行2^{n} 乘 M 的运算,这相当于在 M 后面添加 n 个 0。

(2)得到的 (k + n) 位的数除以事先选定好的长度为 (n + 1) 位的除数 P,得出商是 Q ,余数是 R,余数 R 比除数 P 少 1 位,即 R 是 n 位。

(3)将余数 R 作为冗余码拼接在数据 M 后面,一起发送出去。

这种为了进行检错而添加的冗余码常称为帧检验序列 FCS (Frame Check Sequence)。

:循环冗余检验CRC和帧检验序列FCS并不是同一个概念。CRC是一种检测方法,而FCS是添加在数据后面的冗余码。FCS 可以用 CRC 这种方法得出,但 CRC 并非用来获得 FCS 的唯一方法。

3.2.2 模2运算

模2加法运算为:1+1=0,0+1=1,0+0=0,无进位,也无借位;

模2减法运算为:1-1=0,0-1=1,1-0=1,0-0=0,也无进位,无借位。

相当于二进制中的逻辑异或运算

:原始数据 M = 101001 除数 P = 1101

数据链路和帧以及数据链路层的三个基本问题_第11张图片

  得到: 发送数据 = 101001001(原始数据+FCS)

:设除数位数为n,原始数据后补n-1位0,余数保留n-1位。

3.2.3接收端CRC检验

把收到的每一个帧都除以同样的除数P(模2运算),然后检查得到的余数R。若得出的余数R=0,则判定这个帧没有差错,就接收;若余数R\neq0,则判定这个帧有差错(但无法确定究竟是哪一位或哪几位出现了差错),就丢弃。

3.2.4 生成多项式P(X)

用多项式表示循环冗余检验过程,用多项式表示生成的除数P,所以CRC又称多项式编码方法,这个多项式也称之为“生成多项式”。

例:用多项式P\left (X \right )=X^{3}+X^{2}+1表示上面的除数P=1101(最高位对应于X^{3},最低位对应于X^{0})。

现在广泛使用的生成多项式有:

数据链路和帧以及数据链路层的三个基本问题_第12张图片

3.3 注意 

(1) 仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受 。 即:“凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错”。以上所述的可以近似地表述为:“凡是接收端数据链路层接受的帧均无差错” (有差错的帧就丢弃而不接受)。

(2)可靠传输:数据链路层的发送端发送什么,在接收端就收到什么。

(3)传输差错可分为两大类: 比特差错; 传输差错:帧丢失、帧重复或帧失序等。

(4)在数据链路层使用 CRC 检验,能够实现无比特差错的传输,但这还不是可靠传输。 要做到可靠传输,还必须再加上帧编号、确认和重传等机制。

你可能感兴趣的:(计算机网络,网络)