循环冗余检验的原理说明

合集下载

循环冗余校验原理及程序

循环冗余校验原理及程序
dtemp(8DOWNTO3):=dtemp(8DOWNTO3)XORPOLYNOMIAL;
ENDIF;
IFdtemp(7)='1'THEN
dtemp(7DOWNTO2):=dtemp(7DOWNTO2)XORPOLYNOMIAL;
ENDIF;
IFdtemp(6)='1'THEN
dtemp(6DOWNTO1):=dtemp(6DOWNTO1)XORPOLYNOMIAL;
rdata_r <=X"000";
dfinish_r <='0';
error01_r <='0';
ELSIFhrecv='1'THEN
rdatacrc <=datacrci;
rdtemp :=datacrci(16DOWNTO5);
IFrdtemp(11)='1'THEN
rdtemp(11DOWNTO6):=rdtemp(11DOWNTO6)XORPOLYNOMIAL;
while(--len>=0)

ch=*crcbuf++;ch<<=8;
for(i=0;i<8;i++)

crc<<=1;
if((ch&0x8000)!=0)crc|=1;
if(crc>=gx)crc∧=gx;
ch<<=1;


return((crc==0)?0∶1)

以上CRC编码和校验函数结构良好,调用接口清晰,执行效率很高,且具有良好的可
hsend<=hsend_r;
datacrco<=datacrco_r;

循环冗余码校验原理

循环冗余码校验原理

循环冗余码校验原理循环冗余码校验英文名称为Cyclical Redundancy Check,简称CRC。

它是利用除法及余数的原理来作错误侦测(Error Detecting)的。

他将要发送的数据比特序列当作一个多项式f(x)的系数,发送时用双方预先约定的生成多项式G(x)去除,求得一个余数多项式,将余数多项式加到数据多项式之后发送到接收端,接收端同样用G(x)去除接收到的数据,进行计算,然后把计算结果和实际接收到的余数多项式数据进行比较,相同的话表示传输正确。

CRC校验检错能力强,容易实现,是目前应用最广的检错码编码方式之一。

在国际标准中,根据生成多项式G(x)的不同,CRC又可分为以下几种标准:①CRC-12码: G(x)=X12+X11+X3+X2+X+1②CRC-16码: G(x)=X16+X15+X2+1③CRC-CCITT码: G(x)=X16+X12+X5+1④CRC-32码: G(x)=X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X1+X+1 CRC-12码通常用来传送6-bit字符串。

CRC-16及CRC-CCITT码则用是来传送8-bit字符,其中CRC-16为美国采用,而CRC-CCITT为欧洲国家所采用。

CRC-32码大都被采用在一种称为Point-to-Point的同步传输中。

下面以最常用的CRC-16为例来说明其生成过程。

CRC-16码由两个字节构成,在开始时CRC寄存器的每一位都预置为1,然后把CRC 寄存器与8-bit的数据进行异或,之后对CRC寄存器从高到低进行移位,在最高位(MSB)的位置补零,而最低位(LSB,移位后已经被移出CRC寄存器)如果为1,则把寄存器与预定义的多项式码进行异或,否则如果LSB为零,则无需进行异或。

重复上述的由高至低的移位8次,第一个8-bit数据处理完毕,用此时CRC寄存器的值与下一个8-bit数据异或并进行如前一个数据似的8次移位。

循环冗余校验码的原理及应用

循环冗余校验码的原理及应用

循环冗余校验码的原理及应用循环冗余校验码(Cyclic Redundancy Check,简称CRC)是一种在数据传输中用于错误检测的校验码。

CRC的原理是通过在发送数据时附加一个校验值,接收端在接收数据时计算校验值,然后与发送端传递的校验值进行比较,如果两者一致,则说明数据传输没有错误,否则则存在数据错误。

CRC的应用非常广泛,包括网络传输、存储介质、通信等领域。

下面将详细介绍CRC的原理和应用。

1.原理:(1)生成多项式:CRC使用一个生成多项式进行计算。

该多项式可以是任意的,但在应用中通常使用一些标准的多项式。

生成多项式的位数确定了校验码的位数,通常为32位或64位。

(2)数据附加:在发送数据前,发送端会通过生成多项式对数据进行计算,生成一个校验码。

然后将校验码附加在原始数据的末尾。

