comment fonctionne vraiment la commande 'ping'?

24

Comment fonctionne vraiment la commande ping? Plus précisément, où ARP (Address Resolution Protocol) entre en scène?

On m'a posé cette question dans une interview et je n'ai pas pu trouver un scénario où l'ARP pourrait être utilisé.

liv2hak
la source
Regardez ICMP.
3
ARP est utilisé pour obtenir l'adresse MAC d'une adresse IP spécifique. Lorsque vous devez envoyer un paquet sur Ethernet, vous avez besoin de l'adresse MAC de la destination.

Réponses:

16

Si vous voulez vraiment comprendre, il y a un excellent livre blanc (très bien écrit) ici:

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

Voici le résumé ->

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

Puisqu'il n'y a pas de couche TCP entre les deux, le Ping (program)doit surveiller tous les paquets ICMP entrants et filtrer uniquement ceux de la destination.

J'espère que ça t'as aidé.

PlanetUnknown
la source
9

En supposant que le ping implique l'envoi d'un paquet sur un réseau Ethernet ou WiFi, ARP est utilisé pour trouver l'adresse matérielle Ethernet du périphérique qui reçoit le paquet sortant. Il s'agit généralement du routeur du réseau local sur lequel la machine à l'origine du ping est activée.

Le processus typique est:

  1. Vous entrez une commande pour envoyer une requête ping à une destination.

  2. DNS est utilisé pour déterminer l'adresse IP (si nécessaire).

  3. La table de routage est consultée pour trouver le prochain saut vers cette destination.

  4. ARP est utilisé pour trouver l'adresse matérielle du saut suivant.

  5. Le paquet IP est envoyé au saut suivant, encapsulé dans une trame Ethernet ou WiFi.

David Schwartz
la source
3
La seule réponse ici qui répond réellement à la question!
jmiserez
2

Ping est en fait deux paquets ICMP (Internet Control Message Protocol) différents.

Pour envoyer une requête ping à un hôte, vous envoyez d'abord un paquet de demande d'écho ICMP, l'hôte répondra ensuite par une réponse d'écho ICMP.

Pour plus d'informations, voir: https://en.wikipedia.org/wiki/Ping_(networking_utility)

Matthias Braun
la source
1

Ping et ARP sont des choses différentes situées à différentes couches de la pile de protocoles réseau.

Ping est à la couche réseau (ou à la couche Internet - Jetez un œil au protocole ICMP comme indiqué par @ServerMonkey).

Le protocole Arp est au niveau de la liaison (un niveau inférieur). Le protocole Arp est conçu pour permettre une connexion physique entre le matériel réseau, qui est directement connecté.

Dans la pile réseau TCP / IP, chaque couche utilise la couche ci-dessous pour transmettre ses données, les encapsulant dans le protocole de bas niveau. Chaque couche est indépendante de l'autre et ne connaît peut-être pas les détails et implémentations spécifiques des autres niveaux (ce n'est pas toujours vrai: voir la fonction inter-couches ).

Heisenbug
la source
oui, mais l'implémentation de ping nécessiterait du code sur L2 (couche de liaison.) L'ARP entre-t-il en jeu sur la couche 2.
@ liv2hak. non. L'implémentation de ping reposait sur la couche de liens ci-dessous.
@liv arp est souvent considéré comme la couche 2.5 ICMP est souvent considéré comme la couche 3.5 Les couches concernent davantage les champs que le code. Et si vous voulez dire que l'implémentation ping nécessite du code au niveau 2, eh bien, avec toute implémentation de quoi que ce soit, par définition, vous ne pouvez pas avoir de couche sans couches en dessous.
barlop
1

ARP fournit une adresse MAC, mais parfois s'il n'y a pas d'adresse DMAC, l'adresse de diffusion est utilisée.

Cette trame utilisant la diffusion DMAC est appelée trame de diffusion ARP, avec cela nous obtenons l'adresse DMAC.

Sagar Vardekar
la source