计算机网络——数据链路层(一)

计算机网络——数据链路层(一)

一、数据链路层概述

1.1 功能

  • 为网络层提供服务,良好的服务接口。
  • 保证数据传输的有效、可靠。
    1. 处理传输错误:差错检测和控制。
    2. 流量控制:基于速率、基于反馈。

数据链路层处理的协议数据单元PDU是数据帧
在这里插入图片描述
帧是由帧头帧尾和载荷构成。
帧头里面主要包含有:定位需要的地址、物理地址信息。
帧尾主要是做帧的效验 。

1.2 成帧

数据链路层数据链路层使用物理层提供的服务,物理层处理的是位流,数据电路层处理的是帧。

将原始的位流分散到离散的帧中叫成帧,成帧的方法有:

  • 字符统计法
  • 带字节/字符填充的标志字节法
  • 比特填充的比特标志法
  • 物理层彪马违例法

1.3 字符统计法

发送方:在每个帧头部中的第一个字段,标识帧的长度,总共有多少字符数。
接收方:通过第一个字段,就知道帧有几个字符,在哪里结束帧。
在这里插入图片描述
优点:简单
缺点:一旦出错,无法恢复。
现在已经很少使用

1.4 字节填充的标志字节法

这种方法考虑了错误之后重新同步的问题,让每一帧都用一些特殊的字节作为开始和结束。

缺点:

  • 容易造成帧界的混淆——增加转义字符
  • 依赖于八位字符

使用这种方法会出现一个问题:传输的数据中含有标记,会和帧界混淆。
针对这种情况需要增加转义字符
在这里插入图片描述
如上图是几种常见的增加转义字符的情况。
比如第一行,当头部出现FLAG时,在其前面加上ESC标记。

1.5 比特填充的标志比特法

  • 这是一种面向二进制的帧格式,把所有需传输的数据以比特位一字排开,并以特殊的位模式01111110作为帧标志,即一个帧的的开始。
  • 当帧中出现一个与帧标志相同的位串01111110,则在5个1后插入一个0,即变成01111101,接收方自动删除第5个1后的0。这称为位填充法(零比特填充法),也称为透明传输
  • 如果由于干扰,一个帧没内有正确接收,则可扫描接收串,一旦扫描到01111110,即新的一帧从此开始。

在这里插入图片描述

1.6 物理层编码违例法

在曼切斯塔编码中,连续的高电平或连续的低电平可用作帧边界

  • 采用冗余编码技术,如曼切斯特编码,即两个脉冲宽来表示一个二进制位。
  • 数据0:低-高电平对
  • 数据1:高-低电平对
  • 高高电平对和低低电平对没有使用,可用作帧边界。

二、差错处理概述

任何信道,即使是光纤,也会出错。

处理错误主要有两种手段:
纠错:恢复出真确的来。
检错:仅仅检出错误,不恢复,通常伴随重传。

错误主要有两类错误:
单个错误:分散在各块数据中。
突发错误:集中于一个数据块,整个块都是错误。

2.1 纠错码

一种前向纠错技术:发现错误,从错误中恢复出正确的来。因为其需要太多的冗余位,纠错开销太大,在有线网络中极少使用,主要用于无线网络中。

2.2 检错码

只能发现错误,不能从错误中恢复,但可采用重传。计算机网络中主要采用循环冗余码(CRC)

2.3 码字

包含数据位和检验位的n位单元。

2.4 海明距离

两个码字的海明距离:两个码字之间不同位的数目。

2.5 全部码字的海明距离

全部码字任意两个码字之间海明距离的最小值。

2.6 海明距离的意义

如果海明距离为d,则一个码字需要发生d个1位才能变成另外一个码字

2.7 海明距离与检错的关系

海明距离为d+1的编码能检测出d位差错。

因为在距离为d+1的检验码中,只改变d位的值,不可能产生领另一个合法码,如奇偶校验码,海明距离为2,能查出单个错。

