2016-11-19 12 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という値を取得するには、変換はDWORDのバイト数を考慮して*4になります。

関連する問題