En Une :

ARP et ICMP

IPv4 est aidé par deux protocoles pour la résolution d'adresses et le contrôle : ARP et ICMP. Cet article présente ces deux protocoles IPv4.

1. Introduction

1.1. ARP, ICMP, ICMPv6

IPv4 est aidé par deux protocoles pour la résolution d'adresses et le contrôle : ARP et ICMP.

En IPv6, c'est ICMPv6 qui remplit ces deux fonctions.

1.2. Protocoles de résolution d’adresses et de découverte du voisinage

  • Afin d’encapsuler un paquet IP dans une trame, l’hôte d’origine a besoin de connaître l’adresse physique (MAC) de la destination.
  • En IPv4, c’est le protocole ARP (Address Resolution Protocol) qui remplit cette fonction. Les hôtes IPv4 maintiennent une table de correspondance entre les adresses IPv4 à joindre et leur adresse physique (MAC). Cette table est appelée "cache ARP".
  • En IPv6, c’est le protocole ND (Neighbor Discovery), sous-protocole ICMPv6, qui reprend cette fonction. Les hôtes IPv6 maintiennent une table de correspondance entre les adresses IPv6 à joindre et leur adresse physique. Elle est appelée "table de voisinage".

Commandes utiles

  • Table ARP sous Windows et Linux
    • arp -a
  • Table de voisinage sous Linux
    • ip -6 neigh
  • Table de voisinage sous Windows
    • netsh interface ipv6 show neighbors

2. Résolution d’adresse ARP

La résolution d'adresse est utile dans les réseaux IPv4 pour obtenir l'adresse physique à laquelle une adresse IP correspond.

On peut obtenir le cache ARP sur un système avec la commande :

arp -a

Ce processus permet à l’hôte émetteur de trouver l’adresse de livraison physique du trafic.

Il permet à l’hôte d’encapsuler le trafic au niveau de la couche Accès Réseau (Liaison de données) en ajoutant l’adresse MAC du destinataire dans l'en-tête de la trame.

2.1. Address Resolution Protocol

ARP est le protocole de résolution d'adresse utilisé par IPv4.

  • Il est directement encapsulé par la couche 2.
  • Il est donc indépendant d'IP.
  • Il est formalisé par le RFC 826.

2.2. Résolution d'adresses en IPv4

Au moment de l'encapsulation d'un paquet IPv4 dans une trame Ethernet ou Wi-fi par exemple, l'hôte émetteur connaît d'avance l'adresse IP de destination. Mais comment peut-il connaître son adresse physique correspondante (l'adresse MAC de destination par exemple) afin de placer le trafic sur le support ?

Un hôte TCP/IP ne peut connaître l'adresse de destination sans qu'elle ne s'annonce elle-même de manière gratuite ou de manière sollicitée.

Dans le but de maintenir une correspondance entre des adresses IP à joindre et leur adresse physique de destination, les hôtes TCP/IP entretiennent une "table ARP" pour les adresses IPv4 et une "table de voisinage" pour les adresses IPv6.

ARP est un protocole indépendant d'IPv4 qui offre ce service de résolution d'adresses.

En IPv6, ce sont des paquets ICMPv6 appelés Neighbor Discovery (ND) qui sont utilisés selon un mode sensiblement différent. En IPv6, les fonctions d'informations et de contrôle (ICMPv6) ont été améliorées et renforcées.

La requête ARP émane en Broadcast et la réponse est envoyée en unicast. ND (IPv6) aura un fonctionnement similaire en utilisant une adresse Multicast spéciale en lieu et place du Broadcast.

http://www.cloudshark.org/captures/96a2bb5fe747?filter=arp

Ce trafic émane en broadcast et se termine en unicast.

2.3. Variantes ARP

  • ARP Probe
  • Gratuitous ARP : annonces sans état
  • Inverse ARP : obtenir l'IP à partir l'adresse L2 (Frame-Relay)
  • Reverse ARP : attribution d'adresse IP
  • Proxy ARP : mandataire ARP (routeur), fonction que l’on conseille de désactiver.

2.4. Processus ARP

2.5. Empoisonnement de cache ARP

3. ICMP

En IPv4, ICMP "aide" IP par des messages de contrôle et d'erreur.

Communément, il y a deux classes de messages ICMP :

  • Les messages d'erreur dont le type est de 0 à 127.
  • Les messages d'information dont le type est de 128 à 255.

Les différents types ICMP sont précisés par des codes.

3.1. Liste de messages ICMP

Voici une liste non exhaustive des types de messages ICMP :

Type Message
Type 0 réponse d'écho
Type 1 et 2 réservés
Type 3 destinataire inaccessible
Type 4 extinction de la source
Type 5 redirection
Type 8 écho
Type 11 temps dépassé
Type 12 en-tête erroné
Type 13 demande heure
Type 14 réponse heure
Type 15 demande adresse IP
Type 16 réponse adresse IP
Type 17 demande masque sous-réseau
Type 18 réponse masque sous-réseau

3.2. ICMP Types 8 Echo Request - 0 Echo Reply

Le programme ping qui permet entre autre de vérifier la connectivité, envoie un paquet ICMP Echo request (type 8 code 0), peut recevoir un paquet ICMP Echo Reply (type 0 code 0).

Capture de paquets ICMP à la suite de la commande >ping www.google.com : https://www.cloudshark.org/captures/f1b5fba6f83f

icmpv4_type8

3.3. ICMP Type 3 Destination Unreachable

Code Signification
0 Destination network unreachable
1 Destination host unreachable
2 Destination protocol unreachable
3 Destination port unreachable
4 Fragmentation required, and DF flag set
5 Source route failed
6 Destination network unknown
7 Destination host unknown
8 Source host isolated
9 Network administratively prohibited
10 Host administratively prohibited
11 Network unreachable for ToS
12 Host unreachable for ToS
13 Communication administratively prohibited
14 Host Precedence Violation
15 Precedence cutoff in effect

3.4. Type 11 Time exceeded

A la suite de la commande traceroute -m 1 www.google.com :

Capture : https://www.cloudshark.org/captures/f751ade6b3f1

icmpv4_type11

3.5. Conclusions

  • Quand du trafic TCP/IP doit être envoyé, l’hôte encapsule le trafic à destination de l’adresse MAC apprise par ARP.
  • Les ARP Reply peuvent être gratuits.
  • ICMP complète IPv4 en termes de contrôle et de messages d'erreurs.
Author image
Francois Goffinet est formateur Cisco Systems depuis 2002. Passionné des technologies des réseaux, de virtualisation et en nuage, Web et de cybersécurité souvent en Open Source ou Unix-Like, devops.