Aller au contenu principal

II. Environnement

Nous supposons que l'hôte disposera d'un système d'exploitation à temps partagé dans lequel le processeur est partagé entre des processus.

Nous envisageons que chaque processus soit étiqueté par un numéro d'utilisateur. Il peut y avoir plus d'un processus ayant le même numéro d'utilisateur ; dans ce cas, ils doivent tous coopérer en ce qui concerne l'utilisation du réseau.

Nous envisageons que chaque processus contienne un ensemble de ports propres à ce processus. Ces ports servent aux entrées vers le processus ou aux sorties depuis celui-ci, en provenance ou à destination de fichiers, de périphériques ou d'autres processus.

Nous envisageons également qu'un processus ne soit pas mis en sommeil (c.-à-d. bloqué ou congédié) lorsqu'il tente un LISTEN ou un CONNECT. Il est au contraire informé lorsqu'une action est terminée. Bien entendu, un processus peut se congédier lui-même afin de n'être réveillé que par un événement externe.

Pour participer à une activité réseau, un processus attache un socket local à l'un de ses ports. Les sockets sont identifiés par un numéro d'utilisateur, un hôte et un AEN ; un socket est local à un processus si leurs numéros d'utilisateur concordent et s'ils se trouvent sur le même hôte. Ainsi, un processus n'a besoin de spécifier qu'un AEN lorsqu'il fait référence à un socket local.

Chaque port possède un état qui est modifié par les appels système et par des événements concurrents extérieurs au processus (par ex. une commande de « fermeture de connexion » provenant d'un hôte distant). Le processus peut consulter l'état d'un port à tout moment (via l'appel système STATUS).

Nous supposons une correspondance biunivoque entre ports et sockets.