MODELLO ISO/OSI

Introduzione
Physical e Data Link Layer (Ethernet e Token Ring)
Protocolli Network Layer
Protocolli Transport Layer (TCP, UDP)
 
 

Introduzione(Indice)

Questo modello definisce 7 livelli (logici). Ogni livello e' rappresentato da un modulo software in ogni host del network. Il piu' basso e' il livello di comunicazione fisica, il piu' alto e' il programma applicativo. Non tutti sono effettivamente necessari, spesso ne sono implementati solo 4 o 5, ma comunque servono da riferimento.

figura 10.1

Si tratta in pratica di una macchina astratta in cui ogni livello mette a disposizione del livello precende un insieme di funzionalita'. Ogni livello rielabora il messaggio inziale aggiungendo un header contenente informazioni per il livello successivo corrispondente del ricevente. Un messaggio puo' essere diviso in pacchetti piu' corti, che sono poi ricostruiti dal destinatario.
Ogni livello ha anche un indirizzo per il destinatario, che completa quelli contenuti negli altri livelli.

Non sempre i vari livelli hanno protocolli separati. Ad esempio l'IEEE Project 802 divide il Data LInk Layer in 2 parti: Logical Link Control (LLC) piu' in alto (802.3) e Media Access Control (802.5). Quest'ultimo, assieme al protocollo del physical layer, costituisce il protocollo Ethernet.

Physical e Data Link Layer (Indice)

Due modelli standard di protocolli per il physical layer e parte del data layer sono:

L'interfaccia hdw e il software del network in ogni host possono inviare e ricevere dati ad alta velocita' con bassa frequenza di errori e senza ritardi per switch, implementando i livelli fisico e datalink con un singolo protocollo. Si usano doppini, cavi coassiali o fibbre ottiche. Le strutture piu' usate sono i bus.

Topologia Branching Bus

Singolo cavo o insieme di cavi connessi con ripetitori (semplici unita' di connessione per ricostruire e rafforzare il segnale) Il cavo e' un elemento passivo a differenza del bus per il collegamento della CPU con le memorie.
 

 LAN bus 
 Data bus system 
  • seriale
  • nessuna componente di controllo
  • parallelo (8/16/32 bit)
  • bus arbiter (o segnali di controllo)

L'uso del cavo e' schedulato in modo distribuito dai vari host. Possono avvenire delle contese d'accesso, non essendoci un arbitro.

Protocollo Ethernet (IEEE 802.3)

Protocollo sviluppato da Xerox nel 1970. Standard DIX (Digital Intel, Xerox) dal 1980.
Metcalfe e' stato il primo progettista di Ethernet. Nel 1973 gli diede questo nome, scegliendo come base la parola "ether" per descrivere la caratteristica principale del sistema: il mezzo fisico (cavo) porta i bit alle varie W.S. come il vecchio "etere" (inesistente) supportavano la propagazione delle onde elettromagnetiche.

Consiste in 3 livelli:

Tempo di trasmissione di un frame: da 50 microsec. (per il pacchetto di dimensione minima) a 1.2 msec. Interruzione di silenzio fra 2 frame di 9.6 microsec.
Non e' trasmessa la lunghezza del frame: gli ultimi 4 bytes sono il cheksum, per il controllo di correttezza. Il bus address e' di 6 byte per avere 1 unico identificatore su tutto il branching bus.
Se il checksum non e' valido, il dato e' scartato dal data link layer. L'application layer deve quindi applicare un protocollo di acknowledge. L'incidenza dei dati errati e' comunque minima.

Meccanismo carrier sensing: ogni host ascolta il bus e preleva solo i messaggi a lui destinati. Le collisioni non sono prevenute, vanno controllate dagli host.

Velocita' di trasmissione.

Il cavo oscilla fra 2 tensioni limite, formando onde quadre, con un intervallo di temporizzazione per la trasmissione. Un fronte di discesa identifica il bit 0, un fronte di salita il bit 1.

C'e' poi anche da considerare la velocita' di diffusione del campo elettrico nel cavo (velocita' della luce in quel mezzo, circa 3 * 10**8 m/sec, ). Una tensione applicata in un punto del cavo impieghera' un certo tempo a distribuirsi su tutto il cavo. Indichiamo con T il tempo per la formazione sul bus del segnale. Per un cavo lungo 1 Km avremo ad esempio T circa = 5 microsec.

