Introduzione
Mentre eravamo impegnati nel tentativo di specificare il protocollo formale, abbiamo anche cercato di formulare un NCP prototipale in un linguaggio simile ad Algol. Dopo alcune settimane di sforzo concentrato, il progetto è stato abbandonato quando ci siamo resi conto che il codice stava diventando illeggibile. Sentivamo tuttavia ancora la necessità di illustrare la nostra concezione di come un NCP potrebbe essere implementato; ritenevamo che ciò avrebbe aiutato a suggerire soluzioni ai problemi che potrebbero sorgere nel tentativo di adattare le specifiche formali a un sistema esistente. Questo documento è quel tentativo di specificare in forma di prosa come potrebbe presentarsi un NCP.
Un progetto di questa natura ha limiti evidenti. Non conosciamo, né possiamo conoscere, tutte le peculiarità dei vari sistemi che devono scrivere un NCP. Siamo costretti a fare alcune ipotesi sull’ambiente, sulle chiamate di sistema e simili. Abbiamo cercato di essere il più generali possibile, ma senza dubbio molti siti avranno modi completamente diversi di concepire l’NCP. È molto difficile trasmettere i nostri concetti, e i meccanismi che li gestiscono, a persone che hanno modi del tutto diversi di vedere le cose. Abbiamo tuttavia tratto grande beneficio dal tentativo di scrivere effettivamente il codice di questo programma per la nostra macchina fittizia. Durante la stesura del codice sono emersi molti problemi imprevisti, e speriamo che pubblicando questo documento si possa contribuire ad alleviare problemi simili che potrebbero presentarsi nei singoli casi.
Naturalmente non vi è assolutamente alcun obbligo di implementare alcunché di quanto contenuto in questo documento. Le uniche regole rigide a cui un NCP deve conformarsi sono enunciate in NWG/RFC#54. Questa descrizione è intesa solo come esempio, non come modello.
Nella discussione che segue descriviamo innanzitutto l’ambiente da presupporre e postuliamo un insieme di chiamate di sistema. Discutiamo l’architettura complessiva dell’NCP e le tabelle che saranno usate per contenere le informazioni rilevanti. Seguono descrizioni narrative delle operazioni di rete. Viene poi presentato un diagramma di stato come metodo comodo per concettualizzare la sequenza causa-effetto degli eventi. Si discute infine l’elaborazione dettagliata di ciascun tipo di evento di rete (chiamate di sistema o messaggi di rete in arrivo).