TP Pile TCP/IP (1)

Pile TCP/IP (première partie) #

Dans la première partie de ce TP, nous proposons d’observer et de comprendre certains principes de fonctionnement d’un réseau TCP/IP. Nous verrons en particulier :

  • l’encapsulation des données et le modèle en couches
  • le routage et l’interconnexion des réseaux
  • le protocoles ARP
Certains faits nouveaux, dont je n’aurais pas eu connaissance, peuvent gêner le bon déroulement de ce TP. Si vous constatez que des manipulations ne fonctionnent pas ou plus, merci de me le signaler.
Afin de faciliter la correction de ce travail, merci d’indiquer clairement les numéros des questions dans votre compte-rendu.

Informations sur votre machine, utilisation de Wireshark #

Les commande ip addr, ipconfig /all, route print, route -n (choisissez selon votre OS) permettent d’avoir des informations sur vos connexions réseau.

Question 1-1 Ouvrez un terminal et faites afficher votre configuration réseau à l’aide des commandes précédentes. Fournissez une copie d’écran (qui doit contenir aussi votre adresse MAC) puis donnez votre adresse IP, votre masque de sous réseau ainsi que votre passerelle par défaut.

Nous allons utiliser un logiciel nommé Wireshark qui permet de capturer des trames réseau, et nous allons capturer des messages ICMP générés par le programme ping.

L’exemple qui suit a été obtenu en utilisant le programme ping. La machine source (1) a pour adresse 10.16.90.17 et la machine distante (2) pour adresse 10.16.90.70. Depuis la machine 1, nous pinguons la machine 2 : ping 10.16.90.70 nous utilisons le programme ping (couche application) dont le but est d’envoyer des messages ICMP (couche transport/internet) de type Echo Request. Lorsque la machine distante reçoit un tel message, elle doit y répondre en envoyant à son tour via le protocole ICMP des messages de type Echo Reply. Ceci permet par exemple de tester si la connexion est bonne entre deux machines, au moins au niveau de la couche internet.

Sur la machine 1, le logiciel Wireshark a été lancé, pendant le ping, et nous donne pour résultats :

Dans la partie du haut figurent les trames capturées (elles sont numérotées). Voici comment interprêter ces résultats : La trame 3 est issue de la machine source 10.16.90.17 vers la destination 10.16.90.70, elle utilise le protocole ICMP, et elle est de type Echo Request. La trame 4 est la réponse de la machine 10.16.90.70 à la machine 10.16.90.17. Les trames 5,6 puis 7,8 et 9,10 correspondent aux trois autres ping envoyés (pour un total de 4).

Vous allez reproduire cette manipulation.

Si vous êtes gênés par les pings des autres groupes, notez que dans la case Filtre de Wireshark, vous pouvez entrer un filtre pour les trames qui seront capturées. Par exemple : host 10.16.90.70 ne capturera que ce qui concerne 10.16.90.70, src 10.16.90.70 ne capturera que les trames pour lesquelles 10.16.90.70 est émetteur, et dst 10.16.90.70 ne capturera que les trames pour lesquelles 10.16.90.70 est récepteur. La syntaxe pour les filtres de capture est différente de celle des filtres d’affichage. Vous pouvez par exemple tout capturer puis ne filtrer que certaines trames à afficher. Vous indiquerez par ip.addr==10.16.90.70 que vous ne voulez afficher que ce qui concerne 10.16.90.70 (consultez l’aide et les exemples)

Question 1-2 Reproduisez cette manipulation. Pour cela :

  • Choisissez l’IP de la machine de votre réseau local que vous pinguerez (si vous ne savez pas quoi choisir, demandez)
  • «Pinguez» la machine cible et capturez les trames sur votre machine (vous pouvez utiliser des filtres)
  • Indiquez sur votre rapport votre IP, l’IP cible, une trame echo request et la trame echo reply correspondante (copie d’écran de Wireshark, montrant bien les trames en question).

