2011-12-01 131 views
2

看來UDP使用相當簡單的校驗和算法,並且大多數情況下它會產生所需的結果並檢測錯誤。UDP校驗和算法的可靠性如何?

但是,據我所知,使用Jumbo幀和校驗和相同時,UDP的標頭是相同的。它只有16位。

這會增加錯誤發生的可能性,並且使用UDP的協議(特別是使用大數據包的協議)不應該依賴UDP校驗和?

回答

3

正如您所指出的那樣,無論數據包有多大,UDP都使用16位校驗和。如果更改不改變所有16位字的總和,則UDP校驗和無法檢測錯誤。隨着數據包大小的增加,這種情況更可能發生。

但是,UDP通常運行在以太網之上,它提供了一個32位的CRC,它比UDP校驗和更健壯。因此,大多數人依靠以太幀來保證數據的完整性。

大的UDP數據包將被分割成多個IP數據包,每個數據包都在它自己的32位CRC的以太網數據包中。因此,從數據完整性角度來看,發送大型UDP數據包不是一個問題,儘管IP分段可能會增加數據包丟失和重新排序。

0

大幀將需要分段,每個片段將有一個校驗和與之相關聯。你是正確的,頭的大小不會改變,但發送的數據包的數量會改變,從而增加了發送的校驗和位的數量。我希望這有幫助。

+1

兩點。巨型幀!=大型分段幀,並且如果UDP有效負載被分段,則只有一個UDP校驗和。儘管每個片段都有一個IP校驗和。 – jman

+0

@skjaidev謝謝你指出jumbo!=大。我沒有意識到巨無霸是一個技術術語。我很高興我學到了一些東西。我對這個不好的答案表示歉意。 – Boundless