LightcodeSysadmin Open Source

Chapitre 9 : La couche transport

Le niveau message permet de découper les données en segment utilisable par les couches inférieures, notamment l’IP. Cela s’explique par le fait que la taille d’un paquet est limité, on ne peut donc pas envoyer des données de taille importante.

TCP

La connexion

Le protocole TCP est utilisé en mode connecté : l’émetteur de la trame doit demander une connexion au destinataire avant de pouvoir envoyer les données. Voici comment fonctionne une connexion TCP :

Une connexion TCP

TCP utilise une détection d’erreur appelée checksum qui permet de valider ou non le message envoyé. Cette valeur est calculée en se basant sur les différents champs TCP (y compris les données) ainsi que plusieurs autres champs “virtuels” (qui sont ajouté juste pour le calcul) comprenant notamment les adresses sources et de destination : cela permet de contrôler d’éventuelles erreurs de routage. TCP assure également la remise dans l’ordre des messages et l’acquittement des messages.

Les ports

Comme nous l’avons vu au chapitre 2, un port permet de séparer les connexions à l’intérieur du système d’exploitation. En effet, un programme peut demander l’écoute d’un port, mais un autre programme ne pourra pas l’écouter. Les principaux ports ont été normalisés de sorte à ce que le client sache à quel port il devra se connecter pour joindre le serveur. Le client utilisera un port au hasard pour se connecter.

Les ports inférieurs à 1024 sont attribués par l’IANA (un organisme qui se charge de distribuer certaines ressources comme les numéros d’AS, les blocs d’IP…). Voici quelques ports normalisés : FTP (21), SSH (22), SMTP (25), HTTP (80).

UDP

Comme l’IP, l’UDP est un protocole sans connexion, les messages sont donc envoyés plus rapidement. L’UDP ne fournit aucune garantit sur la réception des messages sauf le checksum dont le calcul est identique par rapport à TCP. Toutefois, ce protocole est assez facile à mettre en œuvre dans un programme. Ce protocole est aussi utilisé lorsque l’on souhaite émettre des messages rapidement et quand l’intégrité des messages n’est pas primordiale comme dans les jeux vidéo par exemple.

L’UDP fonctionne aussi avec des ports, voici deux exemples de services : DNS (53) et DHCP (67 pour le serveur, 68 pour le client).

Les sockets

Pour communiquer avec TCP ou UDP, un programme doit ouvrir une socket : le serveur l’ouvre en mode LISTEN et attend une connexion. Le client devra se connecter au port utilisé par le serveur. Il existe aussi des sockets de types RAW, qui permettent au programme de ne plus être limité par le choix TCP ou UDP mais peut écrire un autre protocole de transport par exemple.