Dans cet article, je vais partager avec vous quelques astuces que j’utilise dans Wireshark pour une visibilité meilleure que celle proposée avec le profile par défaut.

Avant de commencer, je vous propose d’ouvrir le logiciel Wireshark et d’ouvrir le fichier .pcap en cliquant sur ce lien : 

https://drive.google.com/file/d/1z6l4M14zNVYBxrU5gC8Mk3Vf9Xh-Cb6N/view?usp=sharing

Généralement, le profile par défaut nous présente les informations citées ci-dessous:

  • No : correspond au numéro du paquet dans la capture
  • Time : correspond au temps de capture du paquet, il existe en plusieurs format dans l’onglet View > Time Display Format
  • Source : L’adresse IP source du paquet
  • Destination : L’adresse IP de destination du paquet
  • Protocole utilisé
  • Length : la taille du paquet ou de la trame pour être plus précis
  • Info : contient quelques informations sur le paquet en question, le numéro de séquence et celui de l’acquittement pour en citer quelques uns.

Selon mon expérience personnelle, le profile par défaut est trop léger en termes de données affichées et ne nous facilite pas la tâche pour lire en clair tout ce qui se passe sous nos yeux surtout quand on souhaite suivre minutieusement une communication TCP ou calculer le temps aller-retour (RTT) entre le client et le serveur.

Premièrement, on va créer un nouveau profile en allant sur Edit > Configurations Profiles > puis (+) 

Une image contenant capture d’écran

Description générée automatiquement

Le mien je l’ai appelé MHD-Profile.

En cliquant sur le bouton OK, on est redirigé directement vers notre capture mais cette fois-ci dans le profile qu’on vient de créer.

Une image contenant capture d’écran

Description générée automatiquement

Maintenant, on va commencer la personnalisation de notre profile.

La première chose, je vais décaler à gauche les informations de chaque colonne pour soulager mes yeux et ne pas confondre les informations associées à chaque colonne.

Pour cela, un clic droit sur le nome de chaque colonne et puis « Align Left » 

Une image contenant capture d’écran

Description générée automatiquement

Maintenant je vais créer une nouvelle colonne à partir de la valeur Timestamps qui se trouve dans les données niveau 4 TCP/UDP de chaque paquet capturé, cette colonne que je vais appeler « Delta » va me permettre d’avoir plusieurs informations utiles pour la suite :

  • De quel côté la capture a été prise, côté client ou côté serveur
  • Le Round Trip Time (RTT) entre le client et le serveur (temps de transmission du paquet)

La capture ci-dessous, vous montre l’information que je souhaite récupérer et appliquer en tant que colonne, il faut juste faire un clic droit sur le paramètre « Time since previous frame in this TCP stream ».

Cette valeur représente le temps écoulé depuis le dernier paquet vu d’une transaction donnée.

Attention le Timestamp ici n’est pas un champ du segment TCP mais il est seulement récupéré par Wireshark à partir la librairie (libpcap) qui récupère elle aussi le Timestamp à partir du système Kernel.

Après l’avoir comme colonne, j’aime bien la renommer « Delta » et de le positionner à côté de la colonne « Time » donc si vous voulez faire pareil, cliquez droit sur la nouvelle colonne et puis « Edit Column », puis glissez la colonne à gauche à côté de la colonne « Time ». N’oubliez pas de l’aligner aussi les données de cette colonne à gauche.

Alors cette capture est prise côté Client ou côté Serveur ?

Une image contenant capture d’écran

Description générée automatiquement
  • Le premier paquet affiche une valeur Delta de 0, c’est normal car c’est le premier paquet capturé par Wireshark, c’est un paquet TCP SYN, Je peux distinguer l’adresse IP du client 192.168.1.100 et celle du serveur 172.16.100.100.
  • Le deuxième paquet qu’est le SYN,ACK envoyé par le serveur, sa valeur Delta est environ 38 ms.
  • Finalement le dernier paquet du TCP HANDSHAK et un ACK envoyé par le client vers le serveur, sa valeur Delta est 0,17 microseconde.

