TP pile TCP/IP 2

Pile TCP/IP (seconde partie) #

Ports #

Certaines manips peuvent ne pas fonctionner correctement. Prévenez l’encadrant lorsque vous en êtes à cette partie du TP

Les numéros de port TCP permettent de cibler telle ou telle application sur une machine serveur. Ces numéros sont plus ou moins normalisés. Le port pour le web (HTTP) est 80, celui pour lire ses mails via POP3 est 110, celui pour envoyer des mails via SMTP est 25. La machine A lorsqu’elle communique via TCP pour lire une page web s’adressera au port 80 de la machine B. Sur la machine B, on dira que le serveur web écoute sur le port 80.

Sur une machine de type serveur, il y a donc en permanence des programmes (couche application) qui écoutent sur certains ports, en attendant les connexions. Par exemple, le programme Apache, qui est un serveur web écoute généralement le port 80, et postfix qui est un agent de transport de mail écoute le port 25.

Il y a de nombreux autres programmes qui tournent ainsi en permanence et écoutent certains ports, même sur des machines qui ne sont pas des serveurs. Pour connaître la correspondance entre un numéro de port et le service qui est généralement associé, on pourra consulter : http://www.iana.org/assignments/port-numbers.

Un programme qui permet, depuis une machine A de savoir quels sont les ports ouverts sur une machine B s’appelle un scanneur de ports. L’utilisation d’un tel logiciel est soumise à condition. En dehors d’exercices pédagogiques (!) seul l’administrateur d’un réseau peut scanner des ports, et uniquement ceux de ses propres machines.

Question 4-1 À l’aide de nmap (installé dans L:\reseaux\) déterminez quels sont les ports ouverts sur les postes :

  • 192.168.8X.X (choisissez un poste dans la salle)
  • 192.168.81.133
  • 192.168.81.3

Identifiez les fonctions associées à ces ports en utilisant le site web donné plus haut. Vérifiez, pour la machine 192.168.81.133 que les services qui tournent sont bien ceux que vous avez identifié. Quel service/fonctionnalité avez-vous découvert ?

Question 4-2

Il se peut que cette question ne fonctionne pas correctement

Il y a une imprimantes dans votre réseau. Les postes communiquent avec l’imprimante en se connectant généralement sur les ports printer spooler ou jetdirect. Recherchez à quels numéros correspondent ces services, puis repérez l’imprimante en recherchant ces ports ouverts.

Attention de ne pas faire un scan «sauvage» de tout le réseau. Demandez avant de lancer votre commande.

Question 4-3 Le programme PuTTY (installé dans L:\reseaux) permet de se connecter en ssh sur une machine distante: Essayez de vous connecter en ssh sur les machines suivantes :

  • 192.168.80.123
  • 192.168.81.133
  • 10.16.83.102

Qu’est ce qui marche/ne marche pas et pourquoi selon vous ?

Protocole HTTP #

Le protocole HTTP est celui utilisé sur le web. Il permet de récupérer le contenu d’URL. Une page Web ordinaire est un texte. Dans ce texte peuvent figurer des références à des images, des sons, des animations Flash, des applets Java… Dans un navigateur Web, entrez l’URL suivante : http://deptinfo-ensip.univ-poitiers.fr/demo/page2.html

La page qui apparaît contient texte et image. Vous pouvez voir ce qui a été réceptionné par votre navigateur en affichant le source de la page (du texte, balisé en HTML)

Question 5-1 À votre avis, combien de requêtes HTTP (GET) le navigateur a-t-il envoyé au serveur (et pour obtenir quoi ?) lors de l’affichage de la page http://deptinfo-ensip.univ-poitiers.fr/demo/page2.html pour la première fois ? Vous pouvez le déduire de la page ou le mesurer avec Wireshark. Attention toutefois à prendre en compte le fait que le navigateur a un cache.

Nous allons maintenant simuler un navigateur Web et nous mettre à la place d’un client HTTP. Le programme PuTTY (Windows) ou la commande telnet (Linux) permettent de se connecter en mode texte vers une machine distante. Connectez vous sur le port 80 de deptinfo-ensip.univ-poitiers.fr en utilisant telnet :

telnet deptinfo-ensip.univ-poitiers.fr 80

ou bien en utilisant Putty (mieux) (connexion : Raw, Close Windows on exit : never). Rien ne se passe… À présent entrez les lignes suivantes (sans fautes):

GET /demo/page2.html HTTP/1.0
Host: deptinfo-ensip.univ-poitiers.fr

puis validez deux fois… Le serveur Web répond et ce que vous voyez est bien le source de la page tel qu’il était dans le navigateur.

Question 5-2 Expliquez la ligne que vous avez entré : GET ...

Question 5-3 Comment faire pour récupérer, par le même principe, l’image qui figure dans la page ? Faites le et expliquez ce que vous obtenez. Quelle est la taille en octets de l’image que vous avez essayé de récupérer ?

Lorsque le serveur Web répond, il donne, en tout début de réponse, des informations supplémentaires (qu’on ne retrouve pas dans le source de la page et qui constituent le header HTTP).

Question 5-4 Quel logiciel (et en quelle version) est utilisé actuellement comme serveur Web sur deptinfo-ensip.univ-poitiers.fr.

Question 5-5 Essayez de déterminer le type de logiciel serveur qui sert les pages de http://www.univ-poitiers.fr et de http://ensip.univ-poitiers.fr

Question 5.6 Dans sa requête, votre navigateur transmet des informations sur sa nature. Quelles sont ces informations ? Donnez aussi une copie d’écran qui permet de vérifier ce que vous avancez.

Question 5.7 À présent, capturez les trames lorsque vous consultez la page : https://deptinfo-ensip.univ-poitiers.fr/ Quelles informations arrivez-vous à tirer de la capture de trame ? Expliquez.

Trames TCP #

Les premières applications que nous avons observées à bas niveau n’expédiaient qu’une seule trame… Qu’en est-il des applications réseau plus conviviales ? Ce qui suit a été obtenu de la façon suivante : Une première machine (10.16.90.70) utilise un navigateur Web pour regarder le contenu de la page (qui n’existe plus maintenant) http://wwwesip2.univ-poitiers.fr/accueil.php. Une autre machine, non loin de là, utilise Wireshark et capture toutes les trames dont la source ou la destination est 10.16.90.70 :

Nous avons capturé… 70 trames pour un simple affichage de page web…. En effet, une seule trame ne peut pas contenir toutes ces informations. C’est là qu’intervient le protocole TCP…. Le navigateur web (application) est basé sur le protocole HTTP (HyperText Transfert Protocol), lui même basé sur TCP (Transmission Control Protocol), lui même basé sur IP (Internet Protocol)… Le but de TCP est d’établir une connexion (TCP est un protocole orienté connexion) “courtoise” avec une machine distante, de découper les informations provenant du protocole supérieur en morceaux, qu’il donnera à IP pour qu’il les transmette. De plus, TCP vérifie que chaque morceau a été correctement transmis et reçu. Il s’occupe aussi de remettre les segments dans l’ordre lors d’une réception (en effet, les informations, étant transmises «par morceaux», peuvent ne pas suivre la même route et il se peut que leur ordre d’arrivée ne soit pas leur ordre de départ….).

Après avoir vidé le cache de votre navigateur, lancez Wireshark, réglez correctement les filtres et consultez la page suivante ; http://deptinfo-ensip.univ-poitiers.fr/demo/champernowne/index.html. Vous allez devoir analyser le résultat obtenu dans Wireshark.

Question 6-1 Repérez un three way handshake TCP, mettez le en surbrillance et donnez une copie d’écran. Durant cet échange, client et serveur synchronisent leurs numéros de séquence respectifs. Indiquez les numéros de séquence initiaux réels du client et du serveur. Faites en sorte qu’on puisse vérifier votre résultat à partir de copies d’écran que vous fournirez.

Question 6-2 Donnez une copie d’écran qui montre (surbrillance) la fin d’une connexion TCP. Il est possible que votre navigateur ne se déconnecte pas (au sens de TCP) après avoir fait des requêtes sur le serveur. Si c’est le cas, faites la requête manuellement (avec Putty) pour observer la déconnexion.

Résolution de noms #

Lorsque vous consultez une page sur deptinfo-ensip.univ-poitiers.fr avec un navigateur Web, les datagrammes IP émis ne contiennent pas le nom de la machine, mais son adresse IP.

Question 7-1 Quelle est l’adresse IP de deptinfo-ensip.univ-poitiers.fr ? Comment votre navigateur l’a-t-il obtenue ? Donnez des copies d’écran montrant ce mécanisme.

Vous pouvez voir le serveur DNS que votre machine utilise en entrant ipconfig /all (Windows) ou cat /etc/resolv.conf (Linux).

Notons que le protocole DNS fait partie de la couche application et qu’il n’est pas basé sur TCP comme HTTP, mais sur UDP. UDP a la même fonction que TCP mais ne s’occupe pas, en particulier, de vérifier que la transmission s’est faite correctement ou que tout ce qui a été envoyé a été reçu.

Question 7-2 Identifiez votre DNS par défaut (copie d’écran) et réalisez une capture d’une requête. Vous prendrez comme exemple une requete concernant www.google.fr. Analysez ensuite la reponse du DNS concernant www.google.fr. www.google.fr a-t-il d’autres noms ? Il semble avoir plusieurs adresses IP… Essayez de pinguer www.google.fr plusieurs fois. Que constatez vous ? Expliquez.

Bonus #

Question 8-1 Indiquez à l’encadrant que vous en êtes à la question Bonus. Essayez de consulter quelques pages Webs, puis déterminez pourquoi votre machine ne fonctionne plus correctement.

Archives #

Putty #

Pour scanner les ports de nos machines, vous devrez vous connecter sur une machine Linux (192.168.81.21 en SSH) en utilisant le logiciel PuTTY. Puis vous vous connecterez à la machine Linux (les identifiants (username et password) vous seront données en TP) et utiliserez le logiciel nmap.

Lorsque vous êtes dans la fenêtre de terminal de Putty (la fenêtre noire), vous pouvez, sous Windows, y copier ce qui est dans le presse-papier. Pour cela, il suffit de cliquer sur le bouton droit de la souris.