数据链路层最基本的服务是将源计算机网络层来的数据可靠的传输到相邻节点的目标计算机的网络层
数据链路层
功能
保证数据(帧)传输的有效、可靠
负责差错检测和控制, 以及流量的控制(基于反馈形式)
所处理的协议数据单元 PDU 为 Frame
Frame = 帧头 + 载荷 + 帧尾 其中载荷为网络层传送下来的信息—>packet
四种成帧方式
- 字符计数法 (将帧头第一个字段标识为帧长)
- 字节填充的标志字节法 (通过在帧的头尾处添加 flag, 解决了 1 方法中帧长识别错误导致后续帧错传的情况)
- 比特填充的标志比特法 (解决了仅适用于 8 位整数倍的比特数的帧的不足)
- 物理层编码违例法 (将冗余的信号用于 Flag)
差错处理
- 纠错: 改错为正 (开销大, 适用于无线网)
- 检错: 只发现错误,不改 (常用于局域网)
海明距离
两个 N 位码字中,不同码字的个数成为海明距离
海明距离为 d+1 能检测出 d 位差错
海明距离为 2d+1 能纠正 d 位错误
如下图所示, 当海明距离为 3 时. 此时超过 5=2d+1 中的 d 的数量. 纠正失败
海明距离越大,纠错能力越强,但合法码字减少,传输效率降低
冗余位 r
传输位为 m,冗余位为 r,那么转化成的码字共 m+r 位
m+r+1<=2^r
即传输 m 位数据,冗余位要满足上述式子
海明纠错码
在 N 位码字中, 凡是 2 的乘幂的位都是校验位,其余的为数据位
数据位能展开成检验位的和 如:5=1+4
如图所示,校验码根据使用奇偶校验的方式填入 0 或 1
校验位根据校验集合中 1 校验位根据校验集合中的信息码的奇偶数来填入
举例(偶校验情况下)
B1 校验集合为所有的奇数,因为所有奇数的数据位,其展开的校验位的和中都有 2^0
根据信息码 B3B5B7B9B11:10100 校验位应填入 0
接收信息时纠错
接收方接收信息时设置了一个变量 Counter=0,通过检测校验位的检验集合中信息码的奇偶数来判断是否出错,出错则 Counter+= 校验位的位数,最终得到出错的码字位数 Counter,并进行改错
检错码
- 奇偶校验
- 互联网校验和
- 循环冗余检错码