各類報頭TCP UDP ICMP IP結構

2021-06-06 19:27:48 字數 1818 閱讀 9971

當我們使用raw socket的時候,可以完全自定義ip包,一切形式的包都可以"製造"出來。因此,本文事先必須對tcp/ip所涉及ip包結構進行必要的交待。

目前,ipv4的報頭結構為常用的icmp報文包括echo-request(響應請求訊息)、echo-reply(響應應答訊息)、destination unreachable(目標不可到達訊息)、time exceeded(超時訊息)、parameter problems(引數錯誤訊息)、source quenchs(源抑制訊息)、redirects(重定向訊息)、timestamps(時間戳訊息)、timestamp replies(時間戳響應訊息)、address masks(位址掩碼請求訊息)、address mask replies(位址掩碼響應訊息)等,是internet上十分重要的訊息。後面章節中所涉及到的ping命令、icmp拒絕服務攻擊、路由欺騙都與 icmp協議息息相關。

版本號(4)

包頭長(4)

服務型別(8)

資料報長度(16)

標識(16)

偏移量(16)

生存時間(8)

傳輸協議(8)

校驗和(16)

源位址(32)

目的位址(32)

選項(8)

......... 填充

對其進行資料結構封裝:

typedef struct _iphdr //定義ip報頭 

ip_header;

或者將上述定義中的第一位元組按位拆分:

typedef struct _iphdr //定義ip報頭 

ip_header;

更加嚴格地講,上述定義中h_len、ver欄位的記憶體存放順序還與具體cpu的endian有關,因此,更加嚴格的ip_header可定義為:

typedef struct _iphdr //定義ip報頭 

ip_header;

tcp報頭結構為:

源埠(16)

目的埠(16)

序列號(32)

確認號(32)

tcp偏移量(4)

保留(6)

標誌(6)

視窗(16)

校驗和(16)

緊急(16)

選項(0或32)

資料(可變)

對應資料結構:

typedef struct psd_hdr //定義tcp偽報頭 

psd_header; 

typedef struct _tcphdr //定義tcp報頭 

tcp_header;

同樣地,tcp頭的定義也可以將位域拆分:

typedef struct _tcphdr

tcp_header;

udp報頭為:

源埠(16)

目的埠(16)

報文長(16)

校驗和(16)

對應的資料結構為:

typedef struct _udphdr //定義udp報頭 

udp_header;

icmp協議是網路層中乙個非常重要的協議,其全稱為internet control message protocol(網際網路控制報文協議),icmp協議彌補了ip的缺限,它使用ip協議進行資訊傳遞,向資料報中的源端節點提供發生在網路層的錯誤資訊 反饋。icmp報頭為:

型別(8)

**(8)

校驗和(16)

訊息內容

常用的回送與或回送響應icmp訊息對應資料結構為:

typedef struct _icmphdr //定義icmp報頭(回送與或回送響應)

icmp_header;

報頭壓縮 ROHC報頭壓縮程式改進

改進後的rohc程式實現的功能如下 示例程式中使用到的函式功能總結如下 rohc init buf empty 將rohc buf結構體資料部分初始化 rohc comp new2 建立壓縮器 rohc comp enable profile 壓縮類設定profile enable rohc buf...

IPV6報頭和擴充套件報頭

ipv6頭部 版本 指明當前ip協議的版本。流量分類 相當於ipv4中的tos欄位,但考慮到tos近些年的發展,主要是用於做區分服務等級,所以將該字段的命名改的更貼近現在的用途。流標籤 這是ipv6中特有的乙個字段,這個字段設定的目的主要是為特定的業務流打上標籤。暫保留 有效負載長度 描述了ipv6...

http請求報頭和響應報頭(1)

1.web端不可避免的http快取機制,要理解快取機制,先來了解下http的請求報文和響應報文的內容 2.請求報文 2.1請求行 請求行三部分組成 請求方法 url以及版本協議 請求的方法有get head put post trace options delete以及擴充套件方法.2.2請求頭部 ...