1. Objectifs

L’objectif de ce TP est de découvrir le protocole TCP à travers l’analyse de traces TCP.  

Cet énoncé vous guidera en indiquant des points spécifiques à observer, et en vous posant des questions destinées à approfondir votre compréhension. 

La matière couverte par ce TP sera ou a été revue et synthétisée au cours théorique correspondant.  

Vous aborderez TCP à travers 4 étapes : 

  1. Découverte de l’en-tête TCP (20 min) : Observation des champs de l’en-tête dans des trames TCP et recherche de leur usage.  
  2. Questions sur l’en-tête TCP (25 min) : Découverte, à travers des questions sur les champs d’en-tête, des mécanismes mis en place dans le protocole TCP pour garantir le service transport fiable, en flux d’octet et orienté-connexion
  3. Le Payload TCP (15 min) : Cette étape permet de voir les relations entre l’en-tête et le contenu d’un segment TCP et de découvrir les outils Wireshark permettant d’observer ce contenu. 
  4. Ouverture et fermeture de connexion TCP (15 min) : TCP étant orienté connexion, il présente des mécanismes permettant la négociation de l’établissement de la session ainsi que sa terminaison.  Ces deux étapes jouent un rôle très important dans la compréhension du protocole et de ses interactions avec les applications et autres appareils tels que les NAT ou firewall.  

A la fin de ce TP, vous devrez : 

  • Pouvoir expliquer en quelques mots le rôle de chaque champ de l’en-tête TCP
  • Etre capable d’isoler une connexion TCP donnée et en montrer le contenu et les spécificités

    2. Découverte de l’en-tête TCP

Durée indicative en séance : 20 minutes

Commencez par capturer une trace réseau avec du contenu TCP : 

  • Démarrez Wireshark et lancez une capture
  • Ouvrez un navigateur et naviguez sur plusieurs sites
  • Fermez votre navigateur
  • Arrêtez la capture Wireshark. 

Commencez par sélectionner une première trame contenant du TCP, et examinez-en les champs TCP.   Cette trame vous servira de point de départ, mais n’hésitez pas à examiner d’autres trames pour confirmer vos réponses.  

Pour chaque champ ou flag : 

  1. Quel est son nom?
  2. Sur combien de bits est-il encodé? 
  3. Donnez quelques exemples de valeur pour ce champ
  4. Faites une hypothèse sur son usage
  5. Validez/invalidez cette hypothèse par une courte recherche Web
  6. Reformulez en deux lignes la signification et l’usage de ce champ

3. Questions sur l’en-tête TCP

Durée indicative en séance : 25 minutes

Après avoir passé en revue les champs de l’en-tête TCP, voici une série de questions destinée à approfondir votre compréhension de l’utilité de chaque champ.  Répondez à ces questions autant que possible en analysant votre trace Wireshark, en utilisant le web comme ressource complémentaire dans un second temps.  

  1. Quelle est la longueur de l’en-tête TCP?  Cette taille peut-elle varier? 
  2. Certains numéros de ports utilisés ont-il un usage particulier?  
  3. Il existe trois catégories de numéros de ports.  Expliquez.  
  4. Que représente le numéro de séquence? Comment est-il incrémenté entre deux segments d’une même connexion? 
    • Attention : dans ses préférences, Wireshark a une option “numéros de séquence relatifs”.  En quoi consiste-t’elle?  Activez ou désactivez-la pour observer la différence.  
  5. Que représente le champ “Acknowledgement Number”?  Quel est le lien avec : 
    • Le champ “Sequence number” (d’un autre segment à déterminer)
    • Le flag ACK (du même segment)
  6. Quels sont les liens entre : 
    • Les champs WINDOW annoncés par chaque intervenant
    • Le débit de la connexion TCP 7 . Le champ WINDOW peut-il varier au cours d’une même connexion TCP?

4. Le payload TCP

Durée indicative en séance : 15 minutes

Nous allons à présent nous focaliser sur le contenu échangé lors d’une connexion TCP.  

  1. Sélectionnez quelques trames contenant du TCP, et pour chacune, faites les relevés ci-dessous, et voyez si vous pouvez tirer des conclusions :  
    • La taille du payload TCP
    • La taille de l’en-tête TCP
    • La taille du segment TCP.  
  2. Sur base de vos captures, listez les types de contenus véhiculés dans vos connexions TCP.  Pourquoi ces applications utilisent-elles TCP? 
  3. Dans quel sens sont échangées les données lors d’une connexion TCP?  
  4. Vous pouvez reconstituer tout le contenu applicatif d’une connexion TCP grâce à l’option “Analyse => Follow => TCP Stream”.  Pour tester cette option, redémarrez une nouvelle capture, puis ouvrez un navigateur et visitez le site “http://www.enseignement.be/” (ou tout autre site qui n’est pas sécurisé en HTTPS).  Fermez le navigateur avant de stopper cette nouvelle capture.  Que voyez-vous une fois affiché le flux TCP correspondant à cette page web?  A votre avis, comment Wireshark procède-t’il pour sélectionner ces paquets?  Proposez un filtre qui donne le même résultat.

5. Ouverture et fermeture de connexion TCP

Durée indicative en séance : 15 minutes

  1. Sur la trace précédente, quels sont les flags des premiers segments échangés?  Essayez de retrouver ce “pattern” dans d’autres connexions TCP. 
  2. Sur ces 3 messages, quels flags sont utilisés par l’initiateur de la connexion?  Et par le destinataire? Pourquoi? 
  3. Quelles sont les valeurs des numéros de séquence et des numéros d’acquis de ces messages initiaux? (faites attention aux numéros relatifs de Wireshark)
  4. Mêmes questions pour les segments de fin de connexion.  Il existe deux types de fermeture, les voyez-vous dans vos traces?  Dans chaque cas, quels flags sont impliqués?