TCP協議的校驗和

 TCP的16位的校驗和(checksum)的計算和檢驗過程如下:發送者將TCP報文段的頭部和數據部分的和計算出來,再對其求反碼(一的補數),就得到了校驗和,然後將結果裝入報文中傳輸。(這裏用反碼和的原因是這種方法的循環進位使校驗和可以在16位、32位、64位等情況下的計算結果在疊加後相同)接收者在收到報文後再按相同的算法計算一次校驗和。這裏使用的反碼使得接收者不用再將校驗和字段保存起來後清零,而可以直接將報文段連同校驗加總。如果計算結果是全部為一,那麼就表示了報文的完整性和正確性。

注意:TCP校驗和也包括了96位的僞頭部,其中有源地址、目的地址、協議以及TCP的長度。這可以避免報文被錯誤地路由。

按現在的標準,TCP的校驗和是一個比較脆弱的校驗。出錯概率高的數據鏈路層需要更高的能力來探測和糾正連接錯誤。TCP如果是在今天設計的,它很可能有一個32位的CRC校驗來糾錯,而不是使用校驗和。但是通過在第二層使用通常的CRC或更完全一點的校驗可以部分地彌補這種脆弱的校驗。第二層是在TCP層和IP層之下的,比如PPP以太網,它們使用了這些校驗。但是這也並不意味着TCP的16位校驗和是冗餘的,對於因特網傳輸的觀察,表明在受CRC保護的各跳之間,軟件和硬件的錯誤通常也會在報文中引入錯誤,而端到端的TCP校驗能夠捕捉到很多的這種錯誤。這就是應用中的端到端原則。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章