(3)接收端计算:接收端在接收到数据后,通过与发送端使用同样的生成多项式对接收到的数据进行计算,生成一个接收端的校验码。

(4)校验比较:接收端的生成校验码与发送端传递的校验码进行比较,若一致,则说明数据传输没有错误;若不一致,则说明数据传输存在错误。

2.应用:(1)数据传输:CRC主要应用在网络传输领域,如以太网、Wi-Fi和蓝牙等。

在数据包发送前,发送端会对数据包进行CRC计算,然后将计算得到的校验码附加在数据包中。

接收端在接收到数据包后,再进行CRC计算,然后将计算得到的校验码与接收到的校验码进行比较,以判断是否存在传输错误。

(2)存储介质:CRC也应用在存储介质中,如硬盘驱动器、光盘等。

在数据存储时,CRC会被计算并存储在磁盘或光盘的头部或尾部。

在数据读取时,通过计算CRC来确保数据的完整性。

(3)通信:通信设备通常会使用CRC来检测数据的传输错误。

例如,调制解调器在发送数据前会计算CRC并将其附加在数据中,接收端在接收到数据后计算CRC,并与接收到的CRC进行比较。

(4)校验和验证:CRC也可以用于验证数据的完整性。

循环冗余校验码(crc)的基本原理

循环冗余校验码(crc)的基本原理

循环冗余校验码(CRC)的基本原理循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码又叫(N,K)码。

对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R 的多项式G(x)。

根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。

校验码的具体生成过程为:假设发送信息用信息多项式f(X)表示,将f(x)左移R位(则可表示成f(x)*X R),这样f(x)的右边就会空出R 位,这就是校验码的位置。

通过f(x)* X R除以生成多项式G(x)得到的余数就是校验码。

几个基本概念1、多项式与二进制数码多项式和二进制数有直接对应关系:x的最高幂次对应二进制数的最高位,以下各位对应多项式的各幂次,有此幂次项对应1,无此幂次项对应0。

可以看出:x的最高幂次为R,转换成对应的二进制数有R+1位。

多项式包括生成多项式G(x)和信息多项式f(x)。

如生成多项式为G(x)=X4+X3+X+1,可转换为二进制数码11011。

而发送信息位1111,可转换为数据多项式为f(x)=X3+X2+X+1。

2、生成多项式是接受方和发送方的一个约定,也就是一个二进制数,在整个传输过程中,这个数始终保持不变。

在发送方,利用生成多项式对信息多项式做模2除生成校验码。

在接受方利用生成多项式对收到的编码多项式做模2除检测和确定错误位置。

应满足以下条件:a、生成多项式的最高位和最低位必须为1。

b、当被传送信息(CRC码)任何一位发生错误时,被生成多项式做模2除后应该使余数不为0。

c、不同位发生错误时,应该使余数不同。

d、对余数继续做模2除,应使余数循环。

将这些要求反映为数学关系是比较复杂的。

但可以从有关资料查到常用的对应于不同码制的生成多项式如图9所示:N K 码距d G(x)多项式G(x)7 4 3 x3+x+1 10117 4 3 x3+x2+1 11017 3 4 x4+x3+x2+1 111017 3 4 x4+x2+x+1 1011115 11 3 x4+x+1 1001115 7 5 x8+x7+x6+x4+1 11101000131 26 3 x5+x2+1 10010131 21 5 x10+x9+x8+x6+x5+x3+1 11101101 00163 57 3 x6+x+1 100001163 51 5 x12+x10+x5+x4+x2+1 10100001 101011041 1024 x16+x15+x2+1 110000000000 00101图9 常用的生成多项式3、模2除(按位除)模2除做法与算术除法类似,但每一位除(减)的结果不影响其它位,即不向上一位借位。

循环冗余校验码(CRC)的基本原理

循环冗余校验码(CRC)的基本原理

循环冗余校验码(CRC)的基本原理模2除(按位除)模2除做法与算术除法类似,但每一位除(减)的结果不影响其它位,即不向上一位借位。

所以实际上就是异或。

然后再移位移位做下一位的模2减。

步骤如下:a、用除数对被除数最高几位做模2减,没有借位。

b、除数右移一位,若余数最高位为1,商为1,并对余数做模2减。

若余数最高位为0,商为0,除数继续右移一位。

c、一直做到余数的位数小于除数时,该余数就是最终余数。

循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码又叫(N,K)码。

对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。

