Passa al contenuto principale

V. Tabelle nell’NCP

Immaginiamo che la maggior parte della base di dati dell’NCP risieda in tabelle associative. Con "associativo" intendiamo che esiste una routine di ricerca a cui viene fornita una chiave e che restituisce con successo un puntatore alla voce corrispondente, oppure fallisce se nessuna voce corrisponde alla chiave. Le tabelle principali sono le seguenti:

1. La tabella di rendezvous​

Questa tabella contiene gli attributi di una connessione. Alla tabella si accede tramite il socket locale, ma altre tabelle possono contenere puntatori a voci esistenti.

I componenti di una voce sono:

  • (a) Socket locale
  • (b) Socket remoto
  • (c) Collegamento (link)
  • (d) Stato della connessione
  • (e) Stato del flusso
  • (f) Coda dei dati
  • (g) Coda delle chiamate
  • (h) Puntatore alla porta
  • (i) Dimensione del buffer remoto (necessaria solo sul lato di invio)
  • (j) Stato di errore

Una voce viene creata quando viene eseguita una chiamata di sistema CONNECT o LISTEN oppure quando viene ricevuta una richiesta di connessione. Vari campi restano inutilizzati finché la connessione non è stabilita.

L’interprete di input usa la concatenazione dell’host remoto e del link come chiave nella tabella di input. La tabella viene usata nell’elaborazione di un messaggio destinato a un utente su un link in ingresso, fornendo un puntatore nella tabella di rendezvous.

L’interprete di input usa la tabella dei link di output per accedere allo stato del flusso man mano che tornano gli RFNM dei messaggi trasmessi. La tabella dei link di output ha come chiave host e link e fornisce un puntatore nella tabella di rendezvous.

4. La tabella delle porte​

L’interprete delle chiamate di sistema usa la concatenazione dell’identificativo del processo e dell’identificativo della porta come chiave per ottenere un puntatore nella tabella di rendezvous.

5. La tabella dei comandi di controllo in output​

L’interprete delle chiamate di sistema e l’interprete di input usano questa tabella per inserire voci nelle opportune code dei comandi di controllo in output. I comandi vengono accodati in voci di tabella separate, corrispondenti agli host remoti. Prima dell’output, il contenuto della coda viene concatenato in un unico grande messaggio di controllo. I componenti di una voce sono:

  • (a) Calcolatore host
  • (b) Coda dei comandi di controllo in output

6. La coda delle richieste di output​

Questa coda contiene una voce per ogni connessione che ha dati da trasmettere alla rete. Esiste una sola voce per connessione, che viene cancellata quando viene trasmesso l’ultimo pacchetto di dati e viene inserita ogni volta che un utente fa una richiesta di sistema per la trasmissione di dati.

La voce viene reinserita se la trasmissione non è completata (messaggio troppo lungo) o è impedita dal meccanismo di controllo di flusso. L’unico componente di una voce è un socket locale.

7. La tabella degli host attivi​

Si tratta di una semplice tabella che elenca gli host attivi. Questa tabella viene consultata prima di stabilire una connessione e prima di inviare qualsiasi dato, per assicurarsi che l’host di destinazione esista effettivamente. Attualmente il protocollo non definisce la procedura da seguire per le condizioni di host attivo/host non attivo. Vedi NWG/RFC#57.

I numeri di link sono assegnati dal ricevente. Questa tabella registra quali link sono liberi e possono quindi essere assegnati.