crc可以检出奇数个错误_计算机网络最新章节_陈虹著_掌阅小说网
4.3 差錯(cuò)控制技術(shù)
物理層的任務(wù)是接收一個(gè)原始的比特流,并準(zhǔn)備將它傳輸?shù)侥康牡亍T趥鬏斶^程中傳輸?shù)谋忍亓鱾€(gè)數(shù)和內(nèi)容可能會(huì)發(fā)生變化,即產(chǎn)生差錯(cuò),但目前已有的物理層協(xié)議對(duì)傳輸?shù)谋忍亓鞑⒉贿M(jìn)行任何檢測(cè)和糾錯(cuò),即物理層并不保證這個(gè)比特流的正確傳輸,物理層傳輸產(chǎn)生的差錯(cuò)將由數(shù)據(jù)鏈路層負(fù)責(zé)檢測(cè)和糾錯(cuò)。
4.3.1 差錯(cuò)產(chǎn)生的原因
差錯(cuò)是指通信接收方收到的數(shù)據(jù)與發(fā)送方實(shí)際發(fā)出的數(shù)據(jù)不一致的現(xiàn)象。這種差錯(cuò)一般是由通信信道的噪聲產(chǎn)生的,通信信道的噪聲分為熱噪聲和沖擊噪聲兩種。熱噪聲是由傳輸介質(zhì)導(dǎo)體的電子熱運(yùn)動(dòng)產(chǎn)生的,它的特點(diǎn)是:時(shí)刻存在,幅度較小且強(qiáng)度與頻率無關(guān),但頻譜很寬,是一類隨機(jī)噪聲。由熱噪聲引起的差錯(cuò)稱為隨機(jī)差錯(cuò)。與熱噪聲相比,沖擊噪聲幅度較大,是引起傳輸差錯(cuò)的主要原因。沖擊噪聲的持續(xù)時(shí)間要比數(shù)據(jù)傳輸中的每個(gè)比特發(fā)送時(shí)間長(如外界磁場(chǎng)的變換、電源開關(guān)的跳變等),因而沖擊噪聲可能會(huì)引起相鄰多個(gè)數(shù)據(jù)位出錯(cuò)。沖擊噪聲引起的傳輸差錯(cuò)稱為突發(fā)差錯(cuò),它的特點(diǎn)是:差錯(cuò)呈突發(fā)狀,影響一批連續(xù)的數(shù)據(jù)位。計(jì)算機(jī)網(wǎng)絡(luò)中的差錯(cuò)主要是指突發(fā)差錯(cuò)。
4.3.2 差錯(cuò)控制方法
差錯(cuò)控制是指在數(shù)據(jù)通信過程中能發(fā)現(xiàn)或糾正差錯(cuò),將差錯(cuò)限制在盡可能小的允許范圍內(nèi)。常用的差錯(cuò)控制方法有反饋檢測(cè)、自動(dòng)重傳請(qǐng)求(Automatic Repeat reQuest,ARQ)和前向糾錯(cuò)(Forward Error Correction,FEC)。
1.反饋檢測(cè)
反饋檢測(cè)方法又稱回送校驗(yàn)法,雙方在進(jìn)行數(shù)據(jù)傳輸時(shí),接收方將接收到的數(shù)據(jù)重新發(fā)回發(fā)送方,由發(fā)送方檢查是否與原始數(shù)據(jù)完全相符。如不相符,則發(fā)送方發(fā)送一個(gè)控制信息通知接收方刪去出錯(cuò)的數(shù)據(jù),并重新發(fā)送該數(shù)據(jù);如相符,則發(fā)送下一個(gè)數(shù)據(jù)。其原理如圖4-5所示。反饋檢測(cè)的特點(diǎn)是:原理簡單,實(shí)現(xiàn)容易,可靠性強(qiáng),但開銷大,信道利用率低。
圖4-5 反饋檢測(cè)原理
a)無差錯(cuò)情況 b)出錯(cuò)情況
2.自動(dòng)重傳請(qǐng)求
自動(dòng)重傳請(qǐng)求是計(jì)算機(jī)網(wǎng)絡(luò)中較常采用的差錯(cuò)控制方法。自動(dòng)重傳請(qǐng)求的原理是:發(fā)送方將要發(fā)送的數(shù)據(jù)附加上一定的冗余檢錯(cuò)碼一并發(fā)送,接收方則根據(jù)檢錯(cuò)碼對(duì)數(shù)據(jù)進(jìn)行差錯(cuò)檢測(cè),如發(fā)現(xiàn)差錯(cuò),則接收方返回重傳請(qǐng)求的信息,發(fā)送方在收到請(qǐng)求重傳的信息后,重新傳送數(shù)據(jù);如沒有發(fā)現(xiàn)差錯(cuò),則發(fā)送下一個(gè)數(shù)據(jù)幀,如圖4-6所示。為保證通信正常進(jìn)行,還需引入計(jì)時(shí)器(防止整個(gè)數(shù)據(jù)幀或反饋信息丟失)和幀編號(hào)(以防止接收方多次收到同一幀并遞交給網(wǎng)絡(luò)層)。自動(dòng)重傳請(qǐng)求的特點(diǎn)是:使用檢錯(cuò)碼(常用的有奇偶校驗(yàn)碼和CRC碼等),必須是雙向信道,發(fā)送方需設(shè)置緩沖器。
圖4-6 自動(dòng)重傳請(qǐng)求原理
a)無差錯(cuò)情況 b)出錯(cuò)情況
3.前向糾錯(cuò)
前向糾錯(cuò)的原理是發(fā)送方將要發(fā)送的數(shù)據(jù)附加上一定的冗余糾錯(cuò)碼一并發(fā)送,接收方則根據(jù)糾錯(cuò)碼對(duì)數(shù)據(jù)進(jìn)行差錯(cuò)檢測(cè),如發(fā)現(xiàn)差錯(cuò),由接收方進(jìn)行糾正。前向糾錯(cuò)的特點(diǎn)是使用糾錯(cuò)碼(糾錯(cuò)碼編碼效率低且設(shè)備復(fù)雜),單向信道,發(fā)送方無須設(shè)置緩沖器。
4.3.3 差錯(cuò)控制編碼
差錯(cuò)控制編碼的原理是:發(fā)送方對(duì)準(zhǔn)備傳輸?shù)臄?shù)據(jù)進(jìn)行抗干擾編碼,即按某種算法附加上一定的冗余位,構(gòu)成一個(gè)碼字后再發(fā)送。接收方收到數(shù)據(jù)后進(jìn)行校驗(yàn),即檢查信息位和附加的冗余位之間的關(guān)系,以檢查傳輸過程中是否有差錯(cuò)發(fā)生。差錯(cuò)控制編碼分檢錯(cuò)碼和糾錯(cuò)碼兩種,檢錯(cuò)碼是能自動(dòng)發(fā)現(xiàn)差錯(cuò)的編碼,糾錯(cuò)碼是不僅能發(fā)現(xiàn)差錯(cuò)而且能自動(dòng)糾正差錯(cuò)的編碼。計(jì)算機(jī)網(wǎng)絡(luò)中常用的差錯(cuò)控制編碼是奇偶校驗(yàn)碼、循環(huán)冗余碼和海明碼。
1.奇偶校驗(yàn)碼
奇偶校驗(yàn)碼是一種通過增加冗余位使得碼字中“1”的個(gè)數(shù)恒為奇數(shù)或偶數(shù)的編碼方法。在實(shí)際使用時(shí)又可分為垂直奇偶校驗(yàn)、水平奇偶校驗(yàn)和水平垂直奇偶校驗(yàn)等。
1)垂直奇偶校驗(yàn)。垂直奇偶校驗(yàn)又稱為縱向奇偶校驗(yàn),它是將要發(fā)送的整個(gè)信息塊分為定長
p
位的若干段(比如說
q
段),在每段后面按“1”的個(gè)數(shù)為奇數(shù)或偶數(shù)的規(guī)律加上一位奇偶校驗(yàn)位,如圖4-7所示。在信息(
I
11
,
I
21
,…,
I
p
1
,
I
12
,
I
22
,…,
I
p
2
,…,
I
1
q
,…,
I
pq
)中,每
p
位構(gòu)成一段(即圖4-7中的一列),共有
q
段(即共有
q
列)。每段加上一位奇偶校驗(yàn)冗余位,即圖中的
r
i
。
圖4-7 垂直奇偶校驗(yàn)
r
i
的編碼規(guī)則為:
偶校驗(yàn):
r
i
=
I
1
i
+
I
2
i
+…+
I
pi
(i=1,2,3,…,q)
奇校驗(yàn):
r
i
=
I
1
i
+
I
2
i
+…+
I
pi
+1 (
i
=1,2,3,…,
q
)
說明:式中的“+”為模2加,即異或運(yùn)算,只求本位和,進(jìn)位丟棄。
圖4-7中箭頭給出了串行發(fā)送的順序,即逐位先后次序?yàn)?/p>
I
11
,
I
21
,…,
I
p
1
,
r
1
,
I
12
,
I
22
,…,
I
p
2
,
r
2
,…,
I
1
q
,
I
2
q
,…,
I
pq
,
r
q
。在編碼和校驗(yàn)過程中,用硬件方法或軟件方法很容易實(shí)現(xiàn)上述連續(xù)半加運(yùn)算,而且可以邊發(fā)送邊產(chǎn)生冗余位;同樣,在接收方也可以邊接收邊進(jìn)行校驗(yàn)后去掉校驗(yàn)位。
垂直奇偶校驗(yàn)方法能檢測(cè)出每列中的所有奇數(shù)位錯(cuò),但檢測(cè)不出偶數(shù)位錯(cuò)。對(duì)于突發(fā)錯(cuò)誤,奇數(shù)位錯(cuò)與偶數(shù)位錯(cuò)的發(fā)生概率接近于相等,因而對(duì)差錯(cuò)的漏檢率接近于1/2。
2)水平奇偶校驗(yàn)。為了降低對(duì)突發(fā)錯(cuò)誤的漏檢率,可以采用水平奇偶校驗(yàn)方法。水平奇偶校驗(yàn)又稱為橫向奇偶校驗(yàn),它是對(duì)各個(gè)信息段的相應(yīng)位橫向進(jìn)行編碼,產(chǎn)生一個(gè)奇偶校驗(yàn)冗余位,如圖4-8所示。
圖4-8 水平奇偶校驗(yàn)
r
i
編碼規(guī)則為:
偶校驗(yàn):
r
i
=
I
i
1
+
I
i
2
+…+
I
iq
(i=1,2,3,…,p)
奇校驗(yàn):
r
i
=
I
i
1
+
I
i
2
+…+
I
iq
+1 (
i
=1,2,3,…,
p
)
若每個(gè)信息段就是一個(gè)字符的話,這里的
q
就是發(fā)送信息塊中的字符數(shù)。
水平奇偶校驗(yàn)不但可以檢測(cè)出各段同一位上的奇數(shù)位錯(cuò),而且還能檢測(cè)出突發(fā)長度<
p
的所有突發(fā)錯(cuò)誤。按發(fā)送順序,從圖4-8可以看出“突發(fā)長度<
p
”的突發(fā)錯(cuò)誤必然分布在不同的行中,且每行一位,所以可以檢出差錯(cuò),它的漏檢率比垂直奇偶校驗(yàn)方法低。
3)水平垂直奇偶校驗(yàn)。同時(shí)進(jìn)行水平奇偶校驗(yàn)和垂直奇偶校驗(yàn)就構(gòu)成了水平垂直奇偶校驗(yàn),又稱為縱橫奇偶校驗(yàn),如圖4-9所示。
圖4-9 水平垂直奇偶校驗(yàn)
若水平垂直都采用偶校驗(yàn),則
r
i
,
j
的編碼規(guī)則如下。
r
i
,
q
+1
=
I
i
1
+
I
i
2
+…+
I
iq
(i=1,2,3,…,p)
r
p
+1,
j
=
I
1
j
+
I
2
j
+…+
I
pj
(j=1,2,3,…,q)
r
p
+1,
q
+1
=
r
p
+1,1
+
r
p
+1,2
+…+
r
p
+1,
q
=
r
1,
q
+1
+
r
2,
q
+1
+…+
r
p
,
q
+1
水平垂直奇偶校驗(yàn)?zāi)軝z測(cè)出所有3位或3位以下的錯(cuò)誤(因?yàn)榇藭r(shí)至少在某一行或某一列上有一位錯(cuò))、奇數(shù)位錯(cuò)、突發(fā)長度≤
p
+1的突發(fā)錯(cuò)誤以及很大一部分偶數(shù)位錯(cuò)。測(cè)量表明,這種方式的編碼可使誤碼率降至原誤碼率的百分之一到萬分之一。水平垂直奇偶校驗(yàn)不僅可檢錯(cuò),還可用來糾正部分差錯(cuò)。例如,數(shù)據(jù)塊中僅存在1位錯(cuò)時(shí),便能確定出錯(cuò)碼的位置就在某行和某列的交叉處,從而可以糾正它。
2.循環(huán)冗余碼
循環(huán)冗余校驗(yàn)方法是數(shù)據(jù)通信中差錯(cuò)檢測(cè)的重要方法,它對(duì)隨機(jī)錯(cuò)碼和突發(fā)錯(cuò)碼均能以較低的冗余度進(jìn)行嚴(yán)格檢查。
(1)循環(huán)冗余碼的計(jì)算方法
循環(huán)冗余校驗(yàn)碼(Cyclic Redundancy Check,CRC)也稱為多項(xiàng)式碼,簡稱CRC校驗(yàn)碼。在發(fā)送方產(chǎn)生一個(gè)循環(huán)冗余校驗(yàn)碼,附加在信息位后面一起發(fā)送到接收方,接收方將收到的信息按發(fā)送方形成循環(huán)冗余校驗(yàn)碼相同的算法進(jìn)行校驗(yàn)以檢測(cè)是否出錯(cuò)。
其計(jì)算過程如下:
1)確定信息多項(xiàng)式
M
(
x
)。將待發(fā)送的二進(jìn)制位串看成是一個(gè)多項(xiàng)式的系數(shù),該多項(xiàng)式稱為信息多項(xiàng)式
M
(
x
)。任何一個(gè)由二進(jìn)制數(shù)位串組成的代碼都可以和一個(gè)只含有0和1兩個(gè)系數(shù)的多項(xiàng)式建立一一對(duì)應(yīng)關(guān)系,一個(gè)
k
位數(shù)據(jù)幀可以看成是從
x
k
-1
到
x
0
的
k
次多項(xiàng)式的系數(shù)序列,這個(gè)多項(xiàng)式的階數(shù)為
k
-1,最高位(最左邊)是
x
k
-1
項(xiàng)的系數(shù),下一位是
x
k
-2
的系數(shù),依次類推。
例如:若信息位為1011011(7位),則
M
(
x
)=1×
x
6
+0×
x
5
+1×
x
4
+1×
x
3
+0×
x
2
+1×
x
1
+1×
x
0
=
x
6
+
x
4
+
x
3
+
x
+1;同樣,若
M
(
x
)=
x
5
+
x
4
+
x
2
+1,則對(duì)應(yīng)的二進(jìn)制位串為110101。
2)確定一個(gè)素多項(xiàng)式
G
(
x
)。
G
(
x
)稱為生成多項(xiàng)式,生成多項(xiàng)式的作用是和信息多項(xiàng)式進(jìn)行計(jì)算產(chǎn)生余數(shù)多項(xiàng)式。生成多項(xiàng)式的最高位和最低位必須是1。目前,國際標(biāo)準(zhǔn)中生成多項(xiàng)式有以下幾類。
CRC-12:
x
12
+
x
11
+
x
3
+
x
2
+
x
+1
CRC-16:
x
16
+
x
15
+
x
2
+1
CRC-CCITT-1:
x
16
+
x
12
+
x
5
+1
CRC-32:
x
32
+
x
26
+
x
23
+
x
22
+
x
16
+
x
12
+
x
11
+
x
10
+
x
8
+
x
7
+
x
5
+
x
4
+
x
2
+
x
+1
3)計(jì)算余數(shù)多項(xiàng)式
R
(
x
)。設(shè)
G
(
x
)為
r
階,發(fā)送方計(jì)算
x
r
M
(
x
)
/G
(
x
)(模2除法),得到余數(shù)多項(xiàng)式
R
(
x
),商舍掉。依據(jù)群論的相關(guān)理論,可以證明
R
(
x
)具有發(fā)現(xiàn)錯(cuò)誤的能力。
4)形成碼元多項(xiàng)式
C
(
x
)。發(fā)送方將
R
(
x
)附在
M
(
x
)之后,組成碼元多項(xiàng)式
C
(
x
),然后將其發(fā)送出去。
5)接收方檢驗(yàn)。當(dāng)接收方收到碼元多項(xiàng)式
C′
(
x
)后,計(jì)算
C′
(
x
)
/G
(
x
)(模2除法),得到新的余數(shù)多項(xiàng)式
R′
(
x
)。如果
R′
(
x
)=0,則認(rèn)為傳輸沒有錯(cuò)誤,否則,可以確定傳輸中產(chǎn)生了差錯(cuò)。
目前,CRC校驗(yàn)已由成熟的硬件完成,因此校驗(yàn)速度很快,冗余度也不大,是應(yīng)用最廣泛的一種校驗(yàn)碼。
設(shè)信息位為
m
位,生成多項(xiàng)式
G
(
x
)為
r
階,則計(jì)算CRC校驗(yàn)碼的步驟簡化如下。
1)在信息碼尾部附加
r
個(gè)0,成為
m
+
r
位二進(jìn)制位串,相應(yīng)多項(xiàng)式為
x
r
·
M
(
x
)。
2)按模2除法用
G
(
x
)對(duì)應(yīng)的位串去除
x
r
·
M
(
x
)對(duì)應(yīng)的位串,得到余數(shù)
R
(
x
)所對(duì)應(yīng)的位串。
3)按模2加法從
x
r
M
(
x
)對(duì)應(yīng)的位串中加上得到的余數(shù)
R
(
x
)所對(duì)應(yīng)的位串,其結(jié)果就是要傳送的帶CRC校驗(yàn)碼的數(shù)據(jù)。
【例4-1】設(shè)信息位
M
=101001101,生成多項(xiàng)式
G
(
x
)=
x
4
+
x
3
+
x
+1,試計(jì)算信息
M
的CRC校驗(yàn)碼
。
【解】
由已知
,r
=4,生成多項(xiàng)式
G(x)
對(duì)應(yīng)的位串為11011
。x
r
M(x)
對(duì)應(yīng)的位串為1010011010000。利用短除法計(jì)算如下:
余數(shù)
R
為0010
(
補(bǔ)足
r
=4位
),
因此,信息
M
=101001101的CRC校驗(yàn)碼為
1010011010000+0010=101001101
0010
。
【例4-2】在數(shù)據(jù)傳輸過程中,若接收方收到發(fā)送方發(fā)送的信息為10110011010,其生成多項(xiàng)式
G
(
x
)=
x
4
+
x
3
+1,問接收方收到的數(shù)據(jù)是否正確?(寫出判斷依據(jù)和推演過程
)
【解】
由題意知,在數(shù)據(jù)通信過程中采用的是循環(huán)冗余校驗(yàn)碼
(
CRC碼
)
進(jìn)行數(shù)據(jù)檢錯(cuò)。發(fā)送方在發(fā)送的數(shù)據(jù)塊中加入足夠的冗余位以滿足檢錯(cuò)需要。用數(shù)據(jù)多項(xiàng)式與生成多項(xiàng)式
G(x)
進(jìn)行運(yùn)算得到校驗(yàn)和
(
余數(shù)
),
將校驗(yàn)和附加在數(shù)據(jù)幀尾部,并使帶有校驗(yàn)和的幀所對(duì)應(yīng)的多項(xiàng)式能被
G(x)
除盡,然后將帶有校驗(yàn)和的數(shù)據(jù)幀發(fā)送出去,當(dāng)接收方接收時(shí),用
G(x)
去除它,若余數(shù)為0,則表示傳輸正確,否則表示傳輸出錯(cuò)。
本題中,如果接收信息
/G(x),
余數(shù)為0,則收到的數(shù)據(jù)正確,否則出錯(cuò)。
因?yàn)?/p>
G(x)
=
x
4
+
x
3
+1,其對(duì)應(yīng)的位串為11001,所以10110011010/11001的模2除法的推演過程如下:
10110011010/11001的模2除的余數(shù)
R
=0,因此,接收數(shù)據(jù)正確。
(2)循環(huán)冗余碼的檢錯(cuò)能力
CRC碼的檢錯(cuò)能力隨著生成多項(xiàng)式
G
(
x
)的不同而不同。在CRC碼中如果使用
r
位校驗(yàn)碼,生成多項(xiàng)式
G
(
x
)的次數(shù)應(yīng)為
r
,且生成多項(xiàng)式
G
(
x
)必須包含常數(shù)項(xiàng)“1”,否則校驗(yàn)碼的最低有效位(Least Significant Bit,LSB)將始終為0。如何選擇一個(gè)好的生成多項(xiàng)式需要一定的數(shù)學(xué)理論,這里只進(jìn)行簡要分析。
1)發(fā)送方發(fā)送的CRC碼多項(xiàng)式可以寫成
C
(
x
)=
M
(
x
)·
G
(
x
)=
x
n-k
·
M
(
x
)+
R
(
x
)
式中,
n
為CRC碼的總位數(shù);
M
(
x
)為信息碼多項(xiàng)式;
G
(
x
)為生成多項(xiàng)式;
R
(
x
)為余數(shù)多項(xiàng)式。
2)如果發(fā)送的
C
(
x
)在傳輸過程中產(chǎn)生了差錯(cuò),使接收方收到的消息變成了
C′
(
x
),即產(chǎn)生了差錯(cuò)。則接收方收到的消息可以表示為
C′
(
x
)=
C
(
x
)+
E
(
x
)
式中,
E
(
x
)為差錯(cuò)多項(xiàng)式。
3)接收方用
C′
(
x
)除以
G
(
x
),則可得
C′
(
x
)
/G
(
x
)=[
C
(
x
)+
E
(
x
)]
/G
(
x
)
用
C
(
x
)=
M
(
x
)·
G
(
x
)代入得
C′
(
x
)
/G
(
x
)=[
M
(
x
)·
G
(
x
)]
/G
(
x
)+
E
(
x
)
/G
(
x
)
因此,當(dāng)接收到的碼字無差錯(cuò),即
E
(
x
)=0時(shí),
C′
(
x
)將被
G
(
x
)整除。當(dāng)接收到的碼字出現(xiàn)差錯(cuò),而差錯(cuò)的數(shù)目在碼的檢錯(cuò)范圍內(nèi)時(shí),將有
E
(
x
)
/G
(
x
)=
Q
e
(
x
)+
R
e
(
x
)
/G
(
x
)
式中,
Q
e
(
x
)是
E
(
x
)被
G
(
x
)所除而得的商;
R
e
(
x
)為其余數(shù)。這時(shí)
C′
(
x
)
/G
(
x
)=
Q′
(
x
)+
Q
e
(
x
)+
R
e
(
x
)
/G
(
x
)=
Q
(
x
)+
R
e
(
x
)
/G
(
x
)
式中,
Q′
(
x
)是
C′
(
x
)被
G
(
x
)所除而得的商。
因此,接收方可以根據(jù)余數(shù)
R
e
(
x
)是否為零來判斷接收碼字是否有錯(cuò)。
當(dāng)然,接收到的有差錯(cuò)碼字也有可能被
G
(
x
)整除,此時(shí)的差錯(cuò)碼字就無法檢出,這種錯(cuò)誤稱為不可檢錯(cuò)誤。不可檢錯(cuò)誤中的錯(cuò)碼數(shù)必定超過了這種編碼的檢錯(cuò)能力。
如果生成多項(xiàng)式
G
(
x
)選擇得當(dāng),CRC是一種很有效的差錯(cuò)校驗(yàn)方法。理論上可以證明
G
(
x
)選擇得當(dāng)?shù)腃RC碼的檢錯(cuò)能力具有以下特點(diǎn)。
1)能檢出全部1位錯(cuò)(單錯(cuò)),即
E
(
x
)中只有一個(gè)“1”。假設(shè)信息位序列中某一位有錯(cuò),由于
G
(
x
)的
x
0
項(xiàng)為1,因此,
E
(
x
)除以
G
(
x
)的余數(shù)
R
e
(
x
)必定不為0。
2)能檢出全部離散的2位錯(cuò)(雙錯(cuò)),即
E
(
x
)中有離散的兩個(gè)“1”。假設(shè)信息位序列中有第
i
位和第
j
位錯(cuò),且有
i
<
j
,那么,只要選取的
G
(
x
)是不能整除二項(xiàng)式(
x
j-i
+1)的多項(xiàng)式,且其階(
n-k
)>(
j-i
),就可以檢出全部的雙錯(cuò)。
3)能檢出奇數(shù)個(gè)錯(cuò),即
E
(
x
)中有1、3、5、…個(gè)“1”。因?yàn)槠鏀?shù)項(xiàng)錯(cuò)誤多項(xiàng)式必不含因子(
x
+1),所以只要選取的
G
(
x
)含有(
x
+1)因子,即可檢出全部奇數(shù)個(gè)錯(cuò)。
4)能檢出全部長度小于等于(
n-k
)的突發(fā)錯(cuò)。
5)能以相當(dāng)大的概率檢出長度大于
r
(校驗(yàn)位長度)的連續(xù)的突發(fā)錯(cuò)。
例如,采用CRC-16的CRC碼可以檢出全部1位錯(cuò)、2位錯(cuò)、奇數(shù)個(gè)錯(cuò);全部16位或16位以下突發(fā)錯(cuò);99.997%的17位突發(fā)錯(cuò)以及99.998%的18位或更長的突發(fā)錯(cuò)。
CRC除了能檢查出離散錯(cuò)外,還能檢查出位數(shù)相當(dāng)長的突發(fā)錯(cuò)。
3.海明碼
在數(shù)據(jù)通信過程中,解決差錯(cuò)問題的另一種方法就是在每個(gè)待發(fā)送的數(shù)據(jù)塊上附加足夠的冗余信息,如果出錯(cuò),使接收方能夠推導(dǎo)出發(fā)送方實(shí)際送出的應(yīng)該是什么樣的比特串。
海明碼是一種可以糾正一位差錯(cuò)的編碼。對(duì)于
m
位數(shù)據(jù)位(信息位),若增加
r
位冗余位(校驗(yàn)位),則組成總長度為
n
位(
n
=
m
+
r
)的編碼,稱為
n
位碼字。為了能糾正單比特錯(cuò),
m
和
r
之間應(yīng)該滿足一定的關(guān)系。對(duì)于
m
位數(shù)據(jù)位,其有效碼字有2
m
個(gè),對(duì)于每一個(gè)有效碼字,均附加一個(gè)固定的
r
位的冗余位,形成一個(gè)特定的
n
(
n
=
m
+
r
)位碼字。當(dāng)且僅當(dāng)其中一位改變時(shí),都可以形成
n
個(gè)無效但可以糾錯(cuò)的碼字(知道出錯(cuò)的位置),即有
n
+1個(gè)可識(shí)別的碼字(1個(gè)有效碼字,
n
個(gè)無效但可識(shí)別的碼字)。
對(duì)于
m
位數(shù)據(jù)位產(chǎn)生的2
m
個(gè)有效碼字,共有2
m
(
n
+1)個(gè)可識(shí)別的碼字,2
n
個(gè)可識(shí)別及不可識(shí)別(出錯(cuò)的)的碼字,因此有2
m
(
n
+1)≤2
n
,將
n
=
m
+
r
代入,得
m
+
r
+1≤2
r
為了糾正單比特錯(cuò),
m
和
r
應(yīng)該滿足上述關(guān)系式。
海明碼的編碼方法是將碼字內(nèi)的各位從最右邊開始按順序依次編號(hào),第1位為1,第2位為2,…,第
n
位為
n
,其中編號(hào)為2
i
的位(1,2,4,8,…)為海明碼的校驗(yàn)位,即海明碼校驗(yàn)位不是附加在數(shù)據(jù)位的頭或尾,而是分散在數(shù)據(jù)位中,分別占用2
i
位置。其余位順序填入
m
位數(shù)據(jù)。每個(gè)校驗(yàn)位的取值應(yīng)使得包括自身在內(nèi)的一些位的集合服從規(guī)定的奇偶性,因此,海明碼利用的原理仍是奇偶檢驗(yàn)原理。下面舉例說明海明碼的形成方法。
例如,設(shè)信息位
m
=7,則由
m
+
r
+1≤2
r
,得
r
=4,所以海明碼長
n
=11位,設(shè)海明碼字為x11x10x9x8x7x6x5x4x3x2x1,其中x1、x2、x4和x8為海明校驗(yàn)碼,計(jì)算海明碼的校驗(yàn)位方法可以采用如圖4-10所示的形式,海明碼校驗(yàn)位編碼(校驗(yàn)表達(dá)式)計(jì)算表達(dá)式如下。
x1=x3+x5+x7+x9+x11
x2=x3+x6+x7+x10+x11
x4=x5+x6+x7
x8=x9+x10+x11
接收方驗(yàn)證收到的信息是否正確,采用的方法是重新計(jì)算海明碼校驗(yàn)位
xi
′,但采用海明碼監(jiān)督表達(dá)式進(jìn)行計(jì)算,海明碼監(jiān)督表達(dá)式如下。
圖4-10 海明碼校驗(yàn)碼形成示意圖
x1′=x1+x3+x5+x7+x9+x11
x2′=x2+x3+x6+x7+x10+x11
x4′=x4+x5+x6+x7
x8′=x8+x9+x10+x11
若
xi′
=0(
i
=1,2,4,8,…),則表示該信息傳輸正確,
xi
′中任何一位不為0,則表示該信息傳輸出錯(cuò),出錯(cuò)位為
xi′
值,如
xi′
=110,則表示出錯(cuò)位是x6。如果信息位出錯(cuò)則需糾正,校驗(yàn)位出錯(cuò)則不需糾正。
海明碼編碼方法不唯一,編號(hào)1既可從左也可從右開始,但解碼與編碼需一一對(duì)應(yīng)。
【例4-3】假定傳送信息位
M
為1010110,求它的海明碼
。
【解】
已知信息位
M
的位數(shù)
m
=7,設(shè)冗余位為
r
位,根據(jù)公式
m
+
r
+1≤2
r
計(jì)算得
:r
=4
海明碼:
計(jì)算海明碼校驗(yàn)位:
x1=x3+x5+x7+x9+x11=0+1+0+1+1=1
x2=x3+x6+x7+x10+x11=0+1+0+0+1=0
x4=x5+x6+x7=1+1+0=0
x8=x9+x10+x11=1+0+1=0
所以,計(jì)算得到海明碼為:101
00110001?
【例4-4】假定傳送信息位
M
為8位,接收方收到的信息為101110100110,試判斷該傳輸是否出錯(cuò)?如果出錯(cuò)是否需要糾正?并求出發(fā)送方發(fā)送的原始信息
。
【解】
已知信息位
M
的位數(shù)
m
=8,設(shè)冗余位為
r
位,根據(jù)公式
m
+
r
+1≤2
r
計(jì)算得
:r
=4
接收方收到的信息為1 0 1 1 1 0 1 0 0 1 1 0
x12 x11 x10 x9 x8 x7 x6 x5 x4 x3 x2 x1
判斷接收方收到的信息是否正確,需要根據(jù)海明碼監(jiān)督表達(dá)式計(jì)算
xi
′,若
xi′
=0
(i
=1,2,4,8
,…),
則表示該信息傳輸正確,否則出錯(cuò)。
海明碼監(jiān)督表達(dá)式計(jì)算如下:
x1′=x1+x3+x5+x7+x9+x11=0+1+0+0+1+0=0
x2′=x2+x3+x6+x7+x10+x11=1+1+1+0+1+0=0
x4′=x4+x5+x6+x7+x12=0+0+1+0+1=1
x8′=x8+x9+x10+x11+x12=1+1+1+0+1=0
因?yàn)榈玫降挠?jì)算結(jié)果x8′ x4′ x2′ x1′為:0100,不為0,因此,該傳輸存在錯(cuò)誤。監(jiān)督碼值為0100,即為4,則出錯(cuò)位為x4,而x4是校驗(yàn)位,因此,不需糾錯(cuò)。
因此,發(fā)送方發(fā)送的原始信息是10111010
1
110。
海明碼屬于分組碼,分組碼是一組固定長度的碼組,一般用符號(hào)(
n
,
k
)表示,其中
n
是碼組的總位數(shù),又稱為碼組的長度(碼長),
k
是碼組中信息碼元的數(shù)目,
r
=
n-k
為碼組中的監(jiān)督碼元數(shù)目。通常用于前向糾錯(cuò)。
在采用糾錯(cuò)碼或檢錯(cuò)碼的編碼方案中,基本的數(shù)據(jù)處理單元通常稱為碼字,由數(shù)據(jù)比特和冗余比特構(gòu)成。兩個(gè)碼字之間對(duì)應(yīng)比特取值不同的比特個(gè)數(shù)稱為這兩個(gè)碼字的海明距離。例如,10101和00110從第一位開始依次有第1位、第4位、第5位不同,則海明距離為3。海明距離表明:假設(shè)兩個(gè)碼字的海明距離為
d
,則需要
d
個(gè)比特差錯(cuò)才能將其中一個(gè)碼字轉(zhuǎn)換成另一個(gè)碼字。
在一個(gè)有效編碼集中,任意兩個(gè)碼字的海明距離的最小值(
d
min
)稱為該編碼集的海明距離。一種編碼的檢錯(cuò)能力和糾錯(cuò)能力取決于它的海明距離。為了檢測(cè)
d
個(gè)比特錯(cuò),需要使用海明距離為
d
+1的編碼方案,因?yàn)樵谶@種編碼方案中,
d
個(gè)單比特錯(cuò)不可能將一個(gè)有效碼字改編成另一個(gè)有效碼字。當(dāng)接收方接收到一個(gè)無效碼字時(shí),就知道已經(jīng)發(fā)生了傳輸錯(cuò)誤。同樣,為了糾正
d
個(gè)比特錯(cuò),需要使用海明距離為2
d
+1的編碼方案,因?yàn)樵谶@種編碼方案中,合法碼字之間的距離足夠遠(yuǎn),即使發(fā)生了
d
個(gè)比特錯(cuò),仍然更接近于原始碼字而不是其他碼字,從而可以唯一確定原來的碼字以達(dá)到糾錯(cuò)的目的。
d
min
與分組碼的糾、檢錯(cuò)能力存在以下關(guān)系。
● 當(dāng)
d
min
≥
e
+1時(shí),可檢出
e
個(gè)錯(cuò)誤。
● 當(dāng)
d
min
≥2
t
+1時(shí),具有糾正
t
個(gè)錯(cuò)誤的能力。
● 當(dāng)
d
min
≥
t
+
e
+1
(e
>
t)
時(shí),具有同時(shí)檢出
e
個(gè)錯(cuò)誤、糾正
t
個(gè)錯(cuò)誤的能力。
63Oq6IAujjHZoZ65HNTBWPuMsQzkYnMUW9x6jkOv5M6keRxLt5xvskwAGRBkXYpj
總結(jié)
以上是生活随笔為你收集整理的crc可以检出奇数个错误_计算机网络最新章节_陈虹著_掌阅小说网的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python数据展示平台_Python获
- 下一篇: java base64 编码 类_jav