Il livello di collegamento è realizzato nella NIC (o scheda di rete).
Quando vengono spediti dei dati da un nodo all'altro essi sono accompagnati da bit EDC (error detection and correction).
Durante il viaggio verso la destinazione i bit possono subire errori.
Il checksum è implementato nel livello di trasporto poiché il livello di trasporto essendo implementato a livello software necessita una certa rapidità.
I bit del dato vengono suddivisi in gruppi di un certo numero di bit, normalmente 16, vengono sommati tra di loro, eventuali riporti alla cifra più significativa vengono nuovamente sommati alla cifra risultante. Alla fine si effettua il complemento a uno (inversione di tutti bit) ottenendo un codice di checksum. Il dato viene spedito insieme a questo codice. Il destinatario sommerà le word di 16 bit tra di loro, a tal risultato sommerà anche il checksum, e se non si sono verificati errori, il destinatario otterrà:
La tecnica più semplice consiste nell'utilizzo di un bit detto di parità.
Diciamo che un mittente stia spedendo dei dati D, a questi il mittente aggiunge un bit che rende pari il numero di bit "1".
Dati in bit di D | Bit di partità |
---|---|
0111000110101011 | 1 |
Quando il destinatario riceve il messaggio, non deve fare altro che controllare se il numero di bit "1" è pari o no.
Questo potrebbe andar bene se si verificassero errori unici in un singolo messaggio, statisticamente però è verificato che si verificano più errori in un singolo messaggio, quindi questa tecnica non basta.
Una tecnica migliore consiste nel controllo di parità bidimensionale:
I bit vengono disposti in una tabella il più quadrata possibile. Per ogni riga e colonna si controlla si aggiunge (se necessario) un bit "1" per rendere pari il numero di bit "1", altrimenti si mette 0.
Nella seconda riga della colonna il bit di parità è 0, ma in realtà ci sono 3 bit a "1", quindi dovrebbe essere 1, il che vuol dire che la riga contiene un errore. Controllando le colonne si riesce a trovare anche un errore nella seconda colonna. Questo consente di rilevare errori nei dati, ma anche il punto in cui l'errore si verifica.
Quando viene calcolata la parità con una tabella del genere, i bit spediti sono i bit che appaiono nella tabella presi per riga:
riga1, riga2, riga3, riga4
A destinazione vengono disposti in una tabella simile per verificare la presenza di errori.
Si noti che se si verificasse un numero pari di errori in una colonna o in una riga, esso non potrebbe essere verificabile.
La figura illustra il calcolo per:
l'operazione effettuata è quella di XOR (1 se i bit sono diversi, 0 altrimenti).
Quando tra due blocchi di bit il risultato dello XOR è 0 per i bit più a sinistra, si mette il numero 1 in alto (azzurro), quando anche il secondo (o i successivi) sono anch'essi zero, si mettere 1 in alto (azzurro e evidenziato di arancione).
L'algoritmo si ferma quando la lunghezza del blocco di bit con cui si opera è minore o uguale a r.
L'ultimo blocco di bit di lunghezza
Il destinatario riesegue il controllo di ridondanza ciclica con lo stesso generatore, se il risultato ottenuto è di tutti 0, allora non ci sono errori, altrimenti si.
CRC consente il rilevamento di errori consecutivi inferiori a
CRC consente il rilevamento di qualunque numero di errori (pari o dispari.)
In un canale broadcast vi sono più mittenti e più destinatari.
Il problema di questo tipo di canale è la gestione degli accessi multipli
Dato che in questo contesto un nodo può sia trasmettere che ricevere, c'è la probabilità che più nodi trasmettano contemporaneamente, causando delle collisioni, i nodi possono ricevere un miscuglio di diversi frame, causando corruzione dei dati e perdita di essi.
Un hub è un dispositivo del livello fisico che agisce sui singoli bit (piuttosto che sui frame). Quando un bit giunge all'interfaccia di un hub, l'hub rigenera il bit amplificandone il segnale.
All'inizio le ethernet LAN usavano una topologia a stella basata su hub.
Nel 2000 vennero introdotti gli switch. Gli switch sono dei commutatori di pacchetto (come i router). I router operano a livello IP (3), mentre gli switch a livello di collegamento (2).
Il payload di un frame Ethernet è un datagramma IP (Ethernet può trasportare anche altri tipi di pacchetti). Il destinatario riceve il frame dal livello fisico, estrae il datagramma IP e lo passa a livello di rete.
Slotted ALOHA richiede che tutti gli slot sincronizzino le loro trasmissioni a partire dall'inizio di uno slot. ALOHA non ha slot. Quando arriva un frame, esso viene spedito. Se si verifica una collisione con probabilità P lo rispedisce, con probabilità 1 - P attende il tempo di trasmissione di un frame, e poi lo ritrasmette con probabilità P o con probabilità 1 - P, attende e così via.
ALOHA è peggiore di slotted ALOHA.
Assunzioni:
Indichiamo con P una probabilità.
Operazioni slotted ALOHA:
Quando è attivo solo un nodo esso può trasmettere alla massima veloccità di trasmissione.
Quando sono attivi più slot, in un certo numero di slot vi saranno collisioni e quindi tali slot andranno sprecati. Inoltre una grande frazione degli slot risulterà vuota perché i nodi trasmettono in base alla politica probabilistica. Gli unici slot non sprecati sono quelli in cui trasmette solo un nodo, tale slot è detto riuscito.
In ALOHA un nodo trasmette indipendentemente da ciò che fanno gli altri nodi. Con CSMA un nodo ascolta su un canale e se c'è già una trasmissione in corso attende il suo completamento, inoltre un nodo CSMA ascolta anche durante la trasmissione e se rileva un frame che interferisce col suo interrompe la trasmissione, attende un tempo randomico e poi ripete il processo.
L'attesa casuale è necessaria, non deve essere troppo grande da lasciare il canale inutilizzato per troppo tempo, né troppo piccolo da provocare nuove collisioni: viene usato un algoritmo detto attesa binaria esponenziale.
Quando un nodo riscontra l'n-esima collisione durante la trasmissione di un dato frame, stabilisce casualmente un valore
Il tempo è suddiviso in intervalli: time frame, ciascuno di essi e diviso in slot. Ad ogni nodo è assegnato un slot, all'interno dell'intervallo in cui può trasmettere
Svantaggi:
FDM divide la banda R tra i nodi partecipanti (N).
Ogni nodo ha una banda di R/N.
FDM ha lo stesso limite di TDM, ogni nodo ha un tasso trasmissivo di R/N.
Se un nodo sta trasmettendo, ma gli altri no, il nodo può usare solo R/N come banda, il resto della banda viene sprecato.
In CDMA ad ogni nodo viene assegnato un codice, se tali codice sono scelti in modo appropriato (se sono ortogonali tra loro), i nodi potranno codificare i bit con quel codice e trasmettere simultaneamente ai rispettivi destinatari, i rispettivi destinatari saranno in grado di ricevere correttamente i dati.
Un protocollo ad accesso multiplo deve avere due caratteristiche:
ALOHA e CSMA hanno la prima ma non la seconda.
Entrano in gioco i protocolli a rotazione per superare tale limite:
Uno switch riceve frame in ingresso e li trasmette in uscita.
Uno switch è trasparente ai nodi.
Le porte di uscita degli switch hanno dei buffer.
Il filtraggio è una funzione degli switch che determina se un frame deve essere inoltrato ad una qualche interfaccia o scartato.
L'inoltro consiste nell'individuare l'interfaccia verso cui il frame deve essere diretto. Per fare ciò gli switch hanno delle tabelle di commutazione, che contengono:
Gli switch auto-apprendono e costruiscono in automatico la propria tabella di commutazione.
All'inizio la tabella è vuota. Quando giunge un frame lo switch salva in tabella, il MAC sorgente, l'interfaccia da cui arriva il frame e il tempo di arrivo.
Dopo un certo periodo (aging time) se lo switch non ha ricevuto frame da un certo indirizzo sorgente, elimina la voce corrispondente con esso dalla tabella.
Interconnettendo degli switch si riesce a separare la rete in diversi gruppi, tuttavia i messaggi broadcast raggiungerebbero tutti i gruppi comunque.
Per ogni gruppo da creare sarebbe richiesto uno switch (costoso).
Le VLAN consentono di superare tali limiti.
Un amministratore di rete può organizzare le porte di uno switch gruppi, ciascun gruppo costituisce una VLAN.
In questa figura lo switch origina due VLAN, le porte da 2 a 8 sono riservate alla VLAN per il dipartimento di elettronica, mentre le porte da 9 a 15 per il dipartimento di informatica. Le porte 1 e 16 sono inutilizzate.
I frame delle due VLAN sono isolati tra di loro.
Per far comunicare due VLAN si potrebbe collegare un router alla porta 1 (libera nella figura) e far passare i pacchetti tra una VLAN e l'altra da quel router. (I produttori fanno si che questa funzione sia integrata nello stesso dispositivo).
Se si volessero interconnettere due LAN si possono usare due approcci: