8. Travaux pratiques : consulter une page Web (HTTP)

Protocoles & mécanismes d'adressage étudiés

  • Les adressages matériel (MAC ou Ethernet) et logique (IPv4 ou IPv6) servent à identifier les hôtes client et serveur pour chaque service utilisé.

  • La requête et les réponses du service de noms de domaines (DNS) permettent de faire la correspondance entre le nom et l'adresse IP du serveur consulté.

  • Le chargement de la page Web illustre le fonctionnement du protocole TCP avec les phases d'établissement, de maintien et de libération d'une connexion. On étudie aussi la notion de numéro de séquence utilisée pour l'acquittement des quantités d'octets transmises entre client et serveur.

  • Les requêtes et réponses HTTP illustrent dialogue entre le navigateur et le serveur Web au niveau application.

Marche à suivre pour réaliser une capture

  1. Lancer Wireshark.

  2. Lancer la capture des trames sans restrictions d'adresses, de protocoles ou de volume.

  3. Lancer un navigateur Web et saisir une adresse de site (URL) de votre choix.

  4. Une fois la page complètement chargée, arrêter la capture. Sauvegarder un fichier de capture.

  5. Passer aux questions de la section suivante.

Suivant le contexte d'accès à l'Internet, le volume d'information capturé varie énormément en fonction du raccordement à un réseau local filaire ou radio et à la variété des protocoles présents. Il est cependant préférable d'effectuer la première capture sans aucune restriction à priori de façon à avoir une image exacte du trafic. Si l'information utile est vraiment noyée dans du «bruit», il est toujours possible de reprendre la capture avec un filtre ; voir Section 4, « Capture d'une série de trame ».

À titre d'exemple, voici deux fichiers de capture qui contiennent tous les éléments nécessaires au traitement des questions suivantes.

Questions sur le chargement d'une page Web

Pour répondre aux questions suivantes, utiliser le résultat de la capture issue de l'étape précédente ou charger un fichier de capture.

Identifier les protocoles capturés

Q23.

Quelle est la liste des protocoles indiqués dans la colonne Protocol de la fenêtre de liste des trames capturées ?

Confirmer que la capture contient bien la séquences des protocoles DNS, TCP et HTTP.

Identifier les rôles à partir des adresses

Analyser la trame correspondant au premier message de requête DNS émis par le client Web.

Q24.

Quelles sont les adresses (MAC|Ethernet) et IP du client ?

Q25.

Quel est le contenu du champ type de la trame Ethernet ?

Q26.

Quelles sont les adresses destination (MAC|Ethernet) et IP ?

Q27.

À quelles machines correspondent ces adresses ?

Repérer les informations de l'en-tête IP

Analyser l'en-tête IP du premier message de requête DNS émis par le client Web.

Q28.

Quelle est la taille de l'en-tête ? Quelle est la longueur totale du paquet ?

Q29.

Repérer le champ «type de protocole» dans l'en-tête. Quel est le type de protocole de la couche transport présent dans les données du paquet ?

Repérer les informations de l'en-tête UDP

Analyser l'en-tête UDP du premier message DNS émis par le client Web.

Q30.

Quels sont les numéros de ports du client et du serveur ? Quelles sont les particularités de ces valeurs ? Quel est le protocole de couche application présent dans les données du message ?

Q31.

Quelle est la valeur indiquée dans le champ longueur de l'en-tête UDP ? Est-ce qu'elle correspond à l'information donnée dans l'en-tête du paquet IP ?

Reconnaître la requête posée par le client DNS

Analyser le message de requête DNS émis par le client Web.

Q32.

Quel est le champ qui indique si le message est une requête ou une réponse ?

Q33.

Quelle est l'information présente dans le corps de la requête ? Identifier le type et la classe de la requête.

Q34.

Quel est l'identificateur de transaction de la requête ?

Caractériser la réponse du serveur DNS

On considère maintenant la réponse à la requête précédente.

Q35.

Quelles sont les adresses (MAC|Ethernet) et IP de la réponse DNS ?

Vérifier que les adresses attendues sont présentes.

Q36.

Quel est le nombre d'octets contenus dans les données du paquet IP ? Pourquoi la quantité de données est-elle plus importante que celle du paquet de requête ?