ESEMPIO
L'host A vuole trasmettere un messaggio ad un altro host. Anche B vuole fare altrettanto. Entrambi ascoltano il bus finche' sentono il "silenzio". A questo punto ciascuno comincia a inviare il messaggio. A causa del tempoT di ritardo nfatti, e' possibile che i due host sentano il silenzio anche se un altro host ha in effetti gia' iniziato a spedire un messaggio. A inizia a trasmettere al tempo t0 e B al tempo t1. C'e' una collisione se |t1-t0| <= T.

Riconoscimento della collisione: ogni host che invia legge quanto invia. Se non e' lo stesso messaggio che ha inviato, vuol dire che c'e' stata una collisione. In questo caso (jamming) i riceventi scartano il messaggio. I frame collisi sono ritrasmessi dopo un tempo random = n*T. Vengono ripetuti al massimo 10 volte, poi il messaggio e' scartato. Per poter capire che c'e' stata collisione occorre che la durata del messaggio trasmesso sia sufficientemente lunga (in modo da essere ricevibile da tutti gli host sul cavo), per questo c'e' una dimensione minima del messaggio.

Le reti Ethernet si realizzano normalmente in due modi: con cavi coassiali (tipo cavo d'antenna), o con doppino (twisted pair, tipo telefonico).

Cavo coassiale: il cavo forma effettivamente una dorsale: le due stremita' hanno un terminatore per evitare riflessi elettrici, mentre le WS sono collegate con un connettore a T, che fornisce continuita' al cavo anche quando una WS e' staccata. E' la soluzione piu' economica, ma e' anche delicata: se una delle schede di rete ha un malfunzionamento o una parte di cavo si interrompe, per tutte le WS diventa impossibile comunicare.

Doppino: in questo caso non c'e' una vera dorsale, ma ogni WS e' collegata tramite doppino ad uno hub centralizzato (struttura a stella). In caso di malfunzionamenti su una sezione, e' sufficente isolare quella parte di cavo, e il sistema rimanente funziona ancora. I costi sono superiori.

Oltre a Ethernet (10 Mbit/sec) c'e' anche la versione Fast Ethernet, a 100 Mbit/sec, che richiede doppini e hub.

Efficienza di Ethernet
L'utilizzazione del bus arriva all'80-95%, ma oltre al 50% aumentano i problemi dovuti a collisioni.

Topologia Ring

Il link e' fatto per ogni 2 host. Un host passa i messaggi che riceve (se non sono destinati a lui) all'host successivo. In alcuni ring il messaggio completa comunque l'anello ed e' poi rimosso dal sender anziche' dal receiver.

Nella rete configurata a ring un host assume il compito di monitor station: il suo compito e' di eliminare dati che non sono stati cancellati (perche' magari l'indirizzo era sbagliato o perche' il processo sender o il receiver sono falliti).

Protocollo Token Ring

E' stato uno dei primi protocolli. IBM l'ha usato nella forma IEEE 802.5 standard. Trasmette messaggi di lunghezza qualunque come singolo pacchetto. La trasmissione e' fatta utilizzando un token packet che ha diverso formato. Lo schema e' quello di una locomotiva (il token) he trascina un treno (il messaggio). Se il token e' libero, l'host che lo riceve puo' attaccarci un messaggio, assegnando al token un indirizzo di destinazione. Il ricevente libera il token e legge il messaggio. Il token circola continuamente, anche se vuoto. La monitor station controlla che il token non vada perso, e nel caso lo rigenera.

Questo protocollo non e' fair, qualche host potrebbe non riuscire a spedire un messaggio. in questo caso possono essere assegnate priorita' e prenotazioni. Oppure il token viene bloccato dal sender (che spedisce ugualmente il suo messaggo) e rilasciato all'host successiovo solo quando il messaggio inviato ha compiuto tutto il giro.

Il meccanismo di ring puo' essere anche utilizzato in qltro modo, ad esempio come e' stato fatto nel protocollo Cambridge Ring, detto anche lotted ring (sempre 10Mhz). Il circuito e' formato da due doppini telefonici, ed e' stato usato in Inghilterra dal 1970.

Sul ring circola uno slot ("treno") di 3 o 4 pacchetti. Quando ce n'e' uno vuoto si puo' riempire (1 control bit se "empty"). Quando il bit di controllo e' "full", si controlla il destination address. Se e' ricevuto, i response bit sono alternati di conseguenza, per indicare al sender che il pacchetto e' stato letto. Il sender azzera allora il pacchetto quando lo riceve nuovamente, mettendo il bit a "empty". Se c'e' stato un problema, ritrasmette.

Confronto fra i vari protocolli.

