V. Tables du NCP
Nous envisageons que l'essentiel de la base de données du NCP réside dans des tables associatives. Par « associative », nous entendons qu'il existe une routine de recherche à laquelle on présente une clé et qui soit se termine avec succès en renvoyant un pointeur vers l'entrée correspondante, soit échoue si aucune entrée ne correspond à la clé. Les principales tables sont les suivantes :
1. La table de rendez-vous
Cette table contient les attributs d'une connexion. On y accède par le socket local, mais d'autres tables peuvent contenir des pointeurs vers des entrées existantes.
Les composants d'une entrée sont :
- (a) Socket local
- (b) Socket distant
- (c) Lien
- (d) État de la connexion
- (e) État du flux
- (f) File de données
- (g) File des appels
- (h) Pointeur de port
- (i) Taille de leur tampon (nécessaire uniquement du côté émission)
- (j) État d'erreur
Une entrée est créée lorsqu'un appel système CONNECT ou LISTEN est exécuté ou lorsqu'une demande de connexion est reçue. Divers champs restent inutilisés jusqu'à ce que la connexion soit établie.
2. La table des liens d'entrée
L'interpréteur d'entrée utilise la concaténation de l'hôte distant et du lien comme clé dans la table d'entrée. La table sert au traitement d'un message destiné à un utilisateur arrivant sur un lien entrant, en fournissant un pointeur dans la table de rendez-vous.
3. La table des liens de sortie
L'interpréteur d'entrée utilise la table des liens de sortie pour accéder à l'état du flux lorsque des RFNM reviennent en réponse aux messages transmis. La table des liens de sortie est indexée par hôte et par lien et fournit un pointeur dans la table de rendez-vous.
4. La table des ports
L'interpréteur des appels système utilise la concaténation de l'identifiant du processus et de l'identifiant du port comme clé pour obtenir un pointeur dans la table de rendez-vous.
5. La table des commandes de contrôle de sortie
L'interpréteur des appels système et l'interpréteur d'entrée utilisent cette table pour placer des entrées dans les files de commandes de contrôle de sortie appropriées. Les commandes sont mises en file dans des entrées de table distinctes correspondant aux hôtes distants. Avant la sortie, le contenu de la file est concaténé en un grand message de contrôle. Les composants d'une entrée sont :
- (a) Hôte
- (b) File des commandes de contrôle de sortie
6. La file des requêtes de sortie
Cette file contient une entrée pour chaque connexion ayant des données à transmettre au réseau. Il n'y a qu'une seule entrée par connexion ; elle est supprimée lorsque le dernier paquet de données est transmis et elle est insérée chaque fois qu'un utilisateur fait une requête système de transmission de données.
L'entrée est réinsérée si la transmission n'est pas terminée (message trop long) ou si elle est empêchée par le mécanisme de contrôle de flux. Le seul composant d'une entrée est un socket local.
7. La table des hôtes actifs
Il s'agit d'une simple table répertoriant les hôtes qui sont actifs. Cette table est consultée avant l'établissement d'une connexion et avant l'envoi de toute donnée afin de s'assurer que l'hôte de destination existe réellement. À l'heure actuelle, le protocole ne définit pas la procédure à suivre pour les conditions hôte actif/hôte hors service. Voir NWG/RFC#57.
8. La table d'attribution des liens
Les numéros de lien sont attribués par le récepteur. Cette table enregistre quels liens sont libres et peuvent, par conséquent, être attribués.