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


24

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

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


ICMPを調べてください。

3
ARPは、特定のIPアドレスのMACアドレスを取得するために使用されます。イーサネットでパケットを送信する必要がある場合、宛先のMACアドレスが必要です。

回答:


16

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

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)監視し、宛先からのパケットのみをフィルタリングする必要があります。

お役に立てば幸いです。


9

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

典型的なプロセスは次のとおりです。

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

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

  3. ルーティングテーブルを調べて、その宛先へのネクストホップを見つけます。

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

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


3
ここで実際に質問に答える唯一の答えです!
jmiserez


1

PingとARPは、ネットワークプロトコルスタックの異なる層にある異なるものです。

Pingはネットワーク層(またはインターネット層- @ServerMonkeyが指摘したようなICMPプロトコルをご覧ください)にあります。

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

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


はい。ただし、pingの実装にはL2(リンクレイヤー)でいくつかのコードが必要です。ARPはレイヤー2で機能します。

@ liv2hak。いや pingの実装は、下のリンク層にあります。

@liv arpはしばしばレイヤー2.5と言われますICMPはしばしばレイヤー3.5と言われますレイヤーはコードよりもフィールドに関するものです。そして、pingの実装にはレイヤー2のコードが必要であると言いたいのであれば、定義上、どんな実装でも、その下にレイヤーのないレイヤーを持つことはできません。
barlop

1

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.