C'e' una certa similitudine con metodi di schedulazione della CPU: ethernet e token ring fanno passare un messaggio alla volta senza interruzioni, a meno di "deadlock" per ethernet (risolto con la detection e il recovery), mentre Cambbridge ring assomiglia alla schedulazione RR. La performance e' comunque simile. E. e' migliore per le trasmissioni lunghe a basso carico di rete. L'uso di token sui ring richiede la circolazione continua del token.

NOTA: Si possono fare comunicare anche LAN diverse fra loro. In questo caso e' necessario avere dell W.S. che funzionino da bridge per consentire la conversione fra protocolli. Poiche' gli indirizzi del livello fisico dipendono dal protocollo, un bridge avra' un indirizzo diverso per ogni rete a cui appartiene.

L'FDDI (Fiber Distributed Data Interaface) non usa il protocollo Ethernet ma bensi' mette in circolo un token, e solo l'host che lo detiene puo' spedire. Consente velocita' di 100Megabit per secondoe lunghezze fino a 200Km.

Glossario

Note sugli apparati di livello 1 e 2 per connessioni ethernet

Per usare Ethernet ci sono diverse tecnologie.

Per fare alcuni esempi vediamo cenni su 10Base2, 10BaseT e 10/100BaseT.

La definizione 10base fa riferimento alla velocita' massima di comunicazione: 10 Mbit/s (bps). La definizione 10/100base fa invece riferimento a uno standard piu' recente, in cui si riesce anche a raggiungere la velocita' teorica di 100 Mbit/s, pur mantenendo la compatibilita' con la velocita' precedente; nello stesso modo, 10/100/1000base rappresenta la possibilita' di raggiungere anche una velocita' di 1000 Mbit/s. Le comunicazione a 100 Mbit/s e a 1000 Mbit/s avvengono solo attraverso un cavo UTP, per cui si parla generalmente di connessione 10/100baseT, oppure 10/100/1000baseT.

10Base2

La connessione 10base2, senza la presenza di ripetitori, prevede l'uso di un cavo coassiale con una lunghezza massima di 180 m (quasi 200 m, da cui il nome 10base2), terminato alle due estremita' con una resistenza particolare. Lungo il cavo possono essere inseriti dei connettori a T, attraverso cui collegare un ricetrasmettitore, o direttamente una scheda di rete che incorpora tutte le funzionalita' . Le varie inserzioni poste nella rete possono essere un massimo di 30, poste a una distanza minima di 0,5 m lungo il cavo.

Rete 10base2 senza ripetitori.



10BaseT 

La connessione 10baseT prevede il collegamento di due sole stazioni, cosa che in pratica si traduce nella necessita' di utilizzare un ripetitore multiplo, ovvero un HUB, o concentratore. Le caratteristiche del cavo utilizzato per la connessione 10baseT non sono uniformi e perfettamente standardizzate, tuttavia, generalmente si puo' raggiungere una lunghezza massima di 100 m.

La regola di progettazione piu' semplice, stabilisce che tra due stazioni qualunque possono essere attraversati al massimo quattro ripetitori, utilizzando cinque segmenti (cavi), di cui al massimo tre di tipo coassiale (RG58 o RG213).

Esempio di configurazione massima con quattro ripetitori (HUB), tre segmenti coassiali e due segmenti 10baseT.



Ripetitori

La figura mostra una situazione in cui tre segmenti 10base2 o 10base5 collegano tra loro quattro ripetitori che poi si uniscono all'esterno con un segmento 10baseT. La figura mostra il collegamento di due sole stazioni, ma i ripetitori piu' esterni potrebbero essere muniti di piu' porte 10baseT, in modo da collegare piu' stazioni.

Hub 

L'HUB si comporta come un ripetitore: quando un riceve un bit, lo rilancia a tutte le uscite verso le interfacce delle stazioni collegate. Cosi' ogni interfaccia puo' sentire se il canale e' libero ed eventualmente trasmettere, e ovviamente puo' ascoltare se c'e' un messaggio per quella interfaccia, come se fosse attaccato direttamente al cavo ethernet. Operano sui bit piuttosto che sui frame, percio' sono apparati di livello 1 cioe' fisico. Tutta la rete LAN connessa tramite HUB condivide lo stesso dominio di collisione e di broadcast.



Nella figura sopra e' rappresentata la rete che collega 3 dipartimenti attraverso Hub. Il dominio di collisione e quello di broadcast e' unico su tutta la LAN.

Bridge


