二、组帧
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】,则最终发出的数据是:
1101 0110 11 【1110 】