Outils pour utilisateurs

Outils du site


À travers les couches

Réseau localPour fixer les idées, voyons sur un cas archi simple comment va se passer un dialogue entre deux nœuds d'un même réseau à travers l'application telnet1)

192.168.60.47 sera le client telnet et donc 192.168.60.127 sera le serveur. Le client va dans un premier temps initier une connexion avec le serveur.

Au moyen d'un «sniffeur», un outil qui permet d'espionner ce qu'il se passe sur un réseau Ethernet ou du moins sur une partie, nous allons mettre en évidence ce qu'il se passe à chaque couche de la pile, aussi bien d'un côté que de l'autre. L'analyse de ce que l'on récupère n'étant pas du tout évidente, nous nous contenterons ici de l'interprétation succincte qui va suivre.

Le client ouvre le dialogue avec la commande:

telnet 192.168.60.127

L'objectif étant ici de mettre en évidence le travail de chaque couche lorsque des données vont circuler, nous passerons sous un silence relatif les 3 premières trames capturées:

No.  source                destination           protocole    info
  1  192.168.60.47         192.168.60.127        TCP          [SYN]
  2  192.168.60.127        192.168.60.47         TCP          [SYN, ACK]
  3  192.168.60.47         192.168.60.127        TCP          [ACK]
Elles nous apprennent que le protocole de telnet nécessite un transport de type TCP.

  1. Le client commence par demander au serveur s'il peut écouter (tab SYN2)).
  2. Ici, le serveur est d'accord (tag SYN) et TCP signale qu'il a bien compris la demande (tag ACK3))
  3. Si le serveur est d'accord, alors le client également. Ce qui veut dire que la connexion TCP est établie. Le dialogue va pouvoir commencer.

Suit alors tout un dialogue propre au protocole telnet qui va permettre au client d'afficher:

Trying 192.168.60.127...
Connected to 192.168.60.127.
Escape character is '^]'.

Linux 6.1.0-16-amd64 (bookworm.home.nain-t.net) (pts/0)

bookworm connexion :
qui va prendre 14 trames que l'on va s'empresser d'ignorer. Nous allons nous intéresser à la trame 18 qui contient l'affichage en jaune. C'est la trame 18 ici très largement expurgée d'informations que nous passons sous silence pour l'instant.

Frame 18: 
...
Ethernet II, Src: (52:54:00:7b:28:d0), Dst: (ae:2a:a7:dd:e6:07)
...
    Type: IPv4


Internet Protocol Version 4, Src: 192.168.60.127, Dst: 192.168.60.47
...
    Protocol: TCP (6)
...

Transmission Control Protocol, Src Port: 23, Dst Port: 38002...
    [TCP Segment Len: 103]
    ...
    Flags: 0x018 (PSH, ACK)
    ...
...

Telnet
...
    Data: \r\n
    Data: Linux 6.1.0-16-amd64 (bookworm.home.nain-t.net) (pts/0)\r\n
    Data: \r\n
Le sniffeur capture la trame au plus bas niveau (Ethernet) et la déshabille progressivement pour arriver jusqu'aux données transportées, c'est pourquoi dans le compte-rendu, nous observons d'abord ce qui est spécifique à la couche la plus basse.

Dans la couche d'Accès réseau en jaune, il faut noter que les adresses source et destination sont des adresses MAC. L'information remarquable est que la couche a connaissance du protocole internet utilisé: IPv4. Encore une fois, tout ceci est très simplifié et nous passons sous silence la façon dont les adresses MAC sont déduites des adresses IP. Ceci sera vu beaucoup plus tard avec le protocole ARP.

Dans la couche Internet en orange, ce sont les adresses IP qui sont indiquées et là encore l'information remarquable est qu la couche a connaissance du protocole supérieur, ici TCP. De plus nous comprenons ici explicitement que c'est le serveur qui envoie les données au client.

Dans la couche Transport en bleu apparaît principalement la notion de ports qui n'a pas encore été évoquée, mais qui le sera largement plus loin. Les autres informations sont là pour le contrôle de l'intégrité de la transmission, il n'est pas nécessaire pour l'instant d'en savoir d'avantage.

Enfin dans la couche Application nous trouvons une partie des données qui s'affichent sur le client:

Linux 6.1.0-16-amd64 (bookworm.home.nain-t.net) (pts/0)

Inutile de nous encombrer du reste. Voyons juste la trame 19:

No.    Source                Destination           Protocol  Info
 19    192.168.60.47         192.168.60.127        TCP       [ACK]

C'est le client qui accuse réception de la trame précédente.

Que se serait-il passé si 192.168.60.127 n'avait pas eu de serveur Telnet installé ?

Côté client:

telnet 192.168.60.127
Trying 192.168.60.127...
telnet: Unable to connect to remote host: Connexion refusée

Logique. et que voit le sniffeur?

No.  Source            Destination      Protocol     Info
1    192.168.60.47     192.168.60.127	TCP	     [SYN]
2    192.168.60.127    192.168.60.47    TCP          [RST, ACK]
Le flag RST (Reset) C'est le flag qui tue. Il indique que la connexion TCP est interrompue sans appel. Juste après une demande SYN, ceci veut dire que le serveur, ici telnet, n'est pas présent. Nous verrons plus tard que ceci est déduit du fait que le port 23 est fermé sur 192.168.60.127.

Notons qu'ici, nous ne sommes pas descendus au dessous de la couche «transport». Nous aurons l'occasion d'observer ce qu'il se passe plus bas plus tard.
1)
Telnet est un logiciel client/serveur qui permet dans une console texte du côté client d'ouvrir une session sur le serveur pour y exécuter des tâches diverses. Il n'y a aucune sécurité mise en œuvre dans ce protocole qu'il ne faut absolument pas utiliser en dehors d'un réseau dont on est certain de l'intégrité.
2)
Synchronize
3)
Acknowledge
À travers les couches: Dernière modification le: 03/10/2025 à 15:26 par prof