差錯檢測和糾正技術
資料在傳輸的過程中難免會出現差錯(比如經過路由**時),因此我們需要一些差錯檢測和糾正技術來檢測資料中的差錯並糾正,使接收方收到正確的資料,也避免傳送方對資料進行重傳。
下圖是差錯檢測和糾正的場景示意圖。
在傳送結點為了保護資料中位元免受差錯,使用差錯檢測和糾正位元(error-detection and-correction,edc)來增強資料d。通常需要受保護的資料不僅包括從網路層傳遞下來需要通過鏈路傳輸的資料報,而且包括鏈路幀首部中的鏈路級的定址資訊、序號和其他字段。
鏈路級幀中的d和edc都被傳送至接收結點。接收結點接收到位元序列d『和edc『。因為在傳輸中,位元可能發生翻轉所以導致d『和edc『與初始的d和edc不同。
在接收方這邊,它的挑戰是在僅知d『和dec『的情況下,就判斷d『和初始的d是否一致。差錯檢測和糾正技術也使接收方檢測出已經出現的位元差錯,但也可能有未檢出位元差錯(undetected bit error),也就是說,接收方接收的資訊中還會包含位元差錯。所以我們要選擇乙個差錯檢測方案使這種事情發生的概率很小。一般而言,差錯檢測和糾正技術越複雜,開銷也就越大。
下面介紹傳輸資料中檢查差錯的3種技術。奇偶校驗(它用來描述差錯檢測和糾正背後隱含地基本思想)、檢驗和方法(通常更多地應用於應用層)和迴圈冗餘檢測(通常更多地應用於介面卡中的鏈路層)。
奇偶校驗
也許差錯檢測最簡單的方式就是用單個奇偶校驗位(parity bit)。在偶校驗方案中,傳送方只需包含乙個附加的位元,選擇它的值,使得這d+1個位元(初始資訊加上乙個校驗位元)中1的總數為偶數。對於奇校驗方案,選擇校驗位位元值使得有奇數個1。
下圖是1位元偶校驗。
採用單個奇偶校驗位的方式,接收方操作也很簡單。統計d+1中位元為1的個數,在採用偶校驗方法中如果出現了奇數個1,接收方知道至少出現了乙個位元差錯,準確地說為,出現了奇數個位元差錯。
倘若出現了偶數個位元差錯,這將會導致出現未檢出的差錯。經過測量,這種差錯經常以「突發」形式聚集在一起,所以我們需要乙個更健壯的差錯檢測方案(實踐中也是使用更健壯的方案)。在介紹實踐中使用的方案,我們繼續介紹奇偶校驗的一種簡單的一般化方案,深入理解糾錯技術。
下圖顯示的是單位元奇偶檢驗方案的二維一般化方案。d個位元被劃分為i行j列。對每行每列計算奇偶值。產生i+j+1奇偶比特構成了鏈路層幀的差錯檢測位元。位元被改變的行和列都可以檢測出現差錯,並且還可以利用存在奇偶校驗差錯的列和行的索引來實際識別發生差錯的位元並糾正它。
現在假設初始d位元**現了單個位元差錯。下圖是乙個例子。
接收方檢測和糾錯的能力被稱為前向糾錯(forward error correction,fec)。這些技術通常用於如音訊cd這樣的音訊儲存和回放裝置中。接收方發現錯誤可以立即糾錯,避免了使傳送方重傳資料,這對實時網路應用和具有長傳播時延的鏈路(如深空間鏈路)很有幫助。
檢驗和在檢驗和技術中,將d位元資料作為乙個k位元整數的序列處理。
乙個簡單的檢驗和方法就是將這k位元整數加起來,並且用得到的和作為差錯檢測位元。
檢驗和需要相對較小的分組開銷。
網際網路檢驗和(internet checksum)便是基於這種方法,即資料的位元組作為16位元的整數對待並求和。這個和的反碼形成了攜帶在報文段首部的檢驗和字段。
接收方通過對接收的資料(包括檢驗和)的和 取反碼,並且檢測其結果結果是否全為1位元來檢測檢驗和。如果這些位元中有任何位元為0,就可以指示錯誤。
迴圈冗餘檢測
如今的計算機網路中廣泛地應用的差錯檢測技術基於迴圈冗餘檢測(cyclic redundancy check,crc)編碼。crc編碼也稱為多項式編碼(polynomial code),該編碼能夠將傳送的位元串看作為係數是0和1乙個多項式,對位元串的操作被解釋為多項式運算。
crc編碼操作如下
考慮d位元資料d,傳送結點要將它傳送給接收結點。
傳送方和接收方首先必須商議乙個r+1位元模式,稱為生成多項式(generator),將其表示為g,要求g的最高有效位為1(最左邊)。
對於乙個給定的資料段d,傳送方要選擇r個附加位元r,並將它們附加到d上使得得到的d+r位元模式(被解釋成乙個二進位制數)用模2算術恰好能被g整除。在接收方這邊,用g除以接收到的d+r位元,如果餘數不為0,接收方便知道了差錯,若餘數為0,則接收資料。
所有crc採用模2運算算術,在加法中不進製,減法中不借位,即等價於異或運算(xor),乘法和除法也相同。並且,d*2^k xor r產生如上圖所示的d+r位元模式。
舉例說明
如上圖所示,d = 101110,d = 6,g = 1001,和r = 3的情況下計算r。得出r = 011。
於是傳送方會傳輸9個位元101110011。
國際標準已經定義了8,12,16和32位元生成多項式g。其中crc-32 32位元的標準被多種鏈路級ieee協議採用。
每個crc標準都可以檢測小於r+1位元的突發錯誤(意味著所有連續的r位元或者更少的差錯都可以檢測到)。每個crc標準也能檢測任何奇數個位元差錯。
《計算機網路 自頂向下方法》學習筆記
crc可以檢出奇數個錯誤 CRC校驗原理及推導過程
crc校驗基本原理 crc檢驗原理實際上就是在乙個p位二進位制資料序列之後附加乙個r位二進位制檢驗碼 序列 從而構成乙個總長為n p r位的二進位制序列 附加在資料序列之後的這個檢驗碼與資料序列的內容之間存在著某種特定的關係。如果因干擾等原因使資料序列中的某一位或某些位發生錯誤,這種特定關係就會被破...
CRC校驗和CRC各種演算法
crc校驗和crc各種演算法 1 簡介 crc即 迴圈冗餘校驗碼 cyclic redundancy check 是資料通訊領域中最常用的一種查錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。迴圈冗餘檢查 crc 是一種資料傳輸檢錯功能,對資料進行多項式計算,並將得到的結果附在幀的後面,接收...
Reading Andrew Ng DL 目標檢測
目標檢測 1 物件定位和特徵點檢測 目標檢測的神經網路的目標標籤和損失函式為 2 基於滑動視窗的目標檢測演算法。定義 我們以某個步幅滑動這些方框視窗遍歷整張,對這些方形區域進行分類,判斷裡面有沒有汽車。缺點 計算量大 粒度 步幅 3 卷積的滑動視窗實現 基於滑動視窗的目標檢測演算法的缺點 計算量大 ...