Aller au contenu principal

Ouverture de session

Nous supposons qu'au sein de chaque hôte il existe toujours un processus en cours d'exécution qui écoute les demandes d'ouverture de session. Nous appelons ce processus le journal, et il fait partie d'un réseau virtuel spécial dont le numéro d'utilisateur est zéro. Le journal est programmé pour écouter les appels sur la socket numéro 0. À la réception d'un appel, le journal la commute vers des sockets de numéro plus élevé (pair) et renvoie un appel vers la socket dont le numéro est inférieur d'une unité à la socket d'émission qui appelait à l'origine. De cette façon, le journal peut initier 127 conversations.

Pour illustrer, supposons qu'un utilisateur dont l'identification est X'010005' (numéro d'utilisateur 5 à UCLA) ouvre une session à UCLA, lance l'un de ses programmes, et que ce programme veuille démarrer un processus à SRI. Aucun processus, hormis le journal, n'est actuellement disposé à écouter notre utilisateur, il exécute donc

Init, <port> = 1, <AEN 1> = 7, <AEN 2> = 7,
<foreign socket> = 0

Son processus est bloqué, et le NCP d'UCLA envoie

RFC   <my socket 1> = X'0100050107',
<my socket 2> = X'0100050107',
<your socket> = X'000000200'

Le journal de SRI est averti lorsque ce message est reçu, car il a précédemment exécuté

Listen   <port> = 9, <AEN 1> = 0.

Le journal exécute alors

Accept   <AEN 2> = 88.

En réponse à l'Accept, le NCP de SRI envoie

RFC   <my socket 1> = X'0000000200'
<my socket 2> = X'0000000258'
<your socket> = X'0100050107'
<link> = 37

où la liaison a été choisie parmi l'ensemble des liaisons disponibles. Le journal de SRI exécute alors

Init     <port> = 10
<AEN 1> = 89, <AEN 2> = 89,
<foreign socket> = X'0100050106'

ce qui amène le NCP à envoyer

RFC   <my socket 1> = X'0000000259'
<my socket 2> = x'0000000259'
<your socket> = X'0100050106'

Le processus d'UCLA est débloqué et informé du succès de l'Init. Comme le journal de SRI établit toujours une connexion vers l'AEN inférieur d'une unité à celui auquel il vient d'être connecté, le processus d'UCLA exécute alors

Listen   <port> = 11
<AEN 1> = 6

et, une fois débloqué,

Accept   <AEN 2> = 6

Lorsque ces transactions sont terminées, le processus d'UCLA est doublement connecté au journal de SRI. Le journal interroge alors le processus d'UCLA et, s'il est satisfait, crée un nouveau processus à SRI. Ce nouveau processus sera étiqueté avec le numéro d'utilisateur X'010005', et les deux connexions seront commutées vers le nouveau processus. Dans ce cas, la commutation des connexions vers le nouveau processus correspond à ce que l'on appelle "transmettre la console" dans de nombreux systèmes à temps partagé.