Rappelez à quoi sert la commande ping.

Ecapsulation #

Contenu du message ICMP #

Question 2-1 Grâce à la capture de Wireshark, pour un message Echo Request, identifiez, dans la trame réseau, le ou les octets qui déterminent que le message est justement un Echo Request.

Question 2-2 À l’intérieur du message ICMP, on trouve plusieurs données : l’entête ICMP proprement dit, et les données qui sont produites par le programme ping, et qui se retrouvent encapsulées dans le message ICMP.

Donnez la liste des informations présentes dans le message ICMP, et indiquez si elles relèvent du programme ping ou font partie de l’entête ICMP.

Question 2-3 Demandez à l’encadrant à pouvoir intercepter des messages Echo Request provenant d’une machine sous Linux et capturez les trames. Voyez-vous un ou plusieurs moyens d’identifier si la machine émettant les messages Echo Request fonctionne sous Linux ou bien sous Windows ?

Encapsulation dans un datagramme IP #

Le message ICMP est ensuite encapsulé dans un datagramme IP.

Question 2-4 Faites apparaître, en surbrillance, sur une copie d’écran, les octets de l’en-tête IP ajouté au message ICMP.
Question 2-5 Quels sont les octets qui dans l’en tête IP, permettent de savoir que le message encapsulé est un message ICMP ?

Encapsulation dans une trame Ethernet #

Le datagramme IP est ensuite lui même encapsulé dans une trame Ethernet.

Question 2-6 Faites apparaître, en surbrillance, sur une copie d’écran, les octets de l’en-tête Ethernet ajouté au datagramme IP. Quelle est sa longueur en octets ?

Adresses MAC #

Question 3-1 Déduisez de l’analyse de l’entête Ethernet l’adresse MAC de votre machine et l’adresse MAC de la machine que vous avez pinguée. Présentez ces résultats de manière claire (votre IP - votre adresse MAC, l’adresse IP pinguée, l’adresse MAC de la machine pinguée)
Question 3-2 Les premiers octets d’une adresse MAC identifient le fabricant de la carte physique. Utilisez un site en ligne (recherchez par exemple mac vendors) et vérifier qu’il identifie correctement le fabricant des cartes.

Réponse au ping #

Question 4-1 Faites à nouveau une capture, contenant plusieurs Echo Request et les Echo Reply qui correspondent (donnez des copies d’écran)

Entre deux Echo Request successifs, quels sont les octets de la couche ICMP (on ne parle par d’IP ou d’Ethernet) qui varient.

Entre un Echo Request et l’Echo Reply qui lui correspond, quels sont les octets de la couche ICMP (on ne parle par d’IP ou d’Ethernet) qui restent identiques.

Voici le cheminement des informations entre les deux machines :

Parmi les informations qui s’affichent lors d’un ping figure le temps écoulé entre l’émission d’un Echo Request et la réception d’un Echo Reply (1 ms ou moins dans l’exemple qui suit).

Question 4-2 Sachant que les réponses n’arrivent pas forcément dans l’ordre d’émission des requêtes et sachant que sur une seule et même machine, on peut pinguer plusieurs fois et en même temps la même machine cible, comment pensez-vous que le délai entre émission et réception puisse être calculé ? Aidez-vous de ce que vous avez remarqué à la question précédente.

Principes du routage #

Nous venons de voir comment les informations transitaient d’une machine 1 vers une machine 2 directement connectées. Que se passe-t-il sur un réseau comme Internet ? Connaître l’adresse IP de la machine destination ne suffit sans doute pas pour la retrouver quelque part dans le monde. C’est là qu’intervient le routage.

Vous avez déjà obtenue l’IP et le masque de sous réseau de votre poste en début de TP.

Question 5-1 Redonnez l’IP et le masque. À partir de là, calculez les informations suivantes :

  • adresse de réseau ;
  • adresse de diffusion ;
  • plage d’adresses qui peut être utilisée par les machines du même sous-réseau que vous.

