第三章 数据链路层
- 文中部分图片来源于王道考研教材,仅供参考
1. 功能
- 数据链路层在物理层提供服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。
功能一:为网络层提供服务。无确认无连接服务,有确认无连接服务,有确认面向连接服务。 有连接一定有确认!
功能二:链路管理,即连接的建立、维持、释放(用于面向连接的服务)。
功能三:组帧。 功能四:流量控制。 功能五:差错控制(帧错/位错)。
2. 组帧
- 封装成帧:在一段数据的前后部分添加首部和尾部,这样就构成了一个帧。
- 帧同步:接收方应当能从接收到的二进制比特流中区分出帧的起始和终止。
- 透明传输:不管所传数据是什么样的比特组合,都应当能够在链路上传送。
2.1 组帧的四种方法
- 字符计数法
- 字符(节)填充法
- 零比特填充法
- 违规编码法
2.1.1 字符计数法
- 帧首部使用一个计数字段(第一个字节,八位)来标明帧内字符数。
- 缺点:一旦一个帧出现了缺失字符等情况,会影响到后面的帧
2.1.2 字符(节)填充法
- 使用ASCII码,比如键盘上面的字符时,可以直接实现透明传输,但是使用非ASCII码,如二进制数字时,需要采用字符填充方法实现透明传输
- 如下图所示:SOH是开始,EOT是结束,ESC是转义
2.1.3 零比特填充法
- 在发送端,扫描整个信息字段,只要连续5个1,就立即填入1个0。
- 在接收端收到一个帧时,先找到标志字段确定边界,再用硬件对比特流进行扫描。发现连续5个1时,就把后面的0删除。
- 保证了透明传输:在传送的比特流中可以传送任意比特组合,而不会引起对帧边界的判断错误。
2.1.4 违规编码法
- 如下所示,比如使用曼彻斯特编码时,可以使用与曼彻斯特编码不同的编码方式定义首尾
3. 差错控制
3.1 检错编码
3.1.1 奇偶校验码
- n-1位信息元,1 位校验元
- 奇偶校验码特点:只能检测奇数位的出错情况,但并不知道哪些位出错了,也不能发现偶数位的出错情况,检错能力为50%
- 若采用奇校验,那么传输的数据中1的个数若是偶数个则可检测出错误,若1的个数是奇数个,则检测不出错误
3.1.2 CRC (循环冗余码)
- 生成多项式是题目会直接给出的
- r + 1 位是生成多项式的二进制位数,如果给出的是代数形式的多项式,需要会转换成二进制
- r 为最高项数
- 除法为模二除
- FCS的生成以及接收端CRC检验都是由硬件实现,处理很迅速, 因此不会延误数据的传输。
3.2 纠错编码
3.2.1 海明码
- 两个码字的对应比特取值不同的比特数称为这两个码字的海明距离(码距),在一个有效编码集中,任意两个码字的海明距离的最小值称为该编码集的海明距离(码距)
- 海明码纠错d位,需要码距为2d+1的编码方案;检错d为,则只需码距为d+1
- 确定校验码位数 r
- 确定校验码和数据的位置
- 放在2的n次方位置上,比如放在2、4、8、16 …
- 求出校验码的值
- 把序号化为二进制数,和序号中与 1 位置相同的(包括其本身)分为一组
- 对不同组的数进行二进制排列,进行偶校验的方式得出 0或1的结果,并填入所负责的校验码的位置中
- 检错并纠错