7. Analyse réseau avec Wireshark

L'analyse réseau présente un grand intérêt dans la validation des développements. Elle permet de contrôler le bon fonctionnement des communications suivant les jeux de protocoles utilisés. Ici, on peut différencier le fonctionnement des deux protocoles de la couche transport en analysant les échanges entre les deux programmes client et serveur.

L'utilisation de l'analyseur wireshark est présentée dans le support Introduction à l'analyse réseau avec Wireshark.

Les analyses présentées ci-après ont été réalisées dans les conditions suivantes :

  • Le programme serveur est exécuté sur l'hôte ayant l'adresse IP 192.0.2.1. Ce programme est toujours en écoute sur le port 4000.

  • Le programme client est exécuté sur l'hôte ayant l'adresse IP 192.0.2.30.

7.1. Analyse avec le protocole UDP

Avant de passer à l'analyse, voici les copies d'écran de l'exécution des programmes.

  • Côté serveur :

    $ ./udp-server.o
    Entrez le numéro de port utilisé en écoute (entre 1500 et 65000) :
    4000
    Attente de requête sur le port 4000
    >>  depuis 192.0.2.30:43648
      Message reçu : message de test UDP
    ^C
  • Côté client :

    $ ./udp-client.o
    Entrez le nom du serveur ou son adresse IP :
    192.0.2.1
    Entrez le numéro de port du serveur :
    4000
    
    Entrez quelques caractères au clavier.
    Le serveur les modifiera et les renverra.
    Pour sortir, entrez une ligne avec le caractère '.' uniquement.
    Si une ligne dépasse 100 caractères,
    seuls les 100 premiers caractères seront utilisés.
    
    Saisie du message : 
    message de test UDP
    Message traité : MESSAGE DE TEST UDP
    Saisie du message : 
    .

Dans la copie d'écran ci-dessous, on retrouve l'ensemble des éléments énoncés auparavant.

  • Chaîne de caractères traitée dans la partie données de la couche application.

  • Numéros de ports utilisés dans les en-têtes de la couche transport.

  • Adresses IP utilisées dans les en-têtes de la couche réseau.

Wireshark et protocole UDP

Enfin, le fait que la capture se limite à deux échanges illustre la principale caractéristique du protocole UDP : un service de datagramme non orienté connexion qui suppose un réseau sous-jacent fiable et sans erreur.

7.2. Analyse avec le protocole TCP

Comme dans le cas précédent, voici les copies d'écran de l'exécution des programmes avant de passer à l'analyse réseau.

  • Côté serveur :

    $ ./tcp-server.o
    Entrez le numéro de port utilisé en écoute (entre 1500 et 65000) : 
    4000
    Attente de connexion TCP sur le port 4000
    >>  connecté à 192.0.2.30:52060
      --  message de test TCP
      --  dernier message avant fermeture de la connexion
    Attente de connexion TCP sur le port 4000
    ^C
  • Côté client :

    $ ./tcp-client.o
    Entrez le nom du serveur ou son adresse IP :
    192.0.2.1
    Entrez le numéro de port du serveur :
    4000
    
    Entrez quelques caractères au clavier.
    Le serveur les modifiera et les renverra.
    Pour sortir, entrez une ligne avec le caractère '.' uniquement.
    Si une ligne dépasse 100 caractères,
    seuls les 100 premiers caractères seront utilisés.
    
    Saisie du message : 
    message de test TCP
    Message traité : MESSAGE DE TEST TCP
    Saisie du message : 
    dernier message avant fermeture de la connexion
    Message traité : DERNIER MESSAGE AVANT FERMETURE DE LA CONNEXION
    Saisie du message :
    .

Dans la copie d'écran ci-dessous, on retrouve l'ensemble des éléments déjà connus : chaîne de caractères traitée, numéros de port en couche transport et adresses IP en couche réseau.

Wireshark et protocole TCP

Cette copie d'écran se distingue de la précédente, par le nombre de trames capturées alors que le traitement effectué est quasiment le même. La capture réseau fait apparaître les phases d'établissement, de maintien et de libération d'une connexion. On illustre ainsi toutes les fonctions de fiabilisation apportées par le protocole TCP.

À partir de ces quelques trames, on peut reprendre l'analyse de la poignée de main à trois voies, de l'évolution des numéros de séquence et de l'évolution de la fenêtre d'acquittement.