Protocolli di Networking
Concetti di Base
Protocollo
Un Protocollo di Comunicazione è definito da due aspetti:
- Formato dei dati interscambiati
- Regole di interscambio
Tutto deve essere implementato in software su un sistema operativo di riferimento.
Storicamente, a partire da circa il 1980, il linguaggio di implementazione dei protocolli di rete è stato il Linguaggio C, e la piattaforma di sistema operativo di riferimento è stata Unix.
I discendenti diretti sono il C++, in cui è scritto Windows, e Linux.
Abbiamo quindi le puntualizzazioni seguenti.
Formato Dati
E' definito da struct in linguaggio C.
Regole di Interscambio
Sono definite da un algoritmo della categoria Macchine a Stati Finiti (Finite State Machines - FSM).
Questi sono algoritmi deterministici, che prima vengono descritti in pseudocodice poi implementati in Linguaggio C. Una buona specifica di un FSM è immediatamente rendibile in codice.
Esempio: TCP FSM
Data Communication
Interscambio di dati fra DTE tramite DCE:
- DTE - Data Terminal Equipment
- DCE - Data Communication Equipment
Commutazione
Commutazione di Circuito
- Sincrono
- Tre fasi: stabilimento, uso e abbattimento del circuito
- La comunicazione è un unico flusso e passa necessariamente attraverso il circuito stabilito, anche se la qualità degradasse
- In caso di malfunzionamenti gravi, occorre ristabilire il circuito
- Telefonia tradizionale
Commutazione di Messaggio
- Store and Forward - ogni messaggio transita per intero dal nodo trasmittente a quello ricevente di un link; il ricevente lo accumula localmente; quando il messggio è tutto presente lo invia al prossimo destinatario
- UUCP - Unix to Unix Communication Programs era una serie di programmi per posta e newsgroups (posta a sottoscrizione), che usavano questo metodo
Commutazione di Pacchetto
- Il messaggio è suddiviso in segmenti, che vengono incapsulati in pacchetti
- Similitudine con la Posta Tradizionale, i pacchetti si chiamano anche datagrammi
- i pacchetti sono smistati separatamente
- Internet, ma non solo
Evoluzione di Internet
ARPAnet
(Defense) Advanced Research Project Agency
- Molti progetti finanziati, anche la telepatia; conseguentemente molti sprechi
- Complesso Militare/Civile/Universitario
- Scopo: supremazia tecnologica degli USA
ARPAnet - dal 1969
- Comunicazione dati a lunga distanza
- US continentali, esteso a (poche) basi estere
- Parte del Command & Control in caso di conflitto
- Progettata per essere resilente
- Basata su commutazione di pacchetto
- Inizialmente software e hardware dedicati su Host
- Computer della Bolt, Beranek & Newman
- Codice “Fuzzball”, OS dedicato, CPU 32 bit
- Poi riscritto in Linguaggio C per BSD Unix
Arpanet 1974
Contrariamente a quello che si pensa, la prima rete ARPAnet non era a molte maglie, non esistevano molti percorsi alternativi, e non sarebbe stata resiliente in caso di attacco atomico.
Fuori dagli Stati Uniti continentali vi era il nodo delle Hawaii, quello di Londra, e un terzo nodo in una base americana nella Norvegia del nord, con un radar di ascolto puntato sull'Unione Sovietica.
ARPAnet era comunque in attiva espansione, quindi sarebbe in seguito diventata resiliente.
ARPAnet ha tre caratteristiche di nota:
- Commutazione di pacchetto
- Il ricevente ricompone i pacchetti, poichè frammenti di pacchetto possono aver compiuto percorsi diversi
- Eventualmente richiede ritrasmissione
- Routing dinamico
- Ciascun pacchetto, o suo frammento, segue il link migliore nell’istante di smistamento
- Se nodi falliscono il routing successivo sceglie altri link
- Notevole resilienza
- Device di smistamento intelligenti
- Host non switch
- Ciascuno mantiene una Tabella di Routing
Simile a Store and Forward ma per pacchetti, non interi messaggi
Un pacchetto = max pochi kilobytes
Limite massimo di dimensione di un pacchetto: 64 kilobytes
Ma le librerie interne implementative della Berkeley consentivano una dimensione massima di 8 kilobytes