Al contrario, i bridge sono apparati di livello 2 e agiscono sui frame, inoltrando o filtrando i pacchetti. All'ingresso di un frame il bridge esamina l'indirizzo MAC di destinazione e lo inoltra al'interfaccia corrispondente. Nella figura sotto e' rappresentata una LAN divisa in 2 segmenti. Ogni segmento ha un dominio di collisione isolato dall'altro (i pacchetti che circolano nei 2 segmenti non collidono fra loro). Invece il dominio di broadcast e' unico. 



I bridge, al contrario degli hub, possono connettere anche differenti tecnologie LAN, ad esempio le ethernet 10 e 100 Mbit/sec. In teoria inoltre non c'e' limite alla grandezza della LAN che si puo' costruire.

Il filtraggio dei pacchetti e l'inoltro su interfacce diverse e' effettuato tramite l'uso di tavole di bridge. 

Supponendo di avere i 3 Dipartimenti visti sopra connessi con bridge come in figura sotto, e posto di avere i seguenti indirizzi MAC dei nodi:

Informatica
AA:BB:AA:BB:AA:01
AA:BB:AA:BB:AA:02

Chimica
AA:BB:AA:BB:CC:01
AA:BB:AA:BB:CC:01

Amministrazione
AA:BB:AA:BB:DD:01
AA:BB:AA:BB:DD:01

le tavole di bridge saranno:



Il bridge ha un sistema di autoapprendimento basato sull'uso di broadcast (frame inviati su tutte le interfacce) e nelle reti complesse e' in grado di esplorarne la topologia e costruire uno spanning tree per recapitare in modo ottimale i frame.

Commutatori di pacchetto o switch

Gli switch sono bridge ad alte prestazioni con interfacce multiple, quindi mentre un bridge ha un numero di interfacce da 2 a 4, uno switch ne puo' avere anche varie dozzine. Inoltre ogni interfaccia puo' funzionare in modo full-duplex (riceve e tramette contemporaneamente sulla stessa interfaccia).

Gli switch potrebbeo sostitiure i router nella costruzione delle reti, ma il punto critico e' che il dominio di broadcast di una rete con solo switch ' unico. questo puo' causare ondate di flooding che possono bloccare la rete.



Protocolli Network Layer (Indice)

I protocolli di rete e di trasporto coprono i livelli 3 e 4 del modello OSI. I protocolli piu' noti sono:

Per i protocolli di rete e' necessario instradare i messaggi. Abbiamo due possibilita': La stessa scelta si presentera' anche per i protocolli del livello trasporto.

X.25

Orientato alla connessione, utilizzato soprattutto su WAN, reti pubbliche telefoniche e poste elettroniche europee.

In effetti la tipologia di collegamento e' quella classica del telefono.

IP (Internet Protocol)

E' connectionless, ed assomiglia al sistema delle poste.

Indirizzo IP
Ogni livello ha il suo tipo di indirizzo. Al livello IP abbiamo degli  indirizzi che sono anche chiamati indirizzi Internet. E' composto da due campi: identificatore del network e identificatore dell'host all'interno di quel network. Il tutto e' codificato su 32 bit.
Le reti sono connesse fra di loro attraverso host condivisi (multihomed), ciascuno dei quali possiede 2 o piu' indirizzi diversi, uno per ogni rete a cui appartiene. L'identificatore di network e' quindi utilizzato dai bridge (o gateway)  per instradare il messaggio.

L'indirizzo di network po' essere decomposto in indirizzi di subnetwork in modo gerarchico. Per rendere piu' leggibile all'utente umano un indirizzo IP, si utilizza la dotted notation: una serie di numeri decimali separati dal punto ad esempio 251.30.0.3. Si legge da sinistra a destra: il primo campo indica la rete, poi la sottorete, la sottosottorete e infine l'identificatore dell'host.

Ci sono 4 classi di indirizzi, indicate con una lettera da A a D, con diverso numero di bit per i vari identificatore. Le reti o sottoreti vengono assegnate dal NIC (Network Information Center) della SRI International, a cui bisogna fare richiesta. Ad esempio, all'Ateneo di Genova e' stato assegnato un identificatore di rete, poi la responsabilita' di suddividere le sottoreti e' stata affidata ad un gestore, infine ogni Dipartimento decide ulteriori suddivisioni e assegna gli identificatori dei singoli host.

Infine, per rendere ancora piu' leggibile l'indirizzo IP si ricorre al Domain Name Service (DNS). Informazioni sul DNS e un esempio sulla conversione DNS -> IP -> ethernet  degli indirizzi si trova nella Sezione 11.
 
 

Livello Trasporto (Indice)

I protocoli ISO/OSI prevedono per questo livello 5 varianti, da TP0 a TP4. TCP e' simile a TP4. E' usato normalmente in associazione a IP in quanto fornisce la comunicazione connection oriented, con controllo dell'ordinamento dei messaggi e degli eventuali errori.

