Qu'est ce qu'un port logiciel ?

Explication du modèle TCP/IP.

HTTP 80, SSH 22, FTP 20 et 21... les ports sont partout dès qu'on commence à toucher à l'informatique. Concrètement, qu'est ce que c'est ?

Selon leur fonction, les protocoles sont classés en couches. Les 2 modèles les plus connus sont OSI et TCP/IP. TCP/IP étant plus simple, nous allons nous en servir pour comprendre ce qu'est un port.

Le modèle TCP/IP

Il est fondé sur 4 couches :

  • 4 - Application : C'est la face cachée de ton logiciel. Les protocoles de cette couche sont les plus connus : HTTP, FTP, SMTP, POP3...
  • 3 - Transport : Gère la communication entre les processus : erreurs, multiplexage... Protocoles : TCP et UDP principalement.
  • 2- Réseau / Internet : C'est là qu'est créé le chemin permettant l'acheminement des données vers la destination. Ta machine ne connait pas l'intégralité du chemin que va parcourir un paquet. Il va être routé de proche en proche. Je connais quelqu'un, qui connait quelqu'un... Protocoles : IPv4, IPv6, ARP....
  • 1 - Liaison / Physique : Prépare l'envoi / la réception des trames, puis écrit / écoute le support physique. Protocoles : Ethernet, WiFi...

On parle de couches hautes pour désigner celles proches de l'utilisateur. Les couches basses sont, à l'inverse, celles proches du support physique.

L'encapsulation

Lors de l'émission d'une requête par une application, celle-ci doit traverser toutes les couches du haut vers le bas. Durant le trajet, les données subiront des modifications. Chaque couche rajoutera ce qu'elle voudra pour mieux exercer sa fonction, généralement des en-têtes. Ce principe s'appelle l'encapsulation. Lors de la réception les données parcourent le chemin inverse.

Et donc un port c'est...

Exemple : tu charges un site web dans ton navigateur. Tu es relié à ta box internet par un câble à paires torsadées.

  • 1 - Le navigateur demande au système d'envoyer une requête HTTP.
    Sortie : [requête HTTP]
  • 2 - La requête arrive dans TCP qui ajoute son en-tête.
    Sortie : [en-tête TCP][requête HTTP]
  • 3 - Le segment TCP arrive dans IP qui ajoute aussi son en-tête. Il contient entre autres ton adresse IP et celle du serveur du site.
    Sortie : [en-tête IP][en tête TCP][requête HTTP].
  • 4 - Le paquet IP arrive dans Ethernet qui ajoute un en-tête et un checksum de vérification d'erreurs. L'en-tête contient entre autres ton adresse MAC et celle de ta box.
    Sortie : [en-tête Ethernet][en-tête IP][en tête TCP][requête HTTP][checksum Ethernet].

Le serveur répond avec le contenu de la page à afficher. La réponse arrive jusqu'à ta machine.

Chaque couche va décapsuler ses données. Elle va notamment se demander à qui elle doit transmettre le flambeau après avoir fait son travail.

  • 1 - L'en-tête Ethernet contient un champs "type de protocole" : données pour IP.
  • 2 - L'en-tête IP contient un champs "protocole" : données pour TCP.
  • 3 - L'en-tête TCP contient un champs "port de destination" : données pour HTTP.

Un port n'est rien de plus que l'identifiant d'une application qui permet à TCP ou UDP de savoir à qui envoyer les données.

Les ports les plus connus sont : 20 et 21 : FTP, 22: SSH, 23 : Telnet, 25 : SMTP, 53 : DNS, 80 : HTTP, 8080 : HTTP alternatif, 110 : POP3, 115 : SFTP, 443 : HTTPS, 546 : DHCP, 3306 : MySQL.

Les ports en dessous de 1024 sont réservés et appelés "well known ports" (ports bien connus). Les autres sont libres d'utilisation. Par habitude, certains sont néanmoins utilisés pour des applications connues comme MySQL.