• 12 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 03/02/2020

Détaillez l’en-tête du protocole IP

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Détaillez l’encapsulation d’un paquet IP par la couche MAC

Au cours de la première partie, nous avons vu l’architecture en couches présente dans tous les objets connectés à Internet.

Au cours de la section précédente, nous avons étudié le fonctionnement des couches MAC, et en particulier Ethernet. Nous allons maintenant étudier IP, le protocole de niveau 3 au cœur d’Internet.

Avant d’aller dans les détails de ce protocole, étudions l’encapsulation d’IP dans Ethernet ; autrement dit, comment Ethernet transmet les paquets IP.

Dans la section précédente, nous avons vu que l’en-tête Ethernet contenait les adresses physiques des machines source et de la prochaine machine dans le réseau qui peut être soit un routeur, soit la machine destination si elle est sur le même réseau.

L’encapsulation d’IP dans Ethernet va donc nécessiter trois étapes :

  1. Tout d’abord, identifier les adresses physiques associées aux adresses IP source et destination.

  2. Indiquer dans le champ ‘Protocol’ d’Ethernet la valeur 0x800 pour préciser que la trame transporte un paquet IP.

  3. Recopier l’intégralité du paquet IP dans le champ Données de la trame Ethernet, éventuellement en ayant recours au mécanisme de fragmentation si la taille du paquet IP dépasse la valeur de la MTU. Nous verrons ce mécanisme ultérieurement.

Dans la prochaine section, nous allons étudier ensemble comment nous pouvons associer une adresse réseau à une adresse physique.

Découvrez comment passer d’une adresse réseau à une adresse physique avec le protocole ARP

Pour réaliser l’encapsulation d’IP dans Ethernet, en particulier pour identifier les adresses physiques qui doivent être associées aux adresses IP, un protocole spécifique est nécessaire : le protocole ARP, pour Address Resolution Protocol.

ARP est un protocole en deux étapes :

  1. Envoi d’une requête en broadcast sur le réseau Ethernet. Autrement dit, toutes les machines connectées à ce réseau recevront cette requête. La requête contient le couple adresse IP et adresse MAC de la machine source, ainsi que l’adresse IP dont l’adresse MAC est recherchée.

  2. Réponse de la machine correspondante par une réponse ARP. Il s’agit d’une transmission unicast dont la destination est la machine qui avait initié la requête ARP. La réponse contient l’adresse MAC et l’adresse IP de la machine.

Notez que :

  • en l’absence d’une réponse à une requête, la machine source va réémettre plusieurs fois sa requête ;

  • la réponse va être stockée de façon temporaire dans une mémoire locale à la machine source, que l’on appelle un cache. Ainsi, si un nouveau paquet doit être transmis vers la même machine, la correspondance entre adresse MAC et adresse IP sera déjà connue.

 Il est important de noter que la portée d’un protocole ARP est le lien local ; autrement dit, uniquement le réseau local où se situe la machine source.

Quand la machine destination est sur le même réseau local, c’est elle qui répond à la requête ARP. Quand la machine destination n’est pas sur le même réseau local, c’est le routeur qui peut acheminer le paquet qui va répondre. Cette information est connue grâce à la table de routage que nous verrons plus tard.

Nous allons maintenant basculer sur le fonctionnement d’IP.

Détaillez l’en-tête d’un paquet IP

Un datagramme IP est constitué de deux parties : l’en-tête et la partie Données.

L’en-tête est lié au fonctionnement du protocole Internet, tandis que la partie Données vient des encapsulations successives des couches supérieures. Classiquement, autrement dit sans option, l’en-tête IP fait 20 octets, tandis que la partie Données peut aller jusqu’à 64 kilooctets.