UDP non e' uno standard ma e' molto usato, assieme a IP di cui e' praticamente un'estensione (Universal Datagram Protocol). E' piu' leggero di TCP, ma connnectionless.

Indirizzo TCP/UDP
I protocolli a livello di trasporto devono specificare a quale porta (dell'host individuato dall'indirizzo IP) va rilasciato il messaggio e a chi deve essere riportato. L'indirizzamento e' unico per TCP e UDP (cioe' lo stesso numero puo' essere utilizzato da entrambi i protocolli, perche' e' "associato" al protocollo stesso), ed e' un 16 bit unsigned integer. Alcune porte sono dette well-known (numeri da 1 a 255) e sono state assegnate da un apposito ente ad uno specifico servizio. Gli host che attivano un certo servizio lo devono quindi rendere disponibile a quella porta. Ad esempio FTP  ha la porta 21, mentre TFTP ha il 69. Vedere Sezione 11. In questo modo e' sempre possinbile concoscere la porta di un servizio "standard" su qualunque host.

Gli altri port number (superiori a 255, ma di solito il S.O. se ne riserva una parte per uso proprio) sono detti effimeri, e durano solo per il tempo di sopravvivenza del processo che li ha richiesti. Un processo puo' quindi avere piu' porte di input e/o di output, su diversi protocolli.

Un canale di comunicazione fra due porte e' allora identificato da una quintupla:

       ( transport-protocol, source-host-addr, source-port-number, 
         dest-host-addr, dest-port-number )
che individua in modo univoco la comunicazione.

Gli header del protocollo TCP sono dello stesso tipo, ma l'header del livello TCP e' di 20 byte.
 

Comunicazione Connection Oriented (TCP)

Un processo (server) richiede al sistema operativo di collegare un suo socket ad un indirizzo di porta interna con la funzione "bind". In questo modo i messaggi in arrivo a quella porta logica gli saranno instradati. Quindi il server si mette in ascolto ("listen") per accettare ("accept"), eventualmente, un messaggio. L'ultima funzione e' bloccante.

L'altro processo (client) stabilisce una connessione effettuando una "connect" (bloccante). Se accettata, si inizia lo scambio di messaggi, usando lo stesso canale virtuale, in entrambi le direzioni.

Questo sistema e' come la comunicazione telefonica: una volta stabilita la comunicazione, non occorre ripetere il numeroogni volta che si parla. Si possono quindi usare le normalifunzioni read e write oppure, per ragioni di efficienza, send e receive

Comunicazione Connectionless (UDP)

In un protocollo connectionless entrambi i socket devono rendere nota la loro esitenza al S.O. tramite una "bind ", in quanto ogni messaggio e' trattato separatamente (come una lettera chiusa in una busta che porta sopra l'indirizzo completo). Sara' quindi necessario usare funzioni tipo sendto e recvfrom che abbiano come parametri anche l'indirizzo IP.

Il protocollo IP divide, se il caso, i messaggi in frame. Se un messaggio e frammentato, utti i suoi header sono replicati su ogni frame.
Ogni gestore di un layer OSI accetta un messaggio da quello precedente e gli aggiunge un header (in qualche caso anche una coda) che sara' tolto dal gestore corrispondente del receiver.

Server concorrenti

Un server puo' generare un figlio per gestire una richiesta di servizio. In questo modo e' libero di accettare altre richieste (vedere implementazioni server ditribuiti modello cluster.

Vediamo una connessione TCP:

Il server e' sull'host orange e risponde alla well-known port number 21. La notazione {TCP, *, 21} dice al S.O.di orange che sta aspettando alla porta 21 una richiesta di collegamento con protocollo TCP. Il server e' presente su tutti gli host del network.

Ovviamente apple e orange sono nomi che corrispondono a indirizzi Internet.Il server crea un figlio che gestira' la richiesta di apple:

Lo stesso viene fatto se arrivano altre richieste. Nell'esempio sopra ci sono 2 associazioni per la richiesta di connessione, cioe' due quintuple:

{ TCP, orange, 21, apple, 1500 }
{ TCP, orange, 21, apple, 1501 }

Le comunicazioni possono quindi essere distinte.

Demultiplexing di richieste in arrivo

In funzione del tipo di protocollo indicato dall'header del pacchetto


Livello concettuale  Oggetti passati
Application messaggi o stream
Transport Transport Protocol Packets
Internet network
interface
IP Datagram
Hardware Network specific frame