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, etdst 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 parip.addr==10.16.90.70
que vous ne voulez afficher que ce qui concerne 10.16.90.70 (consultez l’aide et les exemples)
Vous aurez peut être besoin de la documentation des filtres dans Wireshark :
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
.
Encapsulation #
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
ouip 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) outraceroute -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://www.whois.com/whois, mais vous pouvez rechercher
whois online
) pour rechercher un des routeurs situés vers la fin de la route.Recherchez aussi 194.254.43.242.
Dans les deux cas, mettez en valeur l’organisme ou la société propriétaire de l’adresse IP.
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… ?