web-dev-qa-db-ja.com

「ping」コマンドは実際にはどのように機能しますか?

Pingコマンドは実際どのように機能しますか?具体的には、ARP(アドレス解決プロトコル)はどこから登場するのですか?

この質問はインタビューで尋ねられましたが、ARPを使用できるシナリオを思い付くことができませんでした。

24
liv2hak

本当に理解したい場合は、こちらに優れた(非常によく書かれた)ホワイトペーパーがあります。

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パケットを監視する必要がありますそして、目的地からのものだけをフィルタリングします。

お役に立てば幸いです。

16
PlanetUnknown

PingにイーサネットまたはWiFiネットワークを介して送信されるパケットが含まれていると仮定すると、ARPは、アウトバウンドパケットを受信するデバイスのイーサネットハードウェアアドレスを見つけるために使用されます。通常、これは、pingを発信するマシンが存在するLANのルーターです。

一般的なプロセスは次のとおりです。

  1. 宛先にpingするコマンドを入力します。

  2. DNSは、IPアドレスを決定するために使用されます(必要な場合)。

  3. ルーティングテーブルは、その宛先への次のホップを見つけるために調べられます。

  4. ARPは、ネクストホップのハードウェアアドレスを見つけるために使用されます。

  5. IPパケットはネクストホップに送信され、イーサネットまたはWiFiフレームにカプセル化されます。

9
David Schwartz

Pingは実際には2つの異なるICMP(インターネット制御メッセージプロトコル)パケットです。

ホストにpingを送信するには、最初にICMPエコー要求パケットを送信すると、ホストはICMPエコー応答で応答します。

詳細については、次を参照してください: https://en.wikipedia.org/wiki/Ping_(networking_utility)

2
ServerMonkey

ARPはMACアドレスを提供しますが、DMACアドレスがない場合は、ブロードキャストアドレスが使用されます。

ブロードキャストDMACを使用するこのフレームは、ARPブロードキャストフレームと呼ばれ、DMACアドレスを取得します。

1
Sagar Vardekar

PingとARPは、ネットワークプロトコルスタックの異なるレイヤーに配置される異なるものです。

Pingはネットワークレイヤー(またはインターネットレイヤー ([〜#〜] icmp [〜#〜] @ServerMonkeyで指摘されているようなプロトコル)を見てください)。

Arpプロトコルはリンクレベル(下位レベル)にあります。 Arpプロトコルは、直接接続されているネットワークハードウェア間の物理的な接続を可能にするように設計されています。

TCP/IPネットワークスタックでは、すべてのレイヤーが下のレイヤーを使用してデータを転送し、低レベルのプロトコル内にカプセル化します。各レイヤーは、他のレイヤーから独立しており、他のレベルの特定の詳細や実装を認識していない可能性があります(これは常に当てはまるわけではありません: クロスレイヤー関数 を参照)。

1
Heisenbug