根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。

校验码的具体生成过程为:假设发送信息用信息多项式C(X)表示,将C(x)左移R位,则可表示成C(x)*2R,这样C(x)的右边就会空出R位,这就是校验码的位置。

通过C(x)*2R除以生成多项式G(x)得到的余数就是校验码。

CRC码的生成步骤4、得到011-------余数(校验位)5、编码后的报文(CRC码)10100111、将x的最高幂次为R的生成多项式G(x)转换成对应的R+1位二进制数。

2、将信息码左移R位,相当与对应的信息多项式C(x)*2R3、用生成多项式(二进制数)对信息码做模2除,得到R位的余数。

4、将余数拼到信息码左移后空出的位置,得到完整的CRC码。

【例】假设使用的生成多项式是G(x)=x3+x+1。

4位的原始报文为1010,求编码后的报文。

解:1、将生成多项式G(x)=x3+x+1转换成对应的二进制除数1011。

2、此题生成多项式有4位(R+1),要把原始报文C(x)左移3(R)位变成10100003、用生成多项式对应的二进制数对左移4位后的原始报文进行模2除。

循环冗余检验的原理说明

循环冗余检验的原理说明

循环冗余检验的原理说明在数字通信和数据存储领域,为了确保数据的准确性和完整性,常常会使用各种校验方法。

其中,循环冗余检验(Cyclic Redundancy Check,简称 CRC)是一种被广泛应用的差错检测技术。

那什么是循环冗余检验呢?简单来说,它就像是数据的“质检员”,通过一系列复杂但又有规律的计算,来判断传输或存储的数据是否出现了错误。

要理解循环冗余检验的原理,我们先来看看它是怎么工作的。

假设我们要传输一段数据,比如说一串二进制数字。

在发送端,会根据预先设定好的一个生成多项式,对这串数据进行计算,得到一个余数,这个余数就是循环冗余码(CRC 码)。

然后,把这个 CRC 码附加在原始数据的后面,一起发送出去。

在接收端,收到数据后,同样根据那个生成多项式,对包括附加的CRC 码在内的整个数据进行计算。

如果计算得到的余数是零,那就说明数据在传输过程中没有出错;如果余数不是零,那就意味着数据出现了错误。

那这个神奇的生成多项式是怎么来的呢?它可不是随便选的。

生成多项式的选择直接影响到循环冗余检验的检错能力。

一般来说,生成多项式的阶数越高,检错能力就越强。

但同时,计算的复杂度也会增加。

为了更好地理解循环冗余检验的计算过程,我们来举个例子。

假设我们的生成多项式是 G(x) = x³+ x + 1,对应的二进制数是 1011。

要检验的数据是 1010。

首先,在数据后面补三个零,得到 1010000。

然后,用这个数除以生成多项式对应的二进制数1011。

计算过程就像我们平常做除法一样,只不过这里是二进制的除法。

通过计算,得到余数是 100。

这个 100 就是 CRC 码。

把它附加在原始数据 1010 后面,得到 1010100,发送出去。

接收端收到 1010100 后,再次除以 1011。

如果余数是零,说明数据没错;如果不是零,就说明数据出错了。

循环冗余检验之所以能够有效地检测错误,是因为它利用了数学上的多项式运算的特性。

循环冗余检验原理

循环冗余检验原理

常用的对应于不同的码制的生成多项式
Commonly used generating polynomials corresponding to different code systems源自应用场合应用于什么场合
For what occasion?
循环冗余检验的应用场合
No.1
CRC校验实用程序 库 在数据存储和
循环冗余检验实现过程
Step 1
1)先选择(可以随机选择,也可以按照标准选择)一个用于在接收端进行校验时,对接收的帧进 行除法运算的除数(是二进制比特串,通常以多项式表达,所以crc又称多项式编码方法,这个多 项式也称为“生成多项式”)。
Step 2
2)假定所选的数据帧为k位,然后在要发送的数据帧(假定m位)的后面补上k-1位“0”,然后用这 个新帧(一共m+k-1位)以“模2除法”的方式除以上面这个除数,所得到的余数(也是二进制比特 序列)就是该帧的crc校验码,也称之为FCS(帧校验序列)。但要注意的是,余数的位数一定要 只比除数的位数少一位,哪怕前面位是0,甚至全位0时都不能省略。
选择哪种多项式更合适?
Which polynomial to choose is more appropriate.
01 02 03 04
生成多项式需满足的要求
生成多项式的最高位和最低位必须为1。 当被传送信息(CRC码)任何一位发生错误时, 被生成多项式做除后应该使余数不为0。 不同位发生错误时,应该使余数不同。
THANKS
F or Yo u A Th o us a nd Tim es
O
v
e
r
Step 3
3)再把这个校验码附在原数据帧(就是m位的帧,不是生成的m+k-1位的帧)的后面,构建一个 新帧发送给接收端;最后再在接收端再把这个新帧以“模2除法”的方式除以前面选择的除数,如果 没有余数,则表明该帧在传输的过程中没有出错,否则出现了差错。

