先言
- 数据链路层的功能
- 数据链路层的两种信道
- 局域网、广域网
- 数据链路层的设备
数据链路层的入门
1.1、数据链路层的基本概念
(1)结点(节点):主机、路由器;
(2)链路:网络中两个结点之间的物理通道,链路的传输介质主要有双绞线、光纤和微波。分为有线链路、无线链路。
(3)数据链路:网络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路。
(4)帧:链路层的协议数据单元,封装网络层数据报。
1. 数据链路层:负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报。
2. 数据链路层可说个是搬运工!
1.2、数据链路层的功能简述
(1)数据链路层在物理层提供服务的基础上向网络层提供服务,其最基本的服务是:将源自网络层的数据可靠地传输到相邻节点的目标机网络。其主要作用是:加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。
(2)数据链路层的具体功能:
-
功能1:为网络层提供服务。无确认无连接服务,有确认无连接服务,有确认面向连接服务。
有连接一定有确认!俗话:即想(合规合法)牵手就得有同意!
-
功能2:链路管理,即连接的建立、维持、释放(用于面向连接的服务)。
-
功能3:组帧。
-
功能4:流量控制。
限制发送方的发送
-
功能5:差错控制(帧错/位错)。
封装成帧 & 透明传输
2.1、封装成帧
(1)封装成帧:就是在一段数据的前后部分添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
首部和尾部包含许多的控制信息,它们的一个重要作用:帧定界(确定帧的界限)。
(2)帧同步:接收方应当能从接收到的二进制比特流中区分出帧的起始和终止。
(3)组帧的4种方法:
- 字符计数法;
- 字符(节)填充法;
- 零比特填充法;
- 违规编码法;
2.2、透明传输
(1)透明传输:指不管所传输的数据是什么样的比特组合,都应当能够在链路上传送。因此,链路层就"看不见"有什么妨碍数据传输的东西。
(2)当所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使接收方不会讲这样的数据误认为是某种控制信息。这样才能保证数据链路层的传输是透明的。
2.3、组帧的4种方法
1)字符计数法
- 帧首部使用一个计数字段(第一个字节,8位)来标明帧内的字符数。
- 痛点:鸡蛋装在一个篮子里了。
1. 当上图的第1个帧的第一个字节出错(由5出错为4)时,就会导致告诉接收方这个帧有4个字符,进一步导致第2个帧的首个字符由原来的5向前换成原来第一个帧的最后一个字符4;最终导致后面的帧都发生错误。
2. 即一步错,步步错。因而不常用。
2)字符(节)填充法;
1. SOH、EOT为定界符,用来定界帧的起始和终止;
2. 当接收方看到00000001时,就知道是帧的开端;当接收方收到00000010,就知道是帧的末端;但这种方式只适合文本文件。文本文件的字符都是从键盘上输入的,都是ASCII码,不会有重复字符(字节);
3. 当传送的帧是由非ASCII码的文本文件组成时(二进制代码的程序或图像等),可能会有重复字符(字节);进而导致错误地找到帧的边界,也把帧后面的数据丢弃了;
- 字符(节)填充法的具体实现过程:
- 加入转义字符 ESC;
- 加入转义字符 ESC;
- 当传送的帧是由文本文件组成时(文本文件的字符都是从键盘上输入的,都是ASCII码)。不管从键盘上输入什么字符都可以放在帧里传过去,即透明传输。
- 当传送的帧是由非ASCII码的文本文件组成时(二进制代码的程序或图像等),就要采用字符填充方法实现透明传输。
3)零比特填充法;
1. 利用标志符01111110,在发送时数据部分逢5个1填充0,在接受时数据部分逢5个1删掉0;
2. 过程简单,很好地实现了透明传输;
操作:
- 在发送端,扫描整个信息字段,只要连续5个1,就立即填入1个0。
- 在接收端,收到一个帧时,先找到标志字段确定边界,再用硬件对比特流进行扫描。发现连续5个1时,就把后面的0删除。
保证了透明传输:在传送的比特流中可以传送任意比特组合,而不会引起对帧边界的判断错误。
4)违规编码法;
1. 如曼切斯特编码:每个比特都是高-低、低-高其实是在物理层比特编码的时候来实现透明传输的一种方法,如曼切斯特编码:每个比特都是高-低、低-高这两种,因而可以用"高-高","低-低"来定界帧的起始和终止。
-
可以用"高-高","低-低"来定界帧的起始和终止。
-
由于字节计数法Count字段的脆弱性(其值若有差错将导致灾难性后果)及字符填充实现上的复杂性和不兼容性,目前较普遍使用的帧同步法是比特填充和违规编码法。
差错控制
1、差错从何而来?
(1)笼统地说,就是噪声引起的。
【全局性】
-
由于线路本身电气特性所产生的随机噪声(热噪声),是信道固有的,随机存在的。
-
解决办法:提高信噪比来减少或避免干扰。
(对传感器下手)
【局部性】
-
外界特定的短暂原因所造成的冲击噪声,是产生差错的主要原因。
-
解决办法:通常利用编码技术来解决。
(2)差错的两类·:
- 位错【比特出错,1变0,0变1】
- 帧错:发送 [#1]-[#2]-[#3]
- 丢失:收到[#1]-[#3]
- 重复:收到[#1]-[#2]-[#2]-[#3]
- 失序:收到[#1]-[#3]-[#2]
(3)链路层为网络层提供服务:
- 无确认无连接服务 —— 通信质量好,有线传输链路
- 有确认无连接服务 —— 通信质量差,无线传输链路
- 有确认面向连接服务 —— 通信质量差,无线传输链路
2、数据链路层的差错控制
(1)差错控制(比特错):
- 检错编码
- 奇偶校验码
- 循环冗余码
- 纠错编码
- 海明码
(2)冗余编码
在数据发送之前,先按某种关系附加上一定的冗余位,构成一个符合某一规则的码字后再发送。当要发送的有效数据变化时,相应的冗余位也随之变化,使码字遵从不变的规则。接收端根据收到码字是否仍符合原规则,从而判断是否出错。
(3)编码的区别:
- 数据链路层编码和物理层的编码与调制不同。
- 物理层编码针对的是的单个比特,解决传输过程中比特的同步等问题,如曼切斯特编码。
- 而数据链路层的编码针对的是一组比特,它通过冗余码的技术实现一组二进制比特串在传输过程是否出现了差错。
3、检错编码——奇偶校验码
小练:如果一个字符S的ASCII编码从高到低依次为1100101,采用奇校验,在下述收到的传输后字符中,哪种错误不能检测?
A. 11000011 B. 11001010 C. 11001100 D. 11010011
奇偶检验码的特点:
- 只能检查出奇数个比特错误,检错能力为50%。
4、检错编码——CRC循环冗余码
(1)CRC循环冗余码的思想
(2)使用CRC循环冗余码的所需知识
1. 最终发送的数据:
要发送的数据 + 帧检验序列/冗余码,即FCS
2. 如何计算冗余码
(1)加0 假设生成多项式G(x)的阶为r,则加r个0
(2)模2除法 数据加0后除以多项式,余数为冗余码/FCS/
CRC检验码的比特序列
3. 10011表示成多项式为:
x4 + x1 + x0
= x4 + x1 + 1
阶为4
4. 区别:
CRC是检错编码的方法;
FCS是冗余码;
(3)接收端的检错过程:
- 把收到的每一个帧都要除以同样的除数,然后检查得到的余数R;
- 余数为0,则判定这个帧没有差错;接收;
- 余数不为0,则判定这个帧由差错(无法确定到位);