Wie funktioniert der Befehl 'ping' wirklich?

24

Wie funktioniert der Ping-Befehl wirklich? Wo genau kommt das ARP (Address Resolution Protocol) ins Bild?

Diese Frage wurde mir in einem Interview gestellt und ich konnte mir kein Szenario ausdenken, in dem ARP verwendet werden könnte.

liv2hak
quelle
Schauen Sie sich ICMP an.
3
ARP wird verwendet, um die MAC-Adresse einer bestimmten IP-Adresse abzurufen. Wenn Sie ein Paket über Ethernet senden müssen, benötigen Sie die MAC-Adresse des Ziels.

Antworten:

16

Wenn Sie wirklich verstehen wollen, gibt es hier ein exzellentes (sehr gut geschriebenes) Whitepaper:

http://images.globalknowledge.com/wwwimages/whitepaperpdf/WP_Mays_Ping.pdf

Hier ist die Zusammenfassung ->

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

Da es keine TCP-Schicht dazwischen gibt, Ping (program)muss der alle eingehenden ICMP-Pakete überwachen und nur die vom Ziel filtern.

Hoffentlich hilft das.

PlanetUnknown
quelle
9

Angenommen, der Ping beinhaltet, dass ein Paket über ein Ethernet- oder WiFi-Netzwerk gesendet wird, wird ARP verwendet, um die Ethernet-Hardwareadresse des Geräts zu ermitteln, das das ausgehende Paket empfängt. In der Regel ist dies der Router für das LAN, in dem sich der Computer befindet, von dem der Ping stammt.

Der typische Prozess ist:

  1. Sie geben einen Befehl zum Pingen eines Ziels ein.

  2. DNS wird verwendet, um die IP-Adresse zu ermitteln (falls erforderlich).

  3. Die Routing-Tabelle wird konsultiert, um den nächsten Sprung in Richtung dieses Ziels zu finden.

  4. ARP wird verwendet, um die Hardwareadresse des nächsten Hops zu ermitteln.

  5. Das IP-Paket wird in einem Ethernet- oder WiFi-Frame gekapselt an den nächsten Hop gesendet.

David Schwartz
quelle
3
Die einzige Antwort hier, die die Frage tatsächlich beantwortet!
Jmiserez
2

Ping besteht eigentlich aus zwei verschiedenen ICMP-Paketen (Internet Control Message Protocol).

Um einen Host zu pingen, senden Sie zuerst ein ICMP-Echo-Anforderungspaket. Der Host antwortet dann mit einer ICMP-Echo-Antwort.

Weitere Informationen finden Sie unter: https://en.wikipedia.org/wiki/Ping_(networking_utility)

Matthias Braun
quelle
1

Ping und ARP sind verschiedene Dinge, die sich auf verschiedenen Ebenen im Netzwerkprotokollstapel befinden.

Ping befindet sich auf Netzwerkebene (oder Internetebene - Sehen Sie sich das ICMP- Protokoll an, wie von @ServerMonkey beschrieben).

Das Arp-Protokoll befindet sich auf Verbindungsebene (eine niedrigere Ebene). Das Arp-Protokoll ermöglicht eine physische Verbindung zwischen Netzwerkhardware, die direkt verbunden ist.

Im TCP / IP-Netzwerkstapel verwendet jede Schicht die darunter liegende Schicht, um ihre Daten weiterzuleiten, und kapselt sie in das Protokoll auf niedriger Ebene. Jede Ebene ist unabhängig von der anderen und kennt möglicherweise die spezifischen Details und Implementierungen der anderen Ebenen nicht (dies ist nicht immer der Fall: siehe Cross-Layer-Funktion ).

Heisenbug
quelle
Ja, aber für die Ping-Implementierung ist Code auf L2 (Verbindungsschicht) erforderlich.
@ liv2hak. Nein. Die Ping-Implementierung lag auf der unteren Verbindungsebene.
@liv arp wird oft als Layer 2.5 bezeichnet. ICMP wird oft als Layer 3.5 bezeichnet. Bei Layern geht es mehr um Felder als um Code. Und wenn Sie sagen möchten, dass die Ping-Implementierung Code auf Schicht 2 erfordert, können Sie bei jeder Implementierung von etwas per Definition keine Schicht ohne Schichten darunter haben.
Barlop
1

ARP stellt eine MAC-Adresse bereit, aber manchmal wird die Broadcast-Adresse verwendet, wenn keine DMAC-Adresse vorhanden ist.

Dieser Frame, der Broadcast-DMAC verwendet, wird als ARP-Broadcast-Frame bezeichnet. Hiermit erhalten wir die DMAC-Adresse.

Sagar Vardekar
quelle