1

受信しているパケットのイーサタイプを識別しようとしています。Ether Type IDは608であり、Ethertype.h(libpcap 1.2.1)に対応する定義がありません。受信したパケットの大部分はいずれかのタイプの8であり、Ethertype.hには対応する定義がありません。誰かがこの背後にある原因について何か考えを持っていますか、またはエラーレポートでTCPDumpに連絡する必要がありますか?

4

2 に答える 2

1

キャプチャしている上pcap_datalink()のの戻り値は何ですか?pcap_t

そうでない場合DLT_EN10MB(値は1)、パケットはイーサネットパケットではないため、イーサネットパケットとして解析しないでください。

の場合DLT_EN10MB、その16進数の608または10進数の608ですか?10進数の608の場合、タイプフィールドではなく長さフィールドです。同じことが8にも当てはまります。これは、同じ10進数または16進数であるため、型の値ではなく長さの値になります。

于 2012-03-18T18:38:28.233 に答える
0

マンページから:

「ntohs()関数は、符号なし短整数netshortをネットワークバイトオーダーからホストバイトオーダーに変換します。」

私のコードから:

if(ntohs(ethernet-> ether_type)== 0x0800)..。

于 2012-04-03T06:47:22.480 に答える