3

デバイスの IP アドレスが静的または DHCP によってランダムに割り当てられる可能性がある任意の IP ネットワーク上のサードパーティ デバイスへの永続的な参照を保存する必要があります。私はネットワーク上のデバイスを制御しておらず、DNS やその他のアドホック ネットワーク プロトコルが存在するか、デバイスで動作していることに依存できません。

そのため、ハードウェア アドレスと ARP を使用して調査するように指示されました。これは機能しますが、コードを複製したくありません。カーネルは ARP テーブルを管理する必要があります。Windows では、 GetIpNetTableなどを使用してアクセスできます。

これら 2 つの質問に答える API があることを願っています。

  • IP から MAC アドレスに変換するにはどうすればよいですか? (ARP)
  • MAC から IP アドレスに変換するにはどうすればよいですか? (InARP)

そうでない場合は、もっと手動で行う必要があるかもしれません:

  • カーネルの ARP テーブルを読み取るにはどうすればよいですか?
  • 自分でマッピングを決定した場合、エントリを追加するにはどうすればよいですか?
4

3 に答える 3

1

ARPについて
は、 system("/usr/bin/arp -option_of_choice"); を使用できます。出力を解析しますが、それは醜いハックです。-- 私のおすすめではありません。

/usr/include/linux/sockios.h を見てください -- SIOCGARP、SIOCDARP、および SIOCSARP の詳細。これらは、Linux で ARP テーブルを管理するために実行できる ioctl です。もちろん、ソケット fd でこれらの ioctl を実行する必要があります。以下にいくつかの例を示します: SIOCGARP の例
他のいくつかの言語でも同様に多くの例を見つけることができると確信しています。私はあなたがCを使用していると仮定しています。

RARP について:
Linux rarp マンページからの引用: 「このプログラムは廃止されました。バージョン 2.3 から、Linux カーネルには RARP サポートが含まれなくなりました。代替の RARP デーモンについては、ftp://ftp.dementia.org/ を参照してください。 pub/net-tools"
そのため、ターゲット システムに rarpd をインストールする必要があります。

于 2009-01-21T05:55:34.783 に答える
1

/proc/net/arp

K

于 2009-01-21T00:50:51.450 に答える
1

ARP テーブルはかなりローカルで、存続期間が短い傾向があります。プロトコルを調べると、実際の MAC アドレスは通常、特定の IP アドレスがローカル サブネットにある場合にのみ提供されます。それ以外の場合、パケットはローカル ルーターに転送され、ローカル ルーターが転送を担当します。

arp -gWindows で「 」、UNIX で「 」を実行arp -aすると、表が表示されますが、上記の理由により、何の役にも立たないと思います。そのコマンドと

それがまさにDNSの目的ですが、あなたが言うように、それはあなたにとって選択肢ではないかもしれません.

アプリケーションレベルで独自の「ARP」データベースを作成する必要があるかもしれません。

于 2009-01-21T00:51:29.030 に答える