Q37.

Quel est l'identificateur de transaction de la réponse ? Est-ce qu'il correspond à la requête ?

Q38.

Combien de réponses sont disponibles dans le message de réponse ? Quelle est la signification des valeurs TTL (Time-to-live) ?

Q39.

Pour synthétiser cette partie, faire un croquis des piles de protocoles des couches physique à application pour le client et le serveur DNS. Identifier les adresses, les numéros des protocoles présents dans les en-têtes et les unités de données (PDUs) bout en bout.

Caractériser l'établissement de la connexion TCP

Sur la fenêtre du haut de l'écran Wireshark, repérer la ligne qui correspond au premier segment TCP de l'établissement de connexion en trois étapes (three ways handshake) entre le client et le serveur HTTP.

Q40.

Quels sont les hôtes identifiés par les adresses MAC et IP de cette ligne de capture ? Quelles sont les valeurs des champs type et protocol respectivement attendues pour cette trame et ce paquet ?

Vérifier que ces champs et adresses correspondent au rôle de chacun des deux hôtes en communication.

Q41.

Quels sont les numéros de ports utilisés par le client et le serveur ? Quelle est la signification de ces deux valeurs ?

Q42.

Quel est le numéro de séquence choisi par le client ? Quelle est la taille maximale de segment (Maximum Segment Size ou MSS) proposée par le client ?

Q43.

Quelle est la signification de l'indicateur d'état SYN ?

Identifier la ligne de capture qui correspond au second segment TCP dans l'établissement de la connexion en trois étapes (three ways handshake).

Q44.

Quel est le numéro de séquence choisi par le serveur ? Quelle est la taille maximale de segment (Maximum Segment Size ou MSS) renvoyée par le serveur ?

Q45.

Quelle est la signification des indicateurs d'état SYN et ACK ?

Q46.

Pourquoi le numéro de séquence du client a-t-il été incrémenté à 1 ?

Identifier la ligne de capture qui correspond au dernier segment TCP dans dans l'établissement de la connexion.

Q47.

Quelle est la signification de l'indicateur d'état ACK ?

Q48.

Que peut-on conlure sur l'état de la connexion entre le client et le serveur HTTP à partir des deux numéros de séquence ?

Caractériser les éléments de la requête HTTP GET

Identifier la ligne de capture qui correspond au message HTTP GET.

Q49.

Quelles sont les valeurs des numéros de séquence et d'acquittement de l'en-tête TCP ?.

Vérifier que tout correspond aux valeurs attendues.

Q50.

Quels sont les indicateurs d'état actifs de l'en-tête TCP ? Expliquer pourquoi.

Q51.

Quelles sont les longueurs de l'en-tête et de la «charge» du message TCP ?

On considère maintenant le contenu du message HTTP GET.

Q52.

Comparer le texte décodé dans la fenêtre d'affichage de la pile de protocoles avec le contenu de la fenêtre d'affichage brut.

Q53.

Compter le nombre d'octets du message et vérifier que ce nombre correspond au champ longueur de l'en-tête TCP.

Q54.

Quel est le prochain numéro de séquence attendu dans le message suivant émis par le serveur HTTP ?

Caractériser les éléments de la réponse HTTP

Q55.

Déterminer si le serveur répond avec un message HTTP ou un segment TCP ACK ?

Q56.

Quel est le numéro de séquence émis par le serveur HTTP ? Est-ce qu'il correspond à la valeur attendue ?

On considère maintenant l'en-tête du message réponse HTTP.

Q57.

Quelle est la longueur de la «charge» indiquée dans l'en-tête TCP ?

Q58.

Quels sont les indicateurs d'état actifs de l'en-tête TCP ? Expliquer pourquoi.

Q59.

Quel est le prochain numéro de séquence attendu dans le message suivant émis par le client ?

On considère maintenant le corps du message réponse HTTP.

Q60.

Quel est le code dans le message de réponse ?

Q61.

Sélectionner ce code avec la souris dans la fenêtre d'affichage de la pile de protocoles et comparer avec ce qui est affiché sur la page du navigateur Web.

Cette opération revient à suivre la démarche présentée dans la la section intitulée « Isoler une connexion TCP ».