Un document annexe vous rappelle le principe du routage. Pour bien comprendre ce qui suit, vous êtes invité à consulter : Principe du routage

Question 5-2 En utilisant les commandes route print, route -n ou ip route, donnez la table de routage de votre machine et indiquez, parmi les lignes qui s’affichent :

  • la ligne correspondant à votre réseau local
  • la ligne indiquant la route par défaut

Quelle est l’adresse IP de votre passerelle par défaut ?

Question 5-3 Vous pouvez observer le trajet suivi par les paquets IP en utilisant le programme tracert -d (Windows) ou traceroute -n (Linux).

Essayez un traceroute vers une machine de votre réseau local 192.168.8X.XX puis vers une machine du campus, à l’extérieur de votre réseau local : 194.254.43.242. Expliquez les différences d’affichage entre les deux traceroute.

Question 5-4 Essayez un «traceroute» (et un ping) vers google.com ou bien protonmail.com. Le traceroute ne sera peut être pas complet.

Le service Whois permet d’obtenir des informations sur les personnes ou organismes qui ont réservé un bloc d’adresses IP. À partir de là, on peut avoir des informations probables sur la position géographique d’une adresse IP.

Question 5-5 Utilisez un service en ligne Whois (par exemple https://gsuite.tools/whois, mais il y en a d’autres) pour localiser quelques uns des routeurs que vous avez obtenus à la question précédente.

Recherchez aussi la localisation de 194.254.43.242.

Question 5-6 Vous avez bien compris le fonctionnement du routage et l’encapsulation ? Pinguez la machine 194.254.43.242 depuis votre poste et réalisez une capture avec Wireshark. Que pouvez-vous dire de l’adresse MAC de 194.254.43.242 ?

Protocole ARP #

Au niveau de la couche accès au réseau la correspondance entre l’adresse IP du premier routeur à joindre et son adresse MAC devait être effectuée. D’où provient cette information ? Il y a deux possibilités :

  • soit la machine émettrice connaît déjà l’adresse MAC de la destination car elle a déjà dialogué avec elle (elle la conserve dans un cache)
  • soit la machine émettrice ne la connaît pas. Dans ce cas, le protocole ARP (Address Request Protocol) est utilisé pour demander quelle adresse MAC correspond à une certaine IP.

Vous pouvez connaître la liste des adresses MAC que conserve votre machine dans son cache en utilisant la commande arp -a (Windows) ou arp -n (Linux).

Question 6-1 Donnez la liste des machines dans le cache ARP de votre machine. Pinguez une machine qui n’est pas actuellement dans votre cache (et qui est allumée….) et constatez son ajout dans le cache ARP (donnez-des copies d’écran montrant le contenu de votre cache ARP avant et après).

Pinguez la machine 10.16.81.1 (si le ping ne répond pas, prévenez l’encadrant). Pourquoi la machine 10.16.81.1 n’apparaît-elle pas dans le cache ARP de votre machine même si vous la pinguez ?

Question 6-2 Vous pouvez utiliser Wireshark pour ne capturer que le protocole ARP en entrant dans la case Filtre : arp Essayez et constatez le nombre de messages concernant ARP et leur provenance. Comment expliquez vous une telle affluence ? En particulier, vous voyez peut être des messages concernant d’autres salles, voire d’autres réseaux.
Question 6-3 Ce système de résolution des adresses MAC fait partie des principes utilisés à des fins malveillantes : Que se passe-t-il à votre avis si lorsque la machine A (son IP est A et son adresse MAC est a) veut communiquer avec la machine C (son IP est C et son adresse MAC est c) et qu’une certaine machine B (son IP est B et son adresse MAC est b) envoie sans cesse des paquets de type ARP Reply indiquant à A que la machine qui a l’ip C, c’est elle-même, avec l’adresse MAC b… ?