0

これは私の前の質問へのフォローアップです: ARP 応答パケットは Ubuntu の ARP キャッシュを更新しません。私の問題は、送信元MACとして任意のMACアドレスを使用していたことにあることが判明しました(つまり、ネットワーク上に存在しないもの、aa:bb:cc:dd:ee:ffなど)。ソース MAC が NIC の MAC と一致する限り、問題なく ARP 応答を送信してキャッシュをポイズニングできます。手動で NIC に任意の MAC アドレスを設定し、それを ARP パケットのソース MAC として使用して ARP 応答を送信しようとしましたが、これも機能しました。

誰かがこれの内部の仕組みを知っているかどうか疑問に思っています。送信元 MAC が一致しないパケットが送信されないようにする何らかのチェックがありましたか? イーサネット フレームの送信元 MAC と ARP パケットの送信元 MAC の間のチェックでしたか? 私が実行している実験のために、この制限を回避する方法はありますか?

4

2 に答える 2

0

ARP をより効率的に機能させるために、さまざまな最適化が可能です。まず、マシンが ARP を実行すると、すぐに同じマシンに接続する必要がある場合に備えて結果をキャッシュします。次回は、独自のキャッシュでマッピングが検出されるため、2 回目のブロードキャストが不要になります。多くの場合、ホスト 2 (受信側) は返信を返す必要があり、送信側のイーサネット アドレスを決定するために ARP を実行する必要があります。この ARP ブロードキャストは、送信者が IP からイーサネットへのマッピングを ARP パケットに含めることで回避できます。

Tanenbaum の Computer Networks、第 5 版 p486-487 から引用

したがって、受信者が送信者の MAC を解決できないようです。タネンバウムは、この失敗を回避するための解決策を提示しました。

于 2012-09-03T11:01:56.783 に答える