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