Étudions maintenant les différents champs de l’en-tête d’un paquet IP. Tout d’abord, notez que sa taille est un multiple de cinq mots de 32 bits.

  • Le premier champ, sur 4 bits, donne le numéro de version d’IP. 4 est la valeur par défaut.

  • Le deuxième champ, également encodé sur quatre bits, indique la longueur de l’en-tête en nombre de mots de 32 bits. Par défaut, c’est-à-dire sans option, ce champ prend la valeur 5.

  • Le champ TOS, pour Type of Service, a été conçu pour permettre un routage différencié suivant la qualité de service demandée comme, par exemple, diminuer le délai de bout en bout, augmenter le débit ou favoriser la fiabilité. Ce champ est peu utilisé aujourd’hui dans ce but.

  • Le champ TL, encodé sur 16 bits, indique la taille maximale du datagramme IP, ce qui permet à IP de pouvoir router des paquets jusqu’à 64 kilooctets.

  • Le champ ID, encodé sur 16 bits, est un identifiant unique généré par la source du paquet. Ce champ est utile pour détecter les paquets perdus, les paquets dupliqués ou encore la fragmentation que nous verrons ultérieurement.

  • Flags et FO : nous n’allons pas rentrer dans le détail de ces deux champs qui sont utilisés pour la fragmentation et le réassemblage des paquets IP. Nous reviendrons dessus au cours d’un chapitre ultérieur.

  • Le champ TTL, pour Time To Live, est utilisé pour borner la durée de vie d’un paquet. Souvent initialisé à la valeur 32 ou 64, ce champ est décrémenté à chaque traitement par routeur. Lorsque ce champ atteint la valeur zéro, le paquet sera détruit.

  • Le champ Protocol est utilisé pour la gestion de l’encapsulation et la désencapsulation. La valeur la plus commune est 6 pour indiquer que TCP est encapsulé. On trouve aussi 17 pour UDP ou 1 pour ICMP, protocole que nous étudierons dans la section suivante.

  • Le champ Header Checksum permet un contrôle sur l’en-tête du paquet IP. L’idée est de calculer un mot de 16 bits qui représente la somme binaire de l’ensemble des mots de 16 bits de l’en-tête suivi d’un complément à 1. Lorsqu’un routeur ou lorsque la destination reçoit le paquet, ce checksum est recalculé. Si une valeur différente est trouvée, le paquet est rejeté.

  • @Source et @Destination : ces deux champs, tous les deux sur 32 bits, indiquent respectivement l’adresse IP de la machine source et l’adresse IP de la machine destination. Bien évidemment, ces champs sont utilisés pour le routage des paquets.

  • Options et Padding : après les habituels 5 mots de 32 bits, des options peuvent être utilisées, comme le routage par la source, ou des mécanismes de sécurité. Si l’option fait moins de 32 bits, des bits de bourrage (padding, en anglais) sont rajoutés.

Définissez le protocole de contrôle ICMP

Si IP est le protocole de routage essentiel à Internet, ICMP est un protocole de contrôle associé à IP qui permet de notifier notamment des erreurs.

Les messages ICMP sont encapsulés dans des paquets IP et ils possèdent leur propre en-tête et leur propre champ Données optionnel.

Parmi tous les cas d’utilisation d’ICMP, nous allons nous attarder sur trois cas particuliers :

  • premier cas : le destinataire est inaccessible. Comme IP est un protocole non connecté, autrement dit, la source ne vérifie pas la disponibilité de la destination lors de l’envoi de paquets, il arrive que le destinataire ne puisse pas recevoir de paquet parce que la machine n’est pas accessible, ou bien que le port destination n’est pas disponible... Au total, il existe 16 raisons possibles. Le dernier routeur informe alors la machine source avec un paquet ICMP indiquant les causes de l’erreur. Notez que la machine source ne modifie pas dynamiquement sa configuration mais remonte l’erreur aux couches supérieures, en particulier la couche transport et la couche application. En outre, l’en-tête du paquet non livré est recopié dans la partie Données du message ICMP ;

  • deuxième cas : la destruction d'un paquet. Dans l’en-tête IP que nous avons vu dans la section précédente, nous avons vu le champ TTL, pour Time To Live. Ce champ permet de limiter la durée de vie d’un paquet dans le réseau car ce champ est décrémenté de 1 à chaque fois qu’il est traité par un routeur. Lorsque le champ atteint la valeur zéro, le paquet est détruit. Le routeur détruisant le paquet, crée alors un paquet IP dont l’adresse source est sa propre adresse, et l’adresse destination, l’adresse IP de la machine ayant envoyé le paquet détruit. Puis le routeur encapsule un paquet ICMP de type 11, qui indique que le paquet a été détruit car sa durée de vie a été atteinte. Dans le champ Données du paquet ICMP, le routeur recopie l’en-tête du paquet détruit.

  • troisième cas : la commande Ping. Enfin, le dernier cas d’utilisation d’ICMP que nous allons regarder permet de réaliser le test d’accessibilité. Ping est une commande présente sur la plupart des systèmes, en particulier de type Linux. Ping prend en paramètre une adresse IP destination et vérifie la disponibilité de la machine correspondante. Pour cela, la commande Ping envoie un message ICMP de type 8 (echo request). La machine recevant la requête répond avec un message ICMP echo reply. Outre la disponibilité de la machine distante, Ping permet de mesurer le temps aller-retour.

Nous venons de voir les éléments clefs d’IP et du protocole de contrôle ICMP. Maintenant, nous allons nous concentrer sur l’adressage, puis le routage IP.

Exemple de certificat de réussite
Exemple de certificat de réussite