偽首部

偽首部(pseudo header),通常有TCP偽首部和UDP偽首部。在UDP偽首部中,包含32位源IP位址,32位目的IP位址,8位協定,16位UDP長度。通過偽首部的校驗,UDP可以確定該數據報是不是發給本機的,通過首部協定欄位,UDP可以確認有沒有誤傳。

Tcp偽首部:

typedef struct

{

unsigned long saddr; //源IP位址

unsigned long daddr; //目的IP位址

char mbz;

// mbz = must be zero, 用於填充對齊

char protocal; //8位協定號

unsigned short tcpl; // TCP包長度

}psdheader_t;

TCP校驗和計算算法詳解 我就不管是按“位”(bit)取反相加,還是按“1的補碼”相加了,總之就是把需要進行校驗的“字串”加(+)起來,把這相加的結果取反當做“校驗和” (Checksum),比如,相加的結果是0101,那么“校驗和”就是1010,驗證的時候呢,就是 0101+1010 = 1111 ,取反後,就是0——如果驗證得“零”(0),就是正確的!

基本介紹

  • 中文名:偽首部
  • 外文名:pseudo header
  • 類型:TCP偽首部和UDP偽首部
  • 屬於:一個虛擬的數據結構
命令簡介,命令套用,

命令簡介

Tcp偽首部:
typedef struct

命令套用

偽首部並非TCP&UDP數據報中實際的有效成分。偽首部是一個虛擬的數據結構,其中的信息是從數據報所在IP分組頭的分組頭中提取的,既不向下傳送也不向上遞交,而僅僅是為計算校驗和。這樣的校驗和,既校驗了TCP&UDP用戶數據的源連線埠號和目的連線埠號以及TCP&UDP用戶數據報的數據部分,又檢驗了IP數據報的源IP位址和目的地址。偽報頭保證TCP&UDP數據單元到達正確的目的地址。因此,偽報頭中包含IP位址並且作為計算校驗和需要考慮的一部分。最終目的端根據偽報頭和數據單元計算校驗和以驗證通信數據在傳輸過程中沒有改變而且到達了正確的目的地址。
偽首部,更確切的說是校驗和包含的—個96位的偽首標,是個理論上的值,只是理論上它位於TCP&UDP首標的前面。這個偽首標包含了源地址、目的地址、協定和TCP&UDP長度等欄位,這使得TCP&UDP能夠防止出現路由選擇錯誤的數據段。這些信息由網際協定(IP)承載,通過TCP&UDP網路接口,在IP上運行的TCP&UDP調用參數或者結果中傳遞。
為了計算一份數據報的IP檢驗和,首先把檢驗和欄位置為0。然後,對首部中每個16bit進行二進制反碼求和(整個首部看成是由一串16bit的字組成),結果存在檢驗和欄位中。當收到一份IP數據報後,同樣對首部中每個16bit進行二進制反碼的求和。由於接收方在計算過程中包含了傳送方存在首部中的檢驗和,因此,如果首部在傳輸過程中沒有發生任何差錯,那么接收方計算的結果應該為全1。如果結果不是全1(即檢驗和錯誤),那么IP就丟棄收到的數據報。但是不生成差錯報文,由上層去發現丟失的數據報並進行重傳。

相關詞條

熱門詞條

聯絡我們