誤碼率(bit error ratio)與丟包率 (packet error ratio)
今天就個人對誤碼率和丟包率的理解跟大家探討一下,還是舉個例子來說明比較直觀:

假設如圖所示為一段網絡上傳送的數據(當然必然是二進制了),長度為 34 比特。圖中第一行是為方便說明我給每個比特編的序號;圖中第三行是每個比特對應的包號,按我的假設這 34 個比特被分成 5 個包,即第一到第五個比特屬於第一個包,第六到第第十三個比特屬於第二個包,……;圖中第四行表示比特誤碼的情況,“×”表示對應比特位出現誤碼,“○”表示對應比特位無誤碼。從圖中可以看出 34 個比特中有 12 個出現誤碼(因為有 12 個“×”),那么我們就可以算出來這段數據的誤碼率是 35%。
我們知道數據在網絡上傳送到接收端是要經過網關的。而網關會對收到的數據進行 CRC 校驗來判斷是否有錯誤發生,如果網關在發現有誤碼時候直接將包含該誤碼的包丟掉而不傳給接收終端,那么接收終端接收到的數據就只會出現整個包丟失的情況而不會出現一個包中某個比特出錯的情況,所以這個時候接收終端感受到的就是丟包率。那么上面例子中丟包率是多少呢?從圖中可以看出,前四個包都發生了誤碼,只有最后一個包沒有誤碼,因此前四個包都會被網關丟掉而不傳送給接收端,所以上面的例子的丟包率就是 80%。相反,如果網關在發現有誤碼的時候並不把包丟掉,而仍然傳給接收終端,那么接收終端收到的數據就只會出現比特錯誤的情況而不會出現丟包的情況。
對於接收終端來說,接收終端接收到的數據要么出現丟包,要么出現誤碼,而不可能兩者同時出現。而通常網絡傳送中的網關都是發現誤碼就把整個包丟掉。
我們通常說的誤碼率是針對數據在網絡信道上而言的,而我們所說的丟包率則是針對數據在接收終端而言。因此一段數據的誤碼率與丟包率是有一定對應關系的,而這個對應關系則主要取決於兩個因素:
1、數據包的大小:就像上面的例子,我假設了 5 個包,所以丟包率是 80%,如果整個 34 比特數據都屬於一個包,那么丟包率就是 100% 了;
2、誤碼的分布:假設上面的例子中只有 2 個比特發生錯誤,那么很明顯誤碼率是 5.88%。而如果這兩個錯誤比特分別是第 1 和第 6 個比特,那么就有兩個包會被網關丟掉,丟包率就是 40%;而如果這兩個錯誤比特分別是第 1 和第 2 個比特,那么只有第一個包會被網關丟掉,丟包率就是 20%。