0

宛先IPがわかっている場合、ANSI Cを使用して宛先MACアドレスを取得する方法はありますか?カーネルがすべてを処理し、ARPキャッシュを利用できるように、システムコールを使用することをお勧めします。独自のARP要求を作成して送信できることはわかっていますが、自分で実装しない限り、キャッシュ機能などはありません。そのため、カーネルにそれを処理させる方法であるように感じます。

4

2 に答える 2

2

ANSI Cではないため、正確な答えではありませんが、arpテーブルは/proc/net/arp(Linuxでは)から読み取ることができます。それがarp見えるところです。他のOSの場合、最も簡単な方法はstrace、同等のarp-cache-showingユーティリティで同等のものを使用することです。

于 2010-07-19T07:05:42.143 に答える
-1

私がやろうと決めたのは、自分のARPパケットを送信し、それをアプリケーションの内部にキャッシュすることでした。宛先がローカルネットワークの外部にある場合は、指定されたインターフェイスのゲートウェイを解析/proc/net/routeして抽出し、arpパケットをゲートウェイに送信してそのMACアドレスを取得します(これは、ローカルネットワークの外部に送信されるパケットの宛先MACアドレスであるため)。

于 2010-07-22T09:41:23.697 に答える