Un meccanismo adattabile
Vorremmo adattare all'uso della Rete programmi applicativi che non erano stati progettati pensando alla Rete e che, senza dubbio, non si conformeranno facilmente agli standard di Rete esistenti al momento della loro inclusione. Questo problema di incompatibilità è una parte altrettanto fondamentale della ricerca che sta alla base della Rete quanto lo è l'eterogeneità dell'hardware dei vari host. Richiedere front-end estesi su ciascuno di tali programmi non è un obiettivo ragionevole. Consideriamo la Rete come un insieme di a) host che forniscono servizi; b) host parassiti che collegano i terminali ai servizi, e c) uno spettro di host che si comportano sia come utenti sia come fornitori di servizi. Richiedere che ciascun host parassita gestisca protocolli e formati di dati diversi per tutti i servizi di cui i suoi utenti hanno bisogno non è un obiettivo ragionevole. Il risultato sono programmi e terminali che desiderano comunicare ma non parlano la stessa lingua.
Un approccio ai problemi dei protocolli e dei formati di dati consiste nel fornire un meccanismo adattabile che programmi e terminali possano usare per accedere facilmente alle risorse della Rete. ARPA sponsorizza l'Adaptive Communicator Project presso Rand, uno sforzo di ricerca volto a studiare un processo front-end addestrabile per interfacciare l'uomo al programma. La varietà di dispositivi terminali esplorati comprende voce, tavolette, terminali grafici sofisticati, ecc.
L'Adaptive Communicator sembra molto promettente, ma non sarà pronto prima di un certo tempo. Il Network Project presso Rand ha scelto di seguire l'approccio adattabile (non adattivo, cioè senza euristiche, senza autoapprendimento). Il nostro problema è portare facilmente i ricercatori di Rand sulla Rete, supponendo che abbiano applicazioni simultanee diverse che richiedono protocolli di programma e configurazioni di dati differenti.
I protocolli e i formati di dati saranno descritti separatamente per illustrare che cosa intendiamo per adattamento. I protocolli sono sequenze di “chiamate di sistema” che corrispondono a (e comportano l'emissione da parte del NCP di) comandi NCP. I formati di dati sono le descrizioni del contenuto regolare dei messaggi e non hanno significato per un NCP.
La Form Machine (adattamento ai formati di dati)
Per inquadrare il lettore, la Form Machine appartiene alla classe delle macchine a stati finiti che riconoscono una forma di regolari espressioni_ che, nel nostro caso, descrivono formati di dati. La notazione, tuttavia, è mirata a descrizioni particolari e può quindi risultare, ai nostri fini, più succinta del linguaggio delle espressioni regolari.
La Form Machine è un pacchetto software sperimentale che accoppia una varietà di programmi e terminali i cui requisiti di formato di dati sono diversi. Prevediamo Form Machine collocate (per ridurre il traffico di Rete) presso vari host che forniscono servizi.
Per collaudare l'idea della Form Machine, stiamo implementando due subroutine richiamabili da IBM OS; un compilatore che compila istruzioni che descrivono forme di formati di dati; e un esecutore che esegue una forma compilata su un flusso di dati.
Per descrivere il collaudo della Form Machine, è necessario menzionare un altro programma presso Rand -- il Network Services Program (NSP), che è un programma multiaccesso che interfaccia il Network Control Program sia a programmi arbitrari sia a Video Graphics Console. (Consideriamo un terminale semplicemente come un altro programma con un'interfaccia diversa, cioè # caratteri/riga, # righe/pagina, caratteristiche hardware uniche, l'applicazione a cui è destinato, ecc.) Le subroutine della Form Machine sono richiamabili da NSP su comando delle console o del programma.
Dal punto di vista operativo, un utente alla console assegna un nome e specifica le forme di dati che userà. Le forme vengono compilate e memorizzate per un uso successivo. In un momento futuro, quando l'utente desidera stabilire connessioni di Rete e trasmettere dati, egli associa dinamicamente le forme denominate a ciascun lato di una porta -- una connessione di Rete full duplex con nome simbolico. I flussi di dati in entrata o in uscita vengono eseguiti secondo la forma compilata e il flusso di dati trasformato viene poi inoltrato rispettivamente alla console/al programma o alla Rete.
I dettagli della sintassi della nostra notazione per la Form Machine non sono importanti per la comunità collettiva della Rete. Tuttavia, le potenzialità della notazione sono interessanti. Essa finirà per comprendere la descrizione di display CRT ad alte prestazioni, TTY e strutture di file arbitrarie. Per collaudarne la validità, è in corso l'implementazione di un sottoinsieme di tali funzionalità.
La versione attuale è caratterizzata dalle seguenti funzionalità:
-
Traduzione dei codici di caratteri (vale a dire decimale, ottale, esadecimale, ASCII a 8 bit, ASCII a 7 bit, EBCDIC e binario).
-
Stringhe di interruzione multiple (molti terminali hanno più segnali di terminazione).
-
Inserimento di letterali (usato principalmente per la presentazione di informazioni sul display).
-
Salto o cancellazione di stringhe arbitrarie (usato per rimuovere numeri di sequenza dei record, ecc., che non devono essere visualizzati).
-
Generazione dei numeri di sequenza dei record.
-
Calcolo e inserimento della lunghezza delle stringhe.
-
Specifiche di lunghezza di stringhe di dati arbitrarie, ad es. “una stringa letterale esadecimale seguita da un numero arbitrario di caratteri EBCDIC, seguita da una stringa di interruzione, .....”.
-
Concatenazione di messaggi di Rete, cioè l'esecuzione di forme compilate su stringhe di dati incomplete.
-
Trasposizione dei campi di dati.
-
Fattori moltiplicativi sia espliciti sia indefiniti, sia per messaggi a riga singola sia per messaggi a più righe.
Le funzionalità che non sono in fase di implementazione ma che saranno aggiunte, se avranno successo, comprendono:
-
Descrizioni orientate alla grafica.
-
Traduzioni numeriche generali.
-
Istruzioni condizionali.
-
Una capacità di puntatori.
Il Protocol Manager (adattamento alle sequenze di comandi NCP)
L'NSP consente agli utenti dei terminali e ai programmi di lavorare a livello di protocollo NCP; cioè LISTEN, INIT e così via. Consente inoltre loro di trasmettere e rielaborare informazioni significative solo per se stessi. Questo approccio “pratico” è auspicabile dal punto di vista del programmatore di sistemi o da un punto di vista esplorativo. Tuttavia, è auspicabile eliminare il laborioso “handshaking” per il ricercatore che usa ripetutamente un dato programma remoto, consentendogli di definire, memorizzare, recuperare ed eseguire sequenze di protocollo “preconfezionate”.
Stiamo attualmente specificando un Protocol Manager come modulo dell'NSP che consentirà le operazioni di cui sopra su sequenze di comandi NCP. Le funzionalità del modulo sono:
-
Le sequenze possono contenere “punti di interruzione” per consentire all'utente alla console di inserire dinamicamente qualsiasi informazione necessaria in base al contesto.
-
I parametri di un comando possono contenere token i cui valori sono forniti dalla parte remota durante il dialogo di protocollo. Ad esempio, nella Note #66 il numero di socket fornito dal server deve essere usato dall'utente nei successivi comandi RTS, STR.