複製鏈接
請複製以下鏈接發送給好友

偽首部

鎖定
偽首部(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
{
unsigned long saddr; 
unsigned long daddr; 
char mbz;
char protocal;
unsigned short tcpl;
}psdheader_t;

偽首部命令應用

偽首部並非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就丟棄收到的數據報。但是不生成差錯報文,由上層去發現丟失的數據報並進行重傳。