循环冗余检验的原理说明

循环冗余检验的原理说明

循环冗余检验的原理说明嘿,朋友们!今天咱来聊聊循环冗余检验,这玩意儿可有意思啦!你看啊,循环冗余检验就像是我们生活中的质检员。

比如说你买了个水果,你得检查检查它有没有坏的地方吧,这就是一种检验。

而循环冗余检验呢,就是在数据传输的世界里做这样的检查工作。

想象一下,数据就像是一群排着队要去目的地的小人儿,在这个过程中,可能会有一些调皮捣蛋的家伙偷偷混进来,或者有些原本的小人儿不小心受伤了。

那怎么知道有没有问题呢?这时候循环冗余检验就出马啦!它会根据一些特定的规则,给这些数据小人儿们算个特别的“标记”。

等这些小人儿到达目的地后,接收方再用同样的方法算一下这个“标记”,如果两个“标记”一样,那就说明这些小人儿都好好的,没啥问题。

要是不一样呢,那可就糟糕啦,就知道在传输过程中有状况发生了。

这就好比你寄个包裹给朋友,你在包裹上做个特殊记号,你朋友收到后看看记号对不对,就知道包裹有没有被人动过手脚。

循环冗余检验不就是这么个道理嘛!而且它可厉害啦,能发现很多我们肉眼看不到的小错误呢。

这就好像你有一双超级厉害的眼睛,能看到那些隐藏得很深的问题。

它能把那些想要蒙混过关的错误都给揪出来,是不是很牛?那它具体是怎么工作的呢?其实就是通过一些复杂的计算啦,但咱不用太纠结那些细节,只要知道它很厉害,能帮我们保证数据的准确性就行啦!在我们现在这个信息时代,数据传输那是无处不在啊。

要是没有循环冗余检验这样的好帮手,那得有多少错误和混乱呀!想想如果你的手机信号老是出错,或者你在网上看个视频老是卡顿,那得多烦人啊!所以说呀,循环冗余检验可真是个大功臣呢!它默默地守护着我们的数据传输,让一切都能顺顺利利的。

