我需要迭代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得到它。
答案 0 :(得分:0)
IP报头的报头长度字段是报头中的DWORDS(32位)的数量。这里的size_ip
值是标题中的字节数(8位)。因此,要从标头长度字段中获取size_ip
的值,转换为*4
以计算DWORD中的字节数。