4

生パケットを送信した後、スイッチ環境でマシンの MAC アドレスを見つけようとしています。traceroute コマンドを実装しようとしています。ICMP 時間超過メッセージを受信したときに、そのマシンの MAC アドレスを抽出する方法を知りたいです。私はネットワーク プログラミングが初めてなので、MAC アドレスを抽出するのにどのソケット呼び出しが役立つのか混乱しています。

ありがとう 。

4

3 に答える 3

4

いいえ、ICMP 応答から MAC アドレスを抽出することはできません。

隣にあるリンクされたマシンの MAC アドレスのみを決定できます。ICMP(tracert) では、ターゲットまたは中間マシンの IP アドレスを見つけることができます。

MAC アドレスを検出する場合は、インターネットではなくローカル ネットワークで適用可能な ARP プロトコルを使用する必要があります。

ICMP プロトコルは IPv4 ヘッダー [ 1 ] の後に開始され、MAC アドレスは物理/リンク層に関連付けられます。低レベルのレイヤーでは、MAC アドレスは、ネットワーク (IP) や伝送などのトップレベルのレイヤーから透過的になります...

MAC アドレスを決定するには、Raw ソケットまたはPCAP SDKを使用して、ネットワーク プログラミングの下位層にアクセスする必要があります。(繰り返しますが、これらはインターネット上では役に立ちません)

于 2011-10-19T13:11:01.420 に答える
0

一般に、インターネットでは、ホストがパケットの送信に使用しているメディアさえ知りません。リモート ホストがシリアル rs-232-C リンクを介して PPP プロトコルで接続されているとします。MACアドレスはありません。これは、たとえば、ホストがトークン リング インターフェイスまたはフレーム リレー リンクを使用している場合にも発生します。これにより、ホストのリモート MAC アドレスを特定することが完全にローカルの問題になります。通常、イーサネット経由でリモート サイトからパケットを取得する場合、パケットで取得する送信元 MAC アドレスは、IP パケットを送信した元のホストの 1 つではなく、インターネットにリンクする最後のルーターの 1 つです。IP 上の RFC オーバー トリ キャリア (rfc1149、rfc2549、および rfc6214) では、送信に使用されるメディアは、MAC アドレスの使用を許可していません (リンク アドレスは、ピジョンである程度実現可能であれば、その名前になります)。

スイッチのイーサネット ネットワークでの traceroute について読みたい場合は、スイッチ (tracelink サービス) を介した tracerouting を行うための仕様がある IEEE802.1ag を確認する必要があったかもしれませんが、この回答の範囲をはるかに超えていると思います。 .

于 2015-09-04T10:01:46.287 に答える
0

Masoud M が言ったように、ローカル ネットワーク上にあるマシンの MAC アドレスしか取得できません。つまり、コマンドの出力を解析してarp、ローカル ネットワーク上のマシンの IP アドレスから MAC アドレスを見つけることができます。

于 2011-10-19T13:48:35.073 に答える