Conclusion, la capture a été prise côté client car le SYN/ACK envoyé par le serveur a été capturé par le Wireshark 38 ms après l’envoi du SYN et il fallait 0,17 microseconde à Wireshark pour recevoir le dernier ACK. 0,17 microsecondes, n’a qu’une signification, la capture a été prise directement sur la machine du client. Par conséquence 38ms est le RTT entre le client et le serveur.

Quelle sont les autres colonnes que j’utilise dans mon profile ?

Ça dépend de ce que je veux analyser, ci-dessous une liste non exhaustive des paramètres qui définissent les colonnes que j’affiche pendant la lecture d’une capture Wireshark : 

  • Est-ce qu’il s’agit d’un problème ou si juste pour savoir le mode de fonctionnement d’une machine
  • Est-ce qu’il s’agit d’une analyse du protocole TCP ou UDP
  • Est-ce que c’est un problème de communication ou de performance

Dans 80% des cas , j’utilise Wireshark pour des problèmes de performances applicatives basée sur le protocole TCP, donc mon profile par défaut contient les colonnes suivantes :

  • Sequence Number : le numéro de séquence du segment TCP, 
  • Next Sequence Number : le prochain numéro de séquence, ce n’est pas un champ du segment TCP mais plutôt rajouté par Wireshark pour prédire le prochain numéro de segment prévu, il est égal à (Seq Number + la taille du paquet TCP+ 1) 
  • Ack Number : le numéro d’acquittement du segment TCP

Pour afficher ces trois champs il faut impérativement avoir un paquet TCP dans votre capture car ses informations ne se trouvent pas dans paquet UDP, il faut aller dans le champ TCP et faire un clic droit sur chaque champ puis l’ajouter comme colonne. (comme ce qui a été fait précédemment pour le champs Delta).

N’oubliez pas d’aligner à gauche les valeurs de chaque colonne et les renommer si vous le souhaitez. 

Après l’ajout de ses trois colonnes mon profile ressemble à ça :  

Une image contenant capture d’écran

Description générée automatiquement

Ses trois colonnes me permettent de suivre plus facilement la communication TCP et détecter les paquets perdus sans besoin d’aller vérifier les détails de chaque paquet. 

Le suivi se fait en regardant le numéro de séquence (Seq) ainsi que le prochain numéro de séquence (NxtSeq) du paquet, il faut ensuite trouver la valeur du NxtSeq dans les numéro de séquence (Seq) des paquets suivants, la capture ci dessous résume la démarche à suivre :

Une image contenant capture d’écran

Description générée automatiquement

Wireshark est un outil très puissant d’analyse réseau, il deviendra votre compagnon incontournable dans votre vie d’ingénieur réseau, en revanche comme n’importe quel outil gratuit, il faut savoir comment le manipuler. On va essayer de partager prochainement d’autres articles sur l’approche qu’on avait suivie pour résoudre des problèmes rencontrés dans notre vie quotidienne.

Si vous avez des questions, des remarques ou vous avez besoin d’un complément d’informations, n’hésitez pas à laisser un message en commentaire de la page ou nous contacter directement à l’adresse : contact@mhd-experts.com.

Author

Driss JABBAR Un Architect réseaux avec plus de 10 ans d'expérience dans la conception et l'implémentation des architectures complexes LAN/WAN/DC. Pendant son parcours professionnelle, Driss a travaillé chez des intégrateurs et aussi des opérateurs. Driss possède actuellement trois certifications d'expertise Cisco CCIE RS & SP et CCDE. En dehors du travail, Driss consacre plus de temps pour sa famille mais il réserve toujours un petit créneau pour apprendre des nouvelles technologies ou pour regarder un match de foot de son club préféré. Driss est contributeur du blog MHD et joignable à l’adresse : driss.jabbar@mhd-experts.com

Write A Comment