1

を使用して構築されたイーサネットプロトコル(IPではない)で遊んでいます

ソケット(PF_PACKET, SOCK_RAW, ether_type)

小さな問題があります。送信元と送信先の mac がローカル カードの mac に設定されたパケットを作成しました。これには、bind でソケットもバインドしました。

ネットワークからパケットを正常に受信できます。Wireshark に表示される程度までパケットを送信できます。

しかし、私のリッスン アプリはそれらのパケットを認識しません。ただし、ネットワーク上の他のソースからのパケットを見ることはできます。

私の MAC アドレスは正しいバイト順で送信されているように見えることを指摘しておく必要があります。

自分宛てにパケットを送信できますか?

ネットワーク カードはループバックしませんか? Linux カーネルはループバックのために IP レベルで何か特別なことをしますか?私はそれ以下なので無視しますか?

4

1 に答える 1

1

はい、あなたが言うように、IP「ループバック」パケットは特別に扱われます。それらは内部でループバックされ、インターフェイスを介して送信されません。したがって、この意味でのイーサネット レベルのループバックは、通常はサポートする必要のない特殊なケースです。一部の古い 10Mbit イーサネット カードは半二重でさえあったため、そのハードウェアでは動作しませんでした :)。

一方、ループバック アダプター ケーブルを購入/作成して、ネットワーク カードをテストすることもできます。したがって、(できればすべての)最新のハードウェアで可能でなければなりません。そして、人々は Linux で AF_PACKET を使用してそれらを使用しています (詳細はありませんが、ここに証拠があります)。

次の質問は、スイッチがこれをサポートしているかどうかです。ダムハブはそれをサポートする必要がありますが、最新のスイッチが混乱する余地があります. または、パケットの無限ループを恐れて許可しないかもしれません。

于 2012-08-24T09:28:55.663 に答える