例:检错码(奇偶位)

在这里插入图片描述

例:偶校验

在这里插入图片描述

2.8 海明距离与纠错的关系

海明距离为2d+1的编码,能纠正d位差错。因为此时如果一个码字发生差错,他仍然距离原来的码字距离最近,可以直接恢复为该码。

例:纠错码

在这里插入图片描述

海明距离增加,纠错能力也增加。
当一个系统中海绵距离增加的时候,合法码字就少了,即传输效率降低。

三、纠1位错的海明码

3.1 计算冗余位

纠一位错需要的冗余位(emm,这个我没看懂)。
在这里插入图片描述
在这里插入图片描述

3.2 海明纠错码

在这里插入图片描述

3.3 如何决定每个数据位的校验位

在这里插入图片描述
在这里插入图片描述

3.4 校验位的计算

例如 m = 7

在这里插入图片描述
在这里插入图片描述
如上图,使用偶校验,计算出n = 11,将要传输的信息码1001000写进去。
然后根据一个校验集合里的1的个数是偶数的规则,进行填数。
例如1的校验集合是所有的奇数,在这个信息码中对应的是B3 B5 B7 B9 B11,分别是:10100,有2个1,偶数,所以1校验位填上0。
以此类推。
在这里插入图片描述
上图清晰的列出了对应数据位填充的校验位。

3.5 海明码纠错过程(接收端)

  1. 将差错计数器置0,counter = 0
  2. 当海明码数据到达接收端后,接收端逐个检查各个校验位的奇偶性。
  3. 如果发现某一校验位和它所检测的集合的奇偶性不正确,就将检验位的编号加到差错计数器中,最终counter=0则无差错,≠0则counter的值便是出错的位。

在这里插入图片描述

3.6 利用海明码纠正突发错误

  1. 将连续的k个码字按行排列成矩阵
  2. 发送数据时,按列发送,每列k位
  3. 如果一个突发错误长度是k位,则在k个码字中,至多只有一位受到影响,正好可以用海明码纠错恢复。
    在这里插入图片描述

四、检错码

纠错需要较多的冗余位,信道利用率不高。在局域网中,主要使用的事检错码:奇偶校验码、互联网校验和、循环冗余校验码等等。

4.1 奇偶校验

奇偶位取值等同于队数据进行模2和运算。
在这里插入图片描述
在这里插入图片描述

4.2 校验和

校验和通常是按照N位码字来进行模2加运算,发放将运算结果附在数据报文末尾,作为校验位。例如:16位的互联网补码校验和。

4.3 循环冗余检错码CRC

4.3.1 原理
  • 任何一个k位的帧看成一个k-1的多项式
    例如10110001看成 x^6 + x^4 + x^3 + x^0
  • 生成多项式 G(x) G(x) 为 r 阶
  • 设m位帧的多项式M(x) m>r 即M(x) > G(x)
  • 如果 x^r M(x) / G(x) = Q(x) + R(x) 其中Q(x) 为商 R(x)为余数,则(x^r M(x) - R(x)) / G(x) = Q(x) 即 余数为 0

(我看的不是很明白。)

4.3.2 仿真例子

在这里插入图片描述

4.3.3 模2加运算

实际上就是异或运算,相同得0,相异得1

4.3.4 举例

那个原理实在是太抽象了,看了这个例子好像又懂了。
在这里插入图片描述
设定G(x)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
用得到的T(x) 1001111010110110000 去除G(x) 10011
得到余数1110,然后用T(x)去减余数1110,得到CRC码11010110111110
在这里插入图片描述
对没错就是这样

在这里插入图片描述

接收方的检查是这样的
在这里插入图片描述
如果整错那么就是正确的。fine

4.3.5 生成多项式国际标准

这个就是那个G(x)
在这里插入图片描述

4.3.6 CRC小结

小结一下
在这里插入图片描述

计算机网络——数据链路层(二)

计算机网络——数据链路层(二)

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值