Aller au contenu principal

Introduction

Alors que nous travaillions à la spécification du protocole formel, nous avons également tenté de formuler un NCP prototype dans un langage de type Algol. Après quelques semaines d'efforts soutenus, le projet a été abandonné lorsque nous nous sommes rendu compte que le code devenait illisible. Nous ressentions toutefois toujours le besoin de montrer notre conception de la manière dont un NCP pourrait être implémenté ; nous pensions que cela aiderait à suggérer des solutions aux problèmes susceptibles de surgir lorsqu'on tente d'adapter les spécifications formelles à un système existant. Le présent document est cette tentative de spécifier, sous forme de prose, ce à quoi un NCP pourrait ressembler.

Un projet de cette nature a des limites évidentes. Nous ne connaissons pas, et ne pouvons pas connaître, toutes les particularités des différents systèmes qui doivent écrire un NCP. Nous sommes contraints de faire certaines hypothèses sur l'environnement, les appels système, etc. Nous avons essayé d'être aussi généraux que possible, mais nul doute que de nombreux sites auront des façons complètement différentes de concevoir le NCP. Il est très difficile de transmettre nos concepts, et les mécanismes qui traitent ces concepts, à des personnes qui ont des façons totalement différentes de voir les choses. Nous avons cependant beaucoup gagné à essayer de programmer réellement ce logiciel pour notre machine fictive. De nombreux problèmes imprévus sont apparus pendant le codage, et nous espérons qu'en publiant ce document nous pourrons aider à atténuer des problèmes similaires susceptibles de survenir dans des cas particuliers.

Il n'y a, bien entendu, absolument aucune obligation d'implémenter quoi que ce soit de ce qui figure dans ce document. Les seules règles strictes auxquelles un NCP doit se conformer sont énoncées dans NWG/RFC#54. Cette description n'est destinée qu'à servir d'exemple, et non de modèle.

Dans la discussion qui suit, nous décrivons d'abord l'environnement supposé et postulons un ensemble d'appels système. Nous examinons l'architecture globale du NCP et les tables qui serviront à conserver les informations pertinentes. Suivent des récits des opérations réseau. Un diagramme d'états est ensuite présenté comme une méthode commode pour conceptualiser l'enchaînement de cause à effet des événements. Le traitement détaillé de chaque type d'événement réseau (appels système ou messages réseau entrants) est ensuite examiné.