【计算机网络】——数据链路层

【计算机网络】——数据链路层_第1张图片

二、组帧

1、字符计数法

帧头部使用一个字符来表示帧的大小(包括第一个计数字符)

(此处一字符=一个字节)

2、字符填充收尾定界法

特定字符来定界帧的首和尾。若帧中数据段出现等同于特定字符的字符内容,前置一个转义字符。(类似于正则表达式)

3、零比特填充首位标志法

允许数据帧的帧包含任意个数的比特,也允许每个字符的编码包含任意比特。

以01111110标志一帧的开始和结束。

发送时,在数据段中每五个连续的1 就插入一个0进行分割。

接收时逆操作,自动删除被插入的 0

4、违规编码

在物理层进行编码时,进行违规编码

如曼切斯特编码:(以太网使用)

高-低:1

低-高:0

可以故意编出 “高-高、 底-底” 这样的违规编码,定界帧的起始和结尾

* 编码:

        数字数据 转换为数字信号的过程(基带信号,非归零、曼切斯特、差分曼切斯特)

        模拟数据 转换成数字信号(PCM脉码调制:采样、量化、编码)

* 调制:

        数字数据 转换成模拟信号的过程(调幅、调相、调频、调幅+调相)

        模拟数据 转换成模拟信号

较为常用的是 3和4

三、差错控制

差错:噪声引起(热噪声、冲击噪声)

ARQ:自动重传请求,遇到某一帧 比特错(位错),主动丢弃,并不去通知发送端,等待超时重传。

通过检错编码来确认错误,并丢弃。

FEC:前向纠错,发现错误位,并加以纠正。

这是纠错编码来实现。

差错控制(位错) 的两种编码:检错编码 、纠错编码。

1、检错编码

冗余编码:

对帧的数据段进行以下处理

发送前:   【有效数据位(信息位)+冗余位】    =》遵守一定的规则。

        不管数据位怎么变,冗余位随之变化,保证帧遵守此规则。

接收端:若收到的帧没用遵从此规则,则数据位发生位错。

1、奇偶校验

码长n = n-1位信息位 +1位 校验位

奇校验:信息位+校验位   比特 1的·个数要求是1 

偶校验:信息位+校验位   比特 1的·个数要求是0

缺点: 只能检测出奇数位的错。

换句话说,如果错了偶数位,就检测不出来错。

举例: 奇校验:100100 +1

如果错了两位 111100 +1 这种是检测不出来的

检错率 50%。

2、CRC循环冗余校验

二进制串,可以用一个k位多项式来表示

比如:1010,可以用4(设为k)次多项式表示:

1*X^3+ 0*X^2+ 1*X^1+ 0*X^0,这个多项式的阶数为 3(即阶数 = k-1)

多项式的系数,要么是1,要么是0,对应于二进制串的每位的值。

多项式的幂,对应二进制串的位数。

算法描述:

假设数据段为m位,发送器生成一个rbit的序列,称为帧检测序列(FCS)。

这样帧就是 m+r位bit构成。

发送方和接收方规定一个多项式G(x) (最高位最低位的系数必须为1)。这个带检验码的帧刚好可以被这个多项式整除,则表示帧是无差错的。

计算如下:

假设数据段为m位

(1)确定生成多项式G(x)的阶数为r   在数据段后面补r个0,

(2)模二运算,G(x)对应的数据串 与 (1)中计算出的串进行模二运算,余数则是冗余码

(3)m位数据低位补全冗余码 即可发送

举例:

要发送的数据是1101 0110 11,采用CRC,生成多项式为10011 【或者它给出 X^4+X+1】,则最终发出的数据是:

【计算机网络】——数据链路层_第2张图片1101 0110 11 【1110 】

 

2、纠错编码

海明码

你可能感兴趣的:(计算机基础,#计算机网络,计算机网络,网络)