9) Socket et programmation de réseau

Un guide technique pour la programmation de réseau, le cycle de vie des sockets et la communication client-serveur

Introduction à la programmation de réseau

Écrire du code capable de communiquer à travers un réseau d'ordinateurs nécessite l'utilisation d'interfaces standard définies Socket.

Qu'est-ce qu'un Socket

Un socket représente un point de terminaison de communication logique bidirectionnel, identifié de manière unique par l'union d'une adresse IP et d'un port TCP/UDP.

Il existe deux grandes familles de sockets basées sur les protocoles du niveau de transport sous-jacent.

Les Socket Stream s'appuient sur le protocole TCP pour assurer une transmission fiable, ordonnée et sans erreur.

Les Socket Datagram utilisent l'UDP pour transmettre des blocs de données individuels à la vitesse maximale possible, sans garantie de livraison.

Cycle de vie d'un serveur TCP

Pour établir une communication correcte, le serveur doit suivre une séquence précise d'appels de système (appel de système).

L'appel socket() initialise l'interface et en définit la famille d'adresses et le type de protocole.

L'appel bind() associe le socket créé à une adresse IP locale et à un numéro de port spécifique de la machine.

L'appel listen() place le serveur en mode d'écoute passive, prêt à recevoir des tentatives de connexion de la part des clients.

L'appel accept() est bloquant : il extrait la première demande de connexion en attente et crée un nouveau socket dédié au canal.

Grâce à read() et write() (ou recv() et send()), le serveur échange des messages avec le client avant de fermer la connexion avec close().

Le cycle de vie du client TCP

Le client suit un chemin beaucoup plus simple, en évitant les phases de bind et listen.

Après avoir appelé socket(), il invoque connect() pour demander activement l'ouverture du Three-Way Handshake TCP avec le serveur.

Une fois la connexion acceptée, il peut commencer à transmettre et à traiter les données jusqu'à la libération des ressources.

Conclusions

Maîtriser la programmation des sockets est indispensable pour comprendre comment les serveurs web et les microservices modernes sont mis en œuvre.

🔗 Ressources et Références

Wikipedia - Socket di rete Python - Socket Programming Tutorial GeeksforGeeks - Socket Programming in C/C++ Oracle - What is a Socket?