下次你在享受顺畅的网络或者准确的数据传输时,可别忘了这里面有循环冗余检验的一份功劳哟!总之呢,循环冗余检验就是这么个神奇又重要的东西,它让我们的数据世界变得更加可靠和美好!怎么样,是不是觉得它很了不起呀?原创不易,请尊重原创,谢谢!。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对突发长度为 r+1 的突发错的漏检率为 性质3:若 G ( X ) 中不含有X的因子,而且对于任何 0<L≤n-1的L,除不尽 X L + 1 ,则能检测出所有的双错。 东南大学自动化学院
CRC码的检错能力举例
若 r =16,则能检测出 所有的双错 所有的奇数位错 所有的突发长度小于等于16的突发错 99.997%的突发长度为17的突发错 99.998%的突发长度大于等于18的突发错。
简单的数学分析(续)
一帧的平均重传次数 = {1 × P[重传次数为 1] + 2 × P[重传次数为 2] + 3 × P[重传次数为 3] +…} = {1 × P[第 1 次发送出错] × P[第 2 次发送成功] + 2 × P[第 1, 2 次发送出错] × P[第 3 次发送成功] + 3 × P[第 1, 2, 3 次发送出错] × P[第 4 次发送成功] +…}
停止等待协议的注意点
连续出现相同发送序号的数据帧,表明发送端 进行了超时重传。连续出现相同序号的确认 帧,表明接收端收到了重复帧。 发送端在发送完数据帧时,必须在其发送缓存 中暂时保留这个数据帧的副本。这样才能在出 差错时进行重传。只有确认对方已经收到这个 数据帧时,才可以清除这个副本。
东南大学自动化学院
A
DATA0 DATA1 DATA2 DATA1 3 DATA4 DATA5 DATA2 6 DATA7 DATA8
B ACK1 确认 DATA0 ACK1 确认 DATA0 ACK2 确认 DATA1 ACK3 确认 DATA2 ACK2 确认 DATA1 ACK4 确认 DATA3 ACK5 确认 DATA4 ACK6 确认 DATA5 ACK3 确认 DATA2 ACK7 确认 DATA6 ACK8 确认 DATA7 送交主机
3.2.5 停止等待协议的算法
这里不使用否认帧(实用的数据链路层协议大都是这样 的),而且确认帧带有序号 n。 按照习惯的表示法,ACKn 表示“第 n – 1 号帧已经收 到,现在期望接收第 n 号帧”。 ACK1 表示“0 号帧已收到,现在期望接收的下一帧是 1 号帧”; ACK0 表示“1 号帧已收到,现在期望接收的下一帧是 0 号帧”。 东南大学自动化学院
M
东南大学自动化学院
G ( X ) 的选择
性质1:若 G ( X ) 含有(X+1)的因子,则能检测出所有奇 数个错; 性质2:若 G ( X ) 中不含有X的因子,或常数项为1,则能 检测出所有突发长度≤ r 的突发错;
2− (r −1) ; −r 对突发长度大于 r+1 的突发错的漏检率为 2 ;
需要注意:
(3) 结点 A 在每发送完一个数据帧时都要设置该帧的超时计 时器。如果在所设置的超时时间内收到确认帧,就立即 将超时计时器清零。但若在所设置的超时时间到了而未 收到确认帧,就要重传相应的数据帧(仍需重新设置超 时计时器)。 在等不到 2 号帧的确认而重传 2 号数据帧时,虽然 结点 A 已经发完了 5 号帧,但仍必须向回走,将 2号帧 及其以后的各帧全部进行重传。连续 ARQ 又称为Goback-N ARQ,意思是当出现差错必须重传时,要向回走 N 个帧,然后再开始重传。 东南大学自动化学院
停止等待协议的要点(续)
实用的 CRC 检验器都是用硬件完成的。 CRC 检验器能够自动丢弃检测到的出错帧。因 此所谓的“丢弃出错帧”,对上层软件或用户来说 都是感觉不到的。 发送端对出错的数据帧进行重传是自动进行的, 这种差错控制体制常简称为 ARQ (Automatic Repeat reQuest),即自动请求重传。
东南大学自动化学院

