Internet Control Message Protocol.

Besoin

Protocole réseau standard pour l'échange de documents sur le Web (pages HTML)

Conception

ICMP est basé sur IP (encapsulé dans les datagrammes IP).

Transport
ICMP
Réseau

Un segment ICMP contient :

Section Octet
Contenu
Commentaire
En-tête 0 Type
  • 0 : Réponse écho
  • 3 : Destination injoignable (impossible de router le datagramme, par exemple parce qu'il n'y a pas d'entrée dans la table de routage)
  • 4 : Source quench (réduire le débit car routeur engorgé)
  • 5 : Redirection
  • 8 : Demande d'écho
  • 11 : TTL expiré
  • 12 : Problème paramètre
  • 13 : Demande de timestamp
  • 14 : Réponse timestamp
  • 17 : Requête masque d'adresse
  • 18 : Réponse masque d'adresse
1 Code Sous-type
2-3 Somme de contrôle
4-7 En-tête du message d'origine
8- Message d'origine

Exemples

La commande ping effectue une demande d'écho ICMP :

ping rr0.org

Envoi d'une requête 'ping' sur rr0.org [80.67.173.5] avec 32 octets de données :
Réponse de 80.67.173.5 : octets=32 temps=30 ms TTL=248
Réponse de 80.67.173.5 : octets=32 temps=10 ms TTL=248
Réponse de 80.67.173.5 : octets=32 temps=30 ms TTL=248
Réponse de 80.67.173.5 : octets=32 temps=10 ms TTL=248
Statistiques Ping pour 80.67.173.5:
Paquets : envoyés = 4, reçus = 4, perdus = 0 (perte 0%),
Durée approximative des boucles en millisecondes :
minimum = 10ms, maximum = 30ms, moyenne = 20ms

Le programme traceroute trace le chemin suivi par un datagramme en envoyant des paquets avec des TTL croissants permettant d'atteindre successivement tous les routeurs sur un chemin donné (à chaque étape le routeur renvoie un message ICMP "TTL expiré" donnant ainsi indirectement son adresse) :

tracert rr0.org

Détermination de l'itinéraire vers rr0.org [80.67.173.5] avec un maximum de 30 sauts :
1 30 ms 20 ms 20 ms gw.net195-132-178.noos.fr [195.132.178.1]
2 10 ms <10 ms 10 ms verrazzano-if2-vl26.noos.net [212.198.1.2]
3 <10 ms 10 ms 20 ms cartier-pc1-26.noos.net [212.198.1.6]
4 10 ms 30 ms 10 ms blackburn-ge001.noos.net [195.132.16.76]
5 10 ms <10 ms 10 ms baffin-ge-120.noos.net [195.132.16.22]
6 10 ms <10 ms 10 ms gix-fe10.noos.net [195.132.16.190]
7 10 ms 10 ms 10 ms gie-gitoyen.sfinx.tm.fr [194.68.129.186]
8 10 ms 10 ms 10 ms voltaire-gw.gitoyen.net [80.67.160.34]
9 10 ms 10 ms 10 ms gandi-gw.gitoyen.net [80.67.168.6]
10 10 ms 10 ms <10 ms redir-www-telehouse2.gandi.net [80.67.173.5]
Itinéraire déterminé.

Caractéristiques

  • Connecté
    • passif (serveur) : Accepter et attendre les connexions ;
    • actif (client) : Contacter l'application distante et s'y connecter.
  • Fiable : contrôle des erreurs
    • Envoi d'accusés réception des paquets, optimisé par un système de "fenêtres" (envoi du paquet 11 quand réception de l'accusé 1 si fenêtre de taille 10 par exemple).
  • Garantie du séquencement
  • Circuit virtuel
  • Transferts bufferisés
  • Full duplex
  • Utilise la notion de port (16 bits) pour faire communiquer 2 applications sur des machines.

Limitations

  • Flux d'information non structuré

Références

  • Unix Network Programming de Richard Stevens (Addison-Wesley)
  • Internetworking with TCP/IP Vol. 1, 3ème Edition de Douglas Corner (Prentice Hall)
  • Internetworking with TCP/IP Vol. 3 de Douglas Corner (Prentice Hall)
  • TCP/IP Illustrated de Richard Stevens (Addison Wesley)