Pingコマンドは実際どのように機能しますか?具体的には、ARP(アドレス解決プロトコル)はどこから登場するのですか?
この質問はインタビューで尋ねられましたが、ARPを使用できるシナリオを思い付くことができませんでした。
本当に理解したい場合は、こちらに優れた(非常によく書かれた)ホワイトペーパーがあります。
http://images.globalknowledge.com/wwwimages/whitepaperpdf/WP_Mays_Ping.pdf
ここに概要があります->
Ping (Program on the application layer)
------->
_Opens a 'raw' socket to IP Layer
_------>IP layer (Layer 2 on OSI) packages ICMP packet and sends it
TCPレイヤーが間にないため、Ping (program)
はすべての着信ICMPパケットを監視する必要がありますそして、目的地からのものだけをフィルタリングします。
お役に立てば幸いです。
PingにイーサネットまたはWiFiネットワークを介して送信されるパケットが含まれていると仮定すると、ARPは、アウトバウンドパケットを受信するデバイスのイーサネットハードウェアアドレスを見つけるために使用されます。通常、これは、pingを発信するマシンが存在するLANのルーターです。
一般的なプロセスは次のとおりです。
宛先にpingするコマンドを入力します。
DNSは、IPアドレスを決定するために使用されます(必要な場合)。
ルーティングテーブルは、その宛先への次のホップを見つけるために調べられます。
ARPは、ネクストホップのハードウェアアドレスを見つけるために使用されます。
IPパケットはネクストホップに送信され、イーサネットまたはWiFiフレームにカプセル化されます。
Pingは実際には2つの異なるICMP(インターネット制御メッセージプロトコル)パケットです。
ホストにpingを送信するには、最初にICMPエコー要求パケットを送信すると、ホストはICMPエコー応答で応答します。
詳細については、次を参照してください: https://en.wikipedia.org/wiki/Ping_(networking_utility)
ARPはMACアドレスを提供しますが、DMACアドレスがない場合は、ブロードキャストアドレスが使用されます。
ブロードキャストDMACを使用するこのフレームは、ARPブロードキャストフレームと呼ばれ、DMACアドレスを取得します。
PingとARPは、ネットワークプロトコルスタックの異なるレイヤーに配置される異なるものです。
Pingはネットワークレイヤー(またはインターネットレイヤー ([〜#〜] icmp [〜#〜] @ServerMonkeyで指摘されているようなプロトコル)を見てください)。
Arpプロトコルはリンクレベル(下位レベル)にあります。 Arpプロトコルは、直接接続されているネットワークハードウェア間の物理的な接続を可能にするように設計されています。
TCP/IPネットワークスタックでは、すべてのレイヤーが下のレイヤーを使用してデータを転送し、低レベルのプロトコル内にカプセル化します。各レイヤーは、他のレイヤーから独立しており、他のレベルの特定の詳細や実装を認識していない可能性があります(これは常に当てはまるわけではありません: クロスレイヤー関数 を参照)。