需要注意:
(1) 接收端只按序接收数据帧。虽然在有差错的 2号帧之后 接着又收到了正确的 3 个数据帧,但接收端都必须将这 些帧丢弃,因为在这些帧前面有一个 2 号帧还没有收 到。虽然丢弃了这些不按序的无差错帧,但应重复发送 已发送过的最后一个确认帧(防止确认帧丢失)。 (2) ACK1 表示确认 0 号帧 DATA0,并期望下次收到 1 号 帧;ACK2 表示确认 1 号帧 DATA1,并期望下次收到 2 号帧。依此类推。 东南大学自动化学院
3.3 连续 ARQ 协议 3.3.1 连续 ARQ 协议的工作原理
在发送完一个数据帧后,不是停下来等待确认 帧,而是可以连续再发送若干个数据帧。 如果这时收到了接收端发来的确认帧,那么还 可以接着发送数据帧。 由于减少了等待时间,整个通信的吞吐量就提 高了。
东南大学自动化学院
连续 ARQ 协议的工作原理
重传时间的作用是:数据帧发送完毕后若经过了这样长 的时间还没有收到确认帧,就重传这个数据帧。 为方便起见,我们设重传时间为 tout = tp + tpr+ ta + tp + tpr (3-2)
设上式右端的处理时间 tpr 和确认帧的发送时间 ta 都远小 于传播时延 tp,因此可将重传时间取为两倍的传播时 延,即 tout = 2tp (3-3) 东南大学自动化学院
= p(1 − p) + 2 p 2 (1 − p) + 3 p 3 (1 − p) +
这里 P[X] 是出现事件 X 的概率。
东南大学自动化学院
简单的数学分析(续)
得出正确传送一个数据帧所需的平均时间:
t av = tT + (1 − p )∑ ip i tT = tT / (1 − p )
i =1
东南大学自动化学院
常用的 G ( X )
CRC _ 12 = X
12
+ X + X + X + X +1
11 3 2
CRC _ 16 = X
16
+ X + X +1
15 2
CRC _ CCITT = X
16
+X
12
+ X +1
5
东南大学自动化学院
帧检验序列 FCS
在数据后面添加上的冗余码称为帧检验序列 FCS (Frame Check Sequence)。 循环冗余检验 CRC 和帧检验序列 FCS并不等同。 CRC 是一种常用的检错方法,而 FCS 是添加在数 据后面的冗余码。 FCS 可以用 CRC 这种方法得出,但 CRC 并非用 来获得 FCS 的惟一方法。
循环冗余检验的原理说明
1101010110 ← Q 商 除数 P → 110101 101000110100000 ← 2rM 被除数 110101 111011 G(X) X r M(X) 110101 111010 110101 111110 110101 101100 110101 110010 110101 R(X) 01110 ← R 余数
东南大学自动化学院
在接收结点
(1) V(R)←0。 (2) 等待。 (3) 收到一个数据帧; 若 N(S) = V(R),则执行(4); 否则丢弃此数据帧,然后转到(6)。 (4) 将收到的数据帧中的数据部分送交上层软件 (也就是数据链路层模型中的主机)。 (5) V(R)←[1 − V(R)]。 (6) n←V(R); 发送确认帧 ACKn,转到(2)。 东南大学自动化学院
在发送结点
(1) (2) (3) (4) (5) (6) (7) 从主机取一个数据帧,送交发送缓存。 V(S)←0。 N(S)←V(S)。 将发送缓存中的数据帧发送出去。 设置超时计时器。 等待。 {等待以下(7)和(8)这两个事件中最先出现的一个} 收到确认帧 ACKn, 若 n = 1 – V(s),则: 从主机取一个新的数据帧,放入发送缓存; V(S)←[1 − V(S)],转到 (3)。 否则,丢弃这个确认帧,转到(6)。 (8) 若超时计时器时间到,则转到(4)。
ACK1 ACK2 ACK2 ACK2 ACK2 ACK3 ACK4
超 时 重 传 时 间
ACK2 确认 DATA1 DATA2 出错,丢弃
送交主机
tout
DATA3 不按序,丢弃,重传 ACK2 DATA4 不按序,丢弃,重传 ACK2 DATA5 不按序,丢弃,重传 ACK2 ACK3 确认 DATA2 ACK4 确认 DATA3 送交主机
3.3.3 滑动窗口的概念
发送端和接收端分别设定发送窗口和接收窗口 。 发送窗口用来对发送端进行流量控制。 发送窗口的大小 WT 代表在还没有收到对方确认信 息的情况下发送端最多可以发送多少个数据帧。
东南大学自动化学院
发送窗口 WT (a) 0 1 2 3 4 5 6 7 0 1 2
允许发送 5 个帧 WT (b) 0 已发送 1 2 3 4 5 6
ACK1 ACK2 ACK3 2 ACK4 ACK5 ACK6 3 ACK7 ACK8

LEC.9
东南大学自动化学院
连续 ARQ 协议的工作原理
A
DATA0 DATA1 DATA2?? DATA3 DATA4 DATA5 重传 DATA2 重传 DATA3 重传 DATA4 重传 DATA5
B ACK1 确认 DATA0
停止等待协议中数据帧 和确认帧的发送时间关系
数据帧的 发送时间 A tf DATA B 传播时延 tp
两个成功发送的 数据帧之间的 tT 最小时间间隔 tout 设置的 重传时间 DATA
ACK
处理时间 tpr 确认帧发送时间 ta 传播时延 tp 处理时间 tpr 时间
东南大学自动化学院
重传时间
东南大学自动化学院
应当注意
仅用循环冗余检验 CRC 差错检测技术只能做到无差错 接受(accept)。 “无差错接受”是指:“凡是接受的帧(即不包括丢弃的 帧),我们都能以非常接近于 1 的概率认为这些帧在传 输过程中没有产生差错”。 也就是说:“凡是接受的帧都没有传输差错”(有差错的 帧就丢弃而不接受)。 要做到“可靠传输”(即发送什么就收到什么)就必须再 加上确认和重传机制。 东南大学自动化学院
相关文档
最新文档