Aller au contenu principal

Description générale

Dans notre vision du monde, chaque hôte dispose d'un ensemble de quatre programmes permettant à un télétype d'utilisateur de communiquer avec un moniteur étranger. L'implémentation exacte de ces programmes dépend fortement de chaque installation. Par conséquent, toutes les explications visent à décrire des caractéristiques fonctionnelles plutôt que la conception.

Ces quatre programmes vont par paires « mâle/femelle ». Un utilisateur emploie un logger d'émission sur son site pour communiquer avec un logger de réception sur le site étranger approprié, afin d'établir une liaison duplex intégral entre le télétype de l'utilisateur et le moniteur de la machine étrangère. Cela le place dans un état équivalent à celui d'une session déjà ouverte sur l'autre machine. Une fois la liaison établie, les deux loggers quittent la scène et l'utilisateur converse avec un émetteur de sa machine, dont la fonction principale est de prendre les entrées du télétype de l'utilisateur et de les envoyer sur la liaison établie par les loggers vers le récepteur de l'hôte étranger, qui les transmet à son moniteur (en les faisant apparaître comme des entrées provenant d'un télétype local). Les réponses du moniteur étranger sont remises par celui-ci au récepteur, qui les renvoie sur la liaison vers l'émetteur, lequel les affiche sur le télétype de l'utilisateur. L'émetteur et le récepteur de chaque machine doivent soit exister en plusieurs exemplaires, un par utilisateur du réseau, soit être un exemplaire unique capable de servir tous les utilisateurs du réseau. Les loggers, en revanche, n'ont besoin de traiter qu'un seul utilisateur à la fois, car leur tâche s'accomplit rapidement, ce qui les laisse libres de satisfaire d'autres demandes. Il devrait toutefois exister une méthode de mise en file des demandes qui ne peuvent être satisfaites immédiatement. Une solution moins satisfaisante consisterait à renvoyer un message d'occupation à tout utilisateur qui tente d'utiliser le logger pendant qu'il est occupé. (Ceci n'exclut naturellement pas la possibilité qu'une installation dispose d'un logger réentrant ou de plusieurs exemplaires du logger.)

Le logger de réception devrait être l'utilisateur zéro sur chaque machine et devrait toujours écouter le socket zéro. (La même chose peut être obtenue en faisant intercepter par le NCP tous les messages destinés à l'utilisateur zéro, socket zéro, et en les envoyant au logger de réception ; mais il est plus simple et plus propre que le logger soit réellement l'utilisateur zéro et que le NCP traite ses messages comme ceux de tout le monde.)

Lorsque le logger d'émission est appelé, il tire une paire de sockets inutilisés (2N et 2N+1) d'un pool de sockets libres et effectue un CONNECT de 2N+1 vers l'utilisateur 0, socket 0 de l'hôte étranger souhaité. Cela active le logger de réception, qui accepte la connexion s'il dispose d'un emplacement pour le télétype étranger. Il ferme ensuite immédiatement cette connexion pour permettre l'établissement de liaisons provenant d'autres sources. Si, en revanche, il n'y a pas de place pour le télétype étranger (ou si, pour une autre raison, le logger de réception ne souhaite pas se connecter), la tentative de liaison vers le socket zéro est refusée. Cela informe le logger d'émission qu'il ne peut pas se connecter à l'hôte étranger, et celui-ci en informe l'utilisateur. Rien ne garantit toutefois que cette fermeture ait réellement été envoyée par le logger étranger. Elle aurait pu être envoyée par le NCP si, par exemple, la file des appels en attente pour ce socket était saturée.

Si la liaison vers le socket zéro a été acceptée (ce qui indique que le logger de réception peut satisfaire la demande), après avoir fermé cette liaison, le logger de réception choisit une paire de sockets disponibles (2M et 2M+1) dans son pool et se connecte de 2M+1 vers 2N. (Il a découvert l'identité de 2N lorsque son écoute a été satisfaite par la liaison avec 2N+1.) Le logger d'émission a, pendant ce temps, écouté le socket 2N et accepte maintenant la liaison, puis effectue un CONNECT de 2N+1 vers 2M. Le logger de réception écoutait ce socket et accepte la tentative de liaison.

À ce stade, il existe une connexion duplex intégral entre les deux loggers. Ils activent alors l'émetteur et le récepteur, qui prennent en charge toute autre communication entre l'utilisateur et le moniteur étranger. (Les émetteurs et les récepteurs peuvent faire partie des loggers ou être appelés par eux, etc.)

Lorsque l'utilisateur a terminé et revient à son moniteur, c'est à l'émetteur de fermer les liaisons. À la réception, il serait hautement souhaitable que le NCP en informe le récepteur, afin qu'il puisse déconnecter l'utilisateur (s'il ne l'a pas fait lui-même) et libérer les ressources que celui-ci utilisait.

Un plan plus formel du protocole proposé, décrit dans le scénario ci-dessus, est donné ci-après :

  1. État stable : le logger de réception de l'hôte étranger écoute l'utilisateur 0, socket 0.

  2. L'utilisateur local appelle le logger d'émission.

  3. Le logger d'émission appelle CONNECT (port, 2N+1, <foreign host#,0,0>).

  4. Le logger d'émission appelle LISTEN (port, <local host#, user#, 2N>).

  5. Le LISTEN du logger étranger reçoit une réponse, et il apprend le numéro d'utilisateur local, l'hôte et #2N+1.

  6. Le logger étranger cherche des sockets disponibles (2M et 2M+1). S'ils existent et qu'il peut établir la connexion, il l'accepte puis ferme immédiatement la liaison.

  7. Le logger étranger appelle CONNECT (port, 2M+1, <local host#, user#, 2N>).

  8. Le logger étranger appelle LISTEN (port, <local host#, user#, 2M>).

  9. Le logger d'émission a écouté 2N et accepte la liaison, puis appelle CONNECT (port, 2N+1, <foreign host#, user#,2M>).

  10. Le logger de réception, qui écoute sur 2M, accepte la liaison.

  11. Les loggers activent les gestionnaires appropriés.

  12. Lorsque l'utilisateur a terminé, l'émetteur ferme les deux liaisons.

Cette méthode de base pour établir une connexion duplex intégral devrait être normalisée dans tout le réseau. La manière dont chaque installation traite l'implémentation de l'émetteur, du récepteur et des deux loggers n'a aucune importance pour le réseau et dépend fortement de la machine. (Même la nécessité d'un émetteur et d'un récepteur dépend de la machine, car certains membres du réseau pourraient assurer leurs fonctions autrement.) Toutefois, certaines conventions doivent être établies concernant la communication entre l'émetteur et le récepteur, ou leurs équivalents.