计算机网络数据链路层全攻略:从帧到差错控制的深度解读!!!

一、数据链路层的功能

数据链路层 使用 物理层 提供的“比特传输”服务

数据链路层网络层 提供服务,将网络层的IP 数据报(分组)封装成 帧,传输给下一个相邻结点

物理链路:传输介质(0 层)+物理层(1层)实现了相邻结点之间的“物理链路”

逻辑链路:数据链路层需要基于“物理链路”,实现相邻结点之间逻辑上无差错的“数据链路(逻辑链路)”

二、组帧(封装成帧)

主要问题:

  • 帧定界:如何让接收方能够确定帧的界限
  • 透明传输:接收方要能够去除"帧定界”的附加信息,把帧"恢复原貌"

四种组帧方法:

  1. 字符计数法
  2. 字节填充法
  3. 零比特填充法
  4. 违规编码法

字符计数法

原理:在每个帧开头,用一个定长计数字段表示帧长

最大缺点:任何一个计数字段出错,都会导致后续所有无法定界

字节填充法

原理:

  • 会在帧的开头加上 SOH 控制字符,帧的结尾加上 EOT 控制字符
  • 如果帧的数据部分包含“特殊字符”,则发送方需要在这些“特殊字符”前填充“转义字符ESC”
  • (接收方要做逆处理)

在帧的开头和末尾加上控制字符,若数据部分包含控制字符或转义字符,在其前面加转义字符

零比特填充法

原理:

  • 会在帧的开头和结尾加上特殊比特串表示帧开始/结束
  • 发送方需要对帧的数据部分进行处理,每当遇到连续5个1就填充一个0
  • 接受方需要对帧的数据部分进行逆处理,每当遇到连续5个1,就删掉后面的 0

注:HDLC 协议、PPP 协议使用此方法

违规编码法

原理:

  • 曼彻斯特编码:上跳0下跳1看中间,中必变,如果周期中间不跳变,则“违规
  • 在帧的开始和结尾处加上违规的曼彻斯特编码

三、差错控制

目标:发现并解决一个帧内部的"位错"

解决方案一:接收方发现比特错后丢弃帧,并通知发送方重传帧

检错编码:

  • 奇偶校验
  • CRC 校验(循环冗余校验)

解决方案二:由接收方发现并纠正比特错误

纠错编码:海明校验码

奇偶校验

概念:

信息位(有效数据):指帧的"数据部分

校验位(冗余位):即为了给帧的"数据部分"检错/纠错而附加的一些冗余比特

校验原理

  • 在信息位的首部或尾部添加一个校验位
  • 奇校验码:整个校验码(有效信息位和校验位)中“1”的个数为奇数。
  • 偶校验码:整个校验码(有效信息位和校验位)中“1”的个数为偶数。
  • 奇偶校验码仅能检测出奇数位错误,无纠错能力

循环冗余校验码(CRC)

循环冗余校验码的思想:

  • 数据发送方、接受方约定一个“除数”
  • K 个信息位+R 个校验位作为“被除数”,添加校验位后需保证除法的余数为 0
  • 收到数据后,进行除法检查余数是否为0若余数非0说明出错,则进行重传或纠错

理论上可以证明循环冗余校验码的检错能力有以下特点:

  • 可检测出所有奇数个错误
  • 可检测出所有双比特的错误
  • 可检测出所有小于等于校验位长度的连续错误

海明校验码(纠错编码)

奇校验码:整个校验码(有效信息位和校验位)中“1”的个数为奇数。

偶校验码:整个校验码(有效信息位和校验位)中“1”的个数为偶数。

偶校验:1010->01010,能发现奇数位错误,但无法确定是哪一位出错。

1 个校验位之只能携带 2种状态信息(对/错)

海明码设计思路:将信息位分组进行偶校验->多个校验位一>多个校验位标注出错位置

多个校验位能携带多种状态信息,(对/错,错在哪)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值