2016-11-19 45 views
0

我需要迭代IP標頭。投射數據包以獲取IP標頭

我有以下一段代碼來分解一個數據包。

#define SIZE_ETHERNET 14; 
ethernet = (struct ether_header*) packet; 
ip = (struct ip*) (packet + SIZE_ETHERNET); 

<netinet/ip.h>給出的IP結構,我發現IP報頭的大小是由size_ip = IP_HL(ip)*4

給出,但我不明白爲什麼我們需要4乘IP_HL(ip)得到它。

+0

是的,對不起。我現在正在編輯這個。 –

回答

0

IP標頭的標頭長度字段是標頭中的DWORDS(32位)的數量。這裏的size_ip值是頭部中的字節數(8位)。因此,要從頭部長度字段中獲取size_ip的值,轉換爲*4以說明DWORD中的字節數。