投射数据包以获取IP标头

时间:2016-11-19 17:05:03

标签: c networking 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

给出

但我不明白为什么我们需要将IP_HL(ip)乘以4得到它。

1 个答案:

答案 0 :(得分:0)

IP报头的报头长度字段是报头中的DWORDS(32位)的数量。这里的size_ip值是标题中的字节数(8位)。因此,要从标头长度字段中获取size_ip的值,转换为*4以计算DWORD中的字节数。