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 port4000
. -
Le programme client est exécuté sur l'hôte ayant l'adresse IP
192.0.2.30
.
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.
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.
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.
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.