回答:
本当に理解したい場合は、ここに優れた(非常によく書かれた)ホワイトペーパーがあります。
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層がないため、すべての着信ICMPパケットPing (program)
を監視し、宛先からのパケットのみをフィルタリングする必要があります。
お役に立てば幸いです。
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)を参照してください。
PingとARPは、ネットワークプロトコルスタックの異なる層にある異なるものです。
Pingはネットワーク層(またはインターネット層- @ServerMonkeyが指摘したようなICMPプロトコルをご覧ください)にあります。
Arpプロトコルはリンクレベル(下位レベル)です。Arpプロトコルは、直接接続されているネットワークハードウェア間の物理的な接続を許可するように設計されています。
TCP / IPネットワークスタックでは、すべてのレイヤーが下のレイヤーを使用してデータを転送し、低レベルプロトコル内にカプセル化します。各層は他の層から独立しており、他のレベルの特定の詳細および実装を認識しない可能性があります(これは常に当てはまるわけではありません。クロスレイヤー機能を参照してください)。
ARPはMACアドレスを提供しますが、DMACアドレスがない場合、ブロードキャストアドレスが使用される場合があります。
ブロードキャストDMACを使用するこのフレームはARPブロードキャストフレームと呼ばれ、これによりDMACアドレスが取得されます。