一、什麼是碼距
碼距就是兩個碼字c1與c2之間不同的位元數。如:1100與1010的碼距為2,1111與0000的碼距為4。
乙個編碼系統的碼距就是整個編碼系統中任意(所有)兩個碼字的最小距離。若乙個編碼系統有四種編碼分別為:0000,0011,1100,1111,此編碼系統中0000與1111的碼距為4,0000與0011的碼距為2,是此編碼系統的最小碼距。因此該編碼系統的碼距為2。
二、什麼是檢錯與糾錯
有很多網友和學員不明白,為什麼有些編碼能檢查出錯誤,而不能糾正錯誤?下面來舉乙個生活當中簡單的例子來說明這一點。
(1)若某公司發出乙個通知:「明天14:00~16:00開會」,但在通知傳送過程中由於行政部工作人員疏忽,變成了「明天10:00~16:00開會」。員工收到這個錯誤通知後由於無法判斷其正確與否,就會按這個錯誤時間去安排與組織。
(2)為了使接收者能判斷正誤,可以在通知內容中增加「下午」兩個字,即改為:「明天下午14:00~16:00開會」。
這時,如果仍錯為:「明天下午10:00~16:00開會,則收到此通知後,根據「下午」與「10:00」資訊即可判斷通知發生了錯誤。但仍不能糾正其錯誤,因為無法判斷是「下午」與「10:00」哪一資訊出錯,即無法判斷公司原來制定開會的具體時間。這時,接收者可以告訴傳送方再發一次通知(員工向行政部人員詢問,行政部再次確認會議時間),這就是檢錯重發(這也就是我們所說的能檢錯,但無法糾錯)。
(3)為了實現不但能判斷通知準確性(檢錯),同時還能正確判斷會議開始的具體時間(糾錯),行政部可以把通知內容再增加「兩個小時」四個字,即改為:「明天下午14:00~16:00開會兩個小時」。這樣,如果其中「14:00」錯為「10:00」,不但能判斷出錯誤,同時還能糾正錯誤,因為其中增加的「兩個小時」這個標識可以判斷出正確的時間為「14:00~16:00」。當然,這顯然也增加了資訊的冗餘,降低了資料處理的效率。但隨著頻寬的不斷提高,資料執行與處理的能力日益增強,可靠性與效率的均衡,這是值得的。
三、碼距和檢錯糾錯
兩個概念:
1.在乙個碼組內為了檢測e個誤碼,要求最小碼距應該滿足: d>=e+1。
2.在乙個碼組內為了糾正t個誤碼,要求最小碼距應該滿足: d>=2t+1。
舉個例子來說明這個問題:
假如我們現在要對a,b兩個字母進行編碼。我們可以選用不同長度的編碼,以產生不同碼距的編碼,分析它們的檢錯糾錯能力。
示例1:若用1位長度的二進位制編碼。若a=1,b=0。這樣a,b之間的最小碼距為1。
合法碼:{0,1}; 非法碼:{0,1};
根據上面的規則可知此編碼的檢錯糾錯能力均為0,即無檢錯糾錯能力。其實道理很簡單,這種編碼無論由1錯為0,或由0錯為1,接收端都無法判斷是否有錯,因為1,0都是合法的編碼。
示例2:若用2位長度的二進位制編碼,可選用11,00作為合法編碼,也可以選用01,10作為合法編碼。若以a=11,b=00為例,a、b之間的最小碼距為2。
合法碼:{11,00}; 非法碼:{01,10};
根據上面的規則可知此編碼的檢錯位數為1位,無法糾錯。因為無論a(11)或b(00),如果發生一位錯碼,必將變成01或10,這都是禁用碼組(非法碼),故接收端可以判斷為誤碼,卻不能糾正其錯誤。因為無法判斷誤碼(01或10)是a(00)錯誤還是b(11)錯誤造成,即無法判斷原資訊是a或b,或說a與b形成誤碼(01或10)的可能性(概率)是相同的。如果產生二位錯碼,即00錯為11,或11錯為00,結果將從乙個合法編變成另乙個合法編碼,接收端就無法判斷其是否有錯。所以此種編碼的檢錯能力為1位,糾錯能力為0位。
示例3:若用3位長度的二進位制編碼,可選用111,000作為合法編碼。a,b之間的最小碼距為3。
合法碼:{111,000}; 非法碼:{001,010,011,100,101,110};
根據上面的規則可知此編碼的檢錯位數為2位,糾錯位數為1位。例如:當資訊a(000)產生1位錯誤時,將有3種誤碼形式,即001或010或100,這些都是禁用碼組,可確定是誤碼。而有這3個誤碼與合法編碼000的距離最近,與合編碼111的距離較遠,根據誤碼少的概率大於誤碼多的概率的規律,可以判定原來的正確碼組為000,只要把誤碼中的1改為0即可得到糾正。同理,如果資訊b(111)產生1位錯誤時,則有另三種誤碼可能產生,即110,101,011,根據同樣道理可以判定原來的正確碼組是111,並能糾正錯誤。
但是,如果資訊a(000)或資訊b(111)產生兩位錯誤時,雖然能根據禁用碼組識別其錯誤,但糾錯時去會做出錯誤的糾正而造成「誤糾錯」。
如果資訊a(000)或資訊b(111)產生三位錯誤時,將從乙個合法編碼a(或b)變成了另乙個合法編碼b(或a),這時既檢不出錯,更不會糾錯了,因為誤碼已成為合法編碼,解碼後必然產生錯誤。所以檢錯位數為2位,糾錯位數為1位。
四、小結
編碼資訊糾錯和檢錯能力的進一步提高需要進一步增加碼字間的最小距離。
增大編碼資訊的碼距的乙個基本缺點是,在任何給定的系統中,都會因而降低資料傳輸效率。顯然, 這是由於增加的碼位(為增大最小距離所需的)減小了有用的資訊時間。這就給每個資訊增加了所謂多餘度。所以,選擇最小距離要取決於特定系統的引數。數字系統的設計者必須考慮資訊發生差錯的概率和該系統能容許的最小差錯率等因素。
資料鏈路層的差錯控制ARQ
本文重點介紹了差錯控制以及自動重發檢錯arq。差錯控制時鏈路層乙個非常重要的功能,鏈路層需要在不太可靠的物理層來盡量實現可靠的鏈路層傳輸,靠的就是差錯控制。所謂差錯控制,就是對傳輸的資料資訊進行錯誤檢測,並加以恰當的處理。這其中就包含了多個方面,比如說正確接收資料,檢錯能力和糾錯能力等等。檢錯能力是...
資料鏈路層和運輸層的流量控制及差錯控制
這兩天在複習 計算機網路 的期末考試,想明白了幾個問題,做下筆記。1 停止等待 後退n幀和滑動視窗 這三種協議是做什麼的?流量控制 接收方控制傳送方,傳送方的速率不要太快,讓接收方來得及接收。差錯控制 幀錯誤 幀丟失 幀重複。無圖無真相 2 資料鏈路層的差錯控制和運輸層的可靠傳輸有什麼區別?從 幹什...
TCP IP協議(2) 資料鏈路層
資料鏈路層有三個目的 1.為ip模組傳送和接收ip資料報 2.為arp模組傳送arp請求和接收arp應答 3.為rarp傳送rarp請求和接收rarp應答 ip大家都聽說過。至於arp和rarp,arp叫做位址解析協議,是用ip位址換mac位址的一種協議,而rarp則叫做逆位址解析協議,在tcp i...