Time To Live Les résultats du Ping de la section précédente montrent que quatre paquets ICMP ont été envoyés et quatre reçus. Ce résultat nous montre que l'hôte de destination est bien "vivant" au niveau ICMP mais ne nous donne aucune autre indication comme par exemple un serveur web est actif ou pas. Que signifie un résultat négatif? Regardons un exemple: C:\>ping www.openmaniak.com Envoi d'une requête 'ping' sur openmaniak.com [84.16.88.15] avec 32 octets de données : Show L'hôte www.openmaniak.com qui a l'adresse IP 84.16.88.15 n'a pas répondu au Ping. Il est intéressant de dire que la réponse négative ne signifie pas toujours que le destinataire n'est pas vivant (dans notre exemple, il est vivant et fait tourner un serveur web), le résultat signifie juste qu'il ne répond pas à la requête ICMP. Quelles peuvent être les raisons de cette "non-réponse"? De nombreuses raisons peuvent en être la cause. Le dessin ci-dessous résume les quatre raison les plus fréquentes.
Dans le premier cas, un pare-feu (firewall) externe bloque les requêtes ICMP. ICMP peut être utilisé comme premier pas en vue d'une attaque parce qu'il peut indiquer les hôtes actifs sur le réseau. Dans ce cas, le réseau derrière le pare-feu est caché du monde extérieur même s'il ne répond pas au Ping. Bloquer les messages ICMP est une des recommandations de base pour protéger un réseau. Le pare-feu externe est plus souvent utilisé pour sécuriser les réseaux professionnels parce qu'il coûte cher et requière des connaissances avancées pour le configurer correctement. Dans le deuxième cas, la station de travail possède un pare-feu (firewall) personnel qui bloque les messages ICMP. Un pare-feu personnel est recommandé pour les ordinateurs de maison pour les même raisons que celles décrites plus haut. Dans le troisième cas, la machine "pingée" n'est pas connectée au réseau IP, par exemple parce que le câble réseau est débranché. Le message echo_request sera détruit sur le dernier routeur ou équipement de niveau OSI 3 avant l'hôte distant. Dans le quatrième cas, l'hôte est éteint ou a sa carte réseau désactivée. Comme dans le cas précédent, le message echo_request est détruit sur le dernier routeur ou équipement de niveau OSI 3 avant l'hôte distant.
Une autre information précieuse fournie par la commande Ping est le temps pris par un paquet pour atteindre la destination et revenir. Cette mesure est appelée le RTT (Round Trip Time) ou temps de réponse (response time) et est affichée en millisecondes. Le temps de réponse ne doit pas être confondu avec la latence ou le délai qui sont le temps parcouru pas un paquet entre deux hôtes mais dans un sens. Le temps de réponse va évidemment affecter la performance des applications réseau. Des temps de réponses élevés vont menés à des performances faibles. Quand une application réseau est lente, un premier test basique pour dépanner est d'obtenir le temps de réponse entre le client et le serveur pour savoir si le réseau peut être la raison de la lenteur observée. Il est important de ne pas oublier une autre information liée au temps de réponse: la perte de paquet (packet loss). Un paquet est déclaré comme perdu si le message ICMP est détruit en chemin ou s'il retourne à l'expéditeur après le temps d'attente maximum (timeout) qui est de deux secondes par défaut. Les pertes de paquets vont mener à un taux élevé de retransmission TCP et donc à des applications réseau lentes ou interrompues. Dans un environnement local (LAN), il ne devrait pas y avoir la moindre perte de paquet. Le TTL ou Time-To-Live (Temps-de-Vie) nous donne une indication sur le nombre de routeurs entre la source et la destination. Le TTL est utilisé pour empêcher qu'un paquet IP ne tourne en boucle indéfiniment dans un réseau IP et ne mène à son effondrement. La valeur initiale du TTL d'un paquet IP est de 255 et est ensuite est décrémentée de 1 chaque fois que le paquet traverse un routeur. Quand la valeur la valeur de 1 est atteinte, le paquet est détruit par un routeur. La valeur TTL est contenue dans chaque paquet IP incluant les paquets ICMP. Le TTL donné par la commande Ping est en fait la valeur TTL d'un paquet de type echo_response. Par défaut, Windows va décroitre le TTL de 128 et Ubuntu Linux de 192. Regardons trois scénarois où A ping B. B est un routeur (cas 1), une machine Microsoft Windows (cas 2) et une machine Ubuntu Linux (cas 3). Le TTL est initialement de 255 et est diminué comme décrit ci-dessous. La section "ANALYSE DETAILLÉE" fournit des informations à propos de la localisation du TTL dans un paquet IP. Cas 1: Qaund A ping B, il reçoit un TTL de 251 parce que les paquets traversent 4 routeurs (-4). TTL=255-4=251.
ping B
Envoi d'une requête 'ping' sur B [1.1.1.1] avec 32 octets de données : Quand A ping B, il reçoit un TTL de 124 parce que les paquets traversent 3 routeurs (-3) et une machine Windows (-128). TTL=255-3-128=124.
ping B Envoi d'une requête 'ping' sur B [1.1.1.1] avec 32 octets de données : quand A ping B, il reçoit un TTL de 62 parce que les paquets traversent 3 routeurs (-3) et une machine Ubuntu (-192). TTL=255-3-192=60.
ping B Pinging B [1.1.1.1] avec 32 octets de données : Cette section fournit une analyse détaillée d'un paquet echo_request et d'un paquet echo_response. Le premier tableau est une copie d'écran d'une capture Wireshark et le second tableau une sortie texte de la même capture.
- La capture Wireshark (premier tableau en gris) montre les différentes couches OSI (Ethernet - IP - IMCP). A voir également, la section "Vue d'ensemble d'un paquet ICMP". - Le paquet a été reconnu comme ICMP dans la couche IP. - La couche ICMP est composée par une section en-tête (header) et une section donnée (data). - La section en-tête ICMP est composée par: le type, code, checksum, identifiant (identifier) et numéro de séquence (sequence number). - Le type ICMP a une valeur de 8 ce qui signifie que le paquet est un paquet echo_request. - La valeur du numéro de séquence (sequence number), ici 256, est utilisée pour faire correspondre les echo_requests aux réponses associées (echo_response). Le premier tableau est la capture d'écran Wireshark et le second est la capture Wireshark au format texte.
- La capture Wireshark (premier tableau en gris) montre les différentes couches OSI (Ethernet - IP - IMCP). A voir également, la section "Vue d'ensemble d'un paquet ICMP". - The TTL value of the echo_response packet is 251, this is also the TTL value displayed in the Ping tool. - Le paquet a été reconnu comme ICMP dans la couche IP. - La couche ICMP est composée par une section en-tête (header) et une section donnée (data). - La section en-tête ICMP est composée par: le type, code, checksum, identifiant (identifier) et numéro de séquence (sequence number). - Le type ICMP a une valeur de 0 ce qui signifie que le paquet est un paquet echo_response. - La valeur du numéro de séquence (sequence number), ici 256, est utilisée pour faire correspondre les echo_requests aux réponses associées (echo_response). Le fonctionnement de Ping est le même sous Windows ou Linux. Toutefois, il existe quelques petites différences dans l'utilisation et la présentation de la commande Ping. - Windows envoie quatre requêtes ICMP quand Linux envoie ces mêmes paquets indéfiniment. La commande "Cltr + C" interrompt l'envoie de paquet echo_request. - Le champ data (donnée) d'un paquet ICMP est de 56 bytes sous Linux et 32 sous Windows. Cela signifie que la longueur totale du paquet ICMP, incluant les en-têtes de 42 bytes, est de 98 bytes sous Linux et 74 sous Windows. Certains arguments peuvent être différents entre Linux et Windows. Par exemple, l'option "-l" est utilisée pour configurer la taille de paquet sous Windows tandis que sous Linux l'argument "-s" est utilisé pour la même fonction. Voir ci-dessous pour des détails complets à propos des arguments Windows et Linux. Linux affiche une autre valeur dans le résultat de la commande Ping qui est la déviation moyenne (mdev). Celle-ci est calculée avec les valeurs des temps de réponse. La déviation moyenne donne une indication à propos de la constance du temps de réponse. Autrement dit, une déviation moyenne basse signifiera que les valeurs des temps de réponse fournies par le Ping sont très similaires. c:/ping -h
#man ping
L'en-tête ICMP est composé par: - Le "Type" - Le "Code" - Le "Header checksum" - L' "ID" - La "Sequence" Ci-dessous, la structure du protocole ICMP dans un paquet.
Ci-dessous, quelques types de types ICMP.
Ping est également très fréquemment utilisé pour connaître l'adresse IP correspondant à un nom d'hôte et l'inverse. ping www.openmaniak.com Envoi d'une requête 'ping' sur www.openmaniak.com [84.16.88.15] avec 32 octets de données : L'hôte ne répond pas mais dans ce cas le résultat qui nous intéresse est l'adresse IP affichée dans le résultat du Ping. ping -a 84.16.88.15 Pinging imu138.infomaniak.ch [84.16.88.15] avec 32 octets de données : Le nom d'hôte associé à l'adresse IP 84.16.88.15 est imu138.infomaniak.ch. Quels sont les protocoles présents dans une trame ping ?Quels sont les protocoles présents dans une trame ping ? Vous devez trouver en principe 8 trames ICMP : 4 demandes d'echo (Echo Request) et les 4 réponses correspondantes (Echo Reply). Le programme ping répète par défaut 4 fois le test de connectivité pour limiter les aléas.
Quel est le nom du protocole qui permet d'envoyer des données Internet ?Pour gérer la transmission de données sur ce réseau de réseaux, deux protocoles sont utilisés et constituent le fondement d'Internet : IP, pour Internet Protocol, et TCP, pour Transfert Control Protocol.
Quelles sont les données envoyées lors d'un ping ?Ping utilise une requête ICMP Request et attend une réponse Reply. L'envoi est répété pour des fins statistiques : déterminer le taux de paquets perdus et le délai moyen de réponse.
|