Etude de cas: HTTP

Etude de cas: HTTP


Source: Jim Kurose, Keith Ross: Computer networking: A Top-Down Approach

L’objectif de ce TD est d’explorer le protocole HTTP et avoir un aperçu des principales caractéristiques des protocoles des couches inférieures.

1 HTTP: requêtes et réponses simples

Nous commençons notre exploration du protocole HTTP en téléchargeant un fichier HTML très simple et court et ne contenant pas d’objets intégrés, comme par exemple des images.

Procédez comme suit :

  1. Démarrez votre navigateur web.

  2. Démarrez Wireshark, mais sans commencer encore la capture de paquets.

  3. Saisissez http dans la fenêtre de spécification du filtre d’affichage, afin que seuls les messages HTTP capturés soient affichés plus tard dans la fenêtre de liste de paquets.

  4. Commencez la capture de paquets Wireshark.

  5. Cliquez sur l’URL suivant : lien vers la page HTML. Votre navigateur devrait afficher le fichier HTML très simple d’une ligne.

  6. Arrêtez la capture de paquets Wireshark.

Exercise

Exercise 1.1 Votre navigateur utilise-t-il la version 1.0, 1.1 ou 2 du protocole HTTP ? Quelle est la version de HTTP utilisée par le serveur ?

Exercise

Exercise 1.2 Quelles langues (le cas échéant) votre navigateur indique-t-il qu’il peut accepter sur le serveur ?

Exercise

Exercise 1.3 Quelle est l’adresse IP de votre ordinateur ? Quelle est l’adresse IP du serveur gaia.cs.umass.edu ?

Exercise

Exercise 1.4 Quel est le code d’état renvoyé par le serveur à votre navigateur ?

Exercise

Exercise 1.5 Quand le fichier HTML que vous récupérez a-t-il été modifié pour la dernière fois sur le serveur ?

Exercise

Exercise 1.6 Combien d’octets de contenu sont renvoyés à votre navigateur ?

2 HTTP: requêtes conditionnelles

La plupart des navigateurs Web mettent en cache les objets téléchargés (pages HTML, images.. ) et effectuent donc souvent une requête conditionnalle lors de la récupération d’un objet HTTP.

Activity

Assurez-vous que le cache de votre navigateur est vide. Cette page vous expliquera comment faire.

Procédez maintenant comme suit :

  • Assurez-vous que le cache de votre navigateur est vidé, comme indiqué ci-dessus.

  • Démarrez la capture des paquets dans Wireshark.

  • Cliquez sur ce lien. Votre navigateur doit afficher un fichier HTML très simple de cinq lignes.

  • Cliquez simplement sur le bouton “rafraîchir” de votre navigateur.

  • Arrêtez la capture de paquets Wireshark et saisissez http dans la fenêtre de spécification du filtre d’affichage.

Exercise

Exercise 2.1 Examinez le contenu de la première requête HTTP GET envoyée par votre navigateur au serveur. Voyez-vous une ligne “IF-MODIFIED-SINCE” dans la requête HTTP GET ?

Exercise

Exercise 2.2 Examinez le contenu de la réponse du serveur. Le serveur a-t-il explicitement renvoyé le contenu du fichier ? Comment pouvez-vous le savoir ?

Exercise

Exercise 2.3 Inspectez maintenant le contenu de la deuxième requête HTTP GET envoyée par votre navigateur au serveur. Voyez-vous une ligne “IF-MODIFIED-SINCE :” dans la requête HTTP GET ? Si oui, quelles informations suivent l’en-tête “IF-MODIFIED-SINCE :”?

Exercise

Exercise 2.4 Quel est le code d’état HTTP et la phrase renvoyée par le serveur en réponse à ce deuxième HTTP GET ? Le serveur a-t-il explicitement renvoyé le contenu du fichier ? Expliquez.

3 Récupération de documents longs

Dans nos exemples jusqu’à présent, les documents récupérés étaient des fichiers HTML simples et courts. Voyons maintenant ce qui se passe lorsque nous téléchargeons un long fichier HTML. Procédez comme suit :

  • Démarrez votre navigateur web et assurez-vous que le cache de votre navigateur a été vidé, comme nous l’avons vu plus haut.

  • Démarrez la capture de paquets Wireshark.

  • Cliquez sur ce lien. Votre navigateur devrait afficher l’assez longue Déclaration des droits des États-Unis.

  • Arrêtez la capture de paquets Wireshark.

Dans la fenêtre de listage des paquets, vous devriez voir votre message HTTP GET, suivi de plusieurs segments TCP.
Assurez-vous que le filtre d’affichage de Wireshark est désactivé pour que les segments TCP soient affichés dans la liste des paquets.

Exercise

Exercise 3.1 Pourquoi obtenez-vous autant de segments TCP ?

Exercise

Exercise 3.2 Combien de messages de requête HTTP GET votre navigateur a-t-il envoyés ? Quel numéro de paquet dans la trace contient le message GET pour la Déclaration des droits ?

Exercise

Exercise 3.3 Quel numéro de paquet dans la trace contient le code d’état et la phrase associés à la réponse à la requête HTTP GET ?

Exercise

Exercise 3.4 Quel est le code d’état et la phrase de la réponse ?

Exercise

Exercise 3.5 Combien de segments TCP contenant des données ont été nécessaires pour transporter la réponse HTTP unique et le texte de la Déclaration des droits ?

4 Documents HTML avec objets intégrés

Maintenant que nous avons vu comment Wireshark affiche le trafic de paquets capturés pour de gros fichiers HTML, nous pouvons examiner ce qui se passe lorsque votre navigateur télécharge un fichier avec des objets intégrés, c’est-à-dire un fichier qui inclut d’autres objets (dans l’exemple ci-dessous, des fichiers images) qui sont stockés sur un ou plusieurs autres serveurs.

  • Démarrez votre navigateur web, et assurez-vous que le cache de votre navigateur est vidé, comme indiqué ci-dessus.

  • Démarrez la capture de paquets Wireshark.

  • Cliquez sur ce lien. Votre navigateur doit afficher un court fichier HTML contenant deux images. Ces deux images sont référencées dans le fichier HTML de base.
    En d’autres termes, les images elles-mêmes ne sont pas contenues dans le fichier HTML, mais les URL des images sont contenues dans le fichier HTML téléchargé. Comme indiqué dans le manuel, votre navigateur devra récupérer ces logos sur les sites web indiqués.

  • Arrêtez la capture de paquets Wireshark.

Exercise

Exercise 4.1 Combien de requêtes HTTP GET votre navigateur a-t-il envoyées ? À quelles adresses Internet ces requêtes GET ont-elles été envoyées ?

Exercise

Exercise 4.2 Pouvez-vous dire si votre navigateur a téléchargé les deux images en série ou si elles ont été téléchargées en parallèle à partir des deux sites web ? Expliquez.

5 Authentification HTTP

Nous essayons maintenant de visiter un site web protégé par un mot de passe et examinons la séquence de messages HTTP échangés pour un tel site.

  • Assurez-vous que le cache de votre navigateur est vidé, comme indiqué ci-dessus, et fermez votre navigateur. Ensuite, redémarrez votre navigateur

  • Démarrez la capture de paquets dans Wireshark.

  • Cliquez sur ce lien.

  • Saisissez le nom d’utilisateur (wireshark-students) et le mot de passe (network) demandés dans la fenêtre contextuelle.

  • Arrêtez la capture de paquets Wireshark.

Exercise

Exercise 5.1 Quelle est la réponse du serveur (code d’état et phrase) au message HTTP GET initial de votre navigateur ?

Exercise

Exercise 5.2 Lorsque votre navigateur envoie le message HTTP GET pour la deuxième fois, quel nouveau champ est inclus dans le message HTTP GET ?

Le nom d’utilisateur (wireshark-students) et le mot de passe (network) que vous avez saisis sont encodés dans la chaîne de caractères d2lyZXNoYXJrLXN0dWRlbnRzOm5ldHdvcms= qui suit l’en-tête “Authorization : Basic” dans le message HTTP GET du client.
Bien qu’il puisse sembler que votre nom d’utilisateur et votre mot de passe soient cryptés, ils sont simplement encodés dans un format connu sous le nom de format Base64. Le nom d’utilisateur et le mot de passe ne sont pas cryptés !
D’ailleurs Wireshark décode la chaine dans le champs “Credentials”.