2012-03-27 143 views
0

我在Live555郵件列表上收到了這個回覆: 「UDP不需要FEC,UDP服務傳遞一個數據包,或者不傳輸數據包 UDP不會隨機地在數據包內部翻轉某些位 要容忍數據包丟失,只需要冗餘。「UDP是否需要FEC代碼?

我想知道這個說法是否正確;並請提供您答案的依據。

說明:我指的是正向擦除校正。也許在Live555列表中回答的人是指前向錯誤代碼。

+2

這是很真實的UDP不隨意翻動包中位,但它很可能對位隨機翻轉爲數據包穿過網絡。請注意,UDP校驗和(如果啓用的話)是16位補碼(對於某些類型的數據調整不如CRC好,並且有1比2 ** 16的機會,隨機調整不會被校驗和)。 – 2012-03-27 16:30:38

回答

0

UDP本身不會導致或防止位被翻轉。根據數據的傳輸方式,翻轉的位當然是可能的。

與此同時,大多數網絡已經發展到堆棧中較低層次的錯誤糾正,因此在很多情況下,您可能無需在UDP之上添加任何層。然而,這是遠遠不能保證的 - 根據傳輸它的物理層,UDP數據包中的位錯誤當然是可能的,所以如果你確實需要確保這一點,獨立於使用的較低層,那麼FEC可以提供真正的效用。

編輯:是的,我想如果沒有一些上下文來指出,大多數使用「FEC」的人是指「前向糾錯」(這當然是我在撰寫答覆時所指的那種)。

0

IP數據包在頭文件中有校驗和。請參閱Wikipedia,RFC791等。

這對於您的應用程序來說是否足夠讓您決定。

0

在UDP堆棧裏面沒有FEC校正,只是一個校驗和計算,看看接收到的數據報裏面是否有錯誤的位,如果是的話,那個數據包會被丟棄。使用UDP將FEC應用於傳輸信道通常使用reed-solomon代碼。在有線網絡中包內錯誤比特的可能性很低,但在無線網絡中相當高,因此,無線鏈路提供了所有諸如turbo碼的FEC來糾正數據鏈路包內的數據符號(比特數)。

史蒂芬