2016-11-19 1 views
0

Ich muss über den IP-Header iterieren.Casting ein Paket, um einen IP-Header zu bekommen

Ich habe das folgende Stück Code, um ein Paket zu zerlegen.

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

Nach der IP-Struktur von <netinet/ip.h> gegeben, ich habe festgestellt, dass die Größe des IP-Headers von size_ip = IP_HL(ip)*4

gegeben war, aber ich verstehe nicht, warum wir IP_HL(ip) von 4 multiplizieren müssen erhalten es.

+0

Ja, tut mir leid. Ich bearbeite das gerade jetzt. –

Antwort

0

Das Header-Längenfeld des IP-Headers ist die Anzahl der DWORDS (32 Bits) in der Kopfzeile. Der Wert size_ip hier ist die Anzahl Bytes (8 Bits) im Header. Um also den Wert size_ip aus dem Kopfzeilenlängenfeld zu erhalten, ist die Umwandlung *4, um die Anzahl der Bytes in einem DWORD zu berücksichtigen.

Verwandte Themen