Competenze del livello data link
Questo livello ha le seguenti incombenze principali:
offrire servizi al livello network con un'interfaccia ben definita;
determinare come i bit del livello fisico sono raggruppati in
frame (framing);
gestire gli errori di trasmissione;
regolare il flusso della trasmissione fra sorgente e destinatario.
Servizi offerti al livello Network
Il servizio principale è trasferire dati dal livello network
della macchina di origine al livello network della macchina di destinazione.
Come sappiamo, la trasmissione reale passa attraverso il livello fisico,
ma noi ragioniamo in termini di dialogo fra due processi a livello data
link che usano un protocollo di livello data link.
Vediamo ora un tipico esempio di funzionamento. Consideriamo un router
con alcune linee in ingresso ed alcune in uscita. Ricordiamo che il routing
avviene a livello tre (network), quindi il router gestisce i livelli uno,
due e tre.
Quando al router arrivano dei bit da una linea fisica, l'hardware apposito
se ne accorge (siamo a livello 1) e li passa al corrispondente SW/HW di
livello due.
Il SW/HW di livello due (data link), che in genere è contenuto in
un chip sulla scheda (o adattatore) di
rete
(tipico esempio è una scheda Ethernet o un Modem+Scheda di Accesso Remoto)
fa i controlli opportuni:
framing;
controllo errori di trasmissione;
controllo numero di frame (se necessario).
Se tutto è OK, il SW/HW di livello due genera un interrupt alla CPU,
che chiama in causa il SW di livello tre (network):
questo è tipicamente un processo di sistema, al quale viene passato
il pacchetto contenuto nel frame di livello due per l'ulteriore
elaborazione;
l'elaborazione consiste nel determinare, sulla base delle caratteristiche
del pacchetto (in particolare dell'indirizzo di destinazione), su quale
linea in uscita instradarlo.
Presa questa decisione, il SW di livello tre consegna il pacchetto al
corrispondente SW/HW di livello due, che lo imbusta in un nuovo frame e
lo consegna al sottostante livello fisico (ossia quello relativo alla
linea in uscitaprescelta).
Il livello uno accetta un flusso di bit grezzi e cerca di farli arrivare
a destinazione. Però:
il flusso non è esente da errori;
possono arrivare più o meno bit di quanti sono stati inviati.
E' compito del livello due rilevare, e se possibile correggere, tali errori.
L'approccio usuale del livello due è il seguente.
In trasmissione:
spezza il flusso di bit che arriva dal livello tre in una serie
di frame;
calcola un'apposita funzione (checksum)
per ciascun frame;
inserisce il checksum nel frame;
consegna il frame al livello uno, il quale lo spedisce come sequenza di
bit.
In ricezione:
riceve una sequenza di bit dal livello uno;
ricostruisce da essa un frame dopo l'altro;
per ciascun frame ricalcola il checksum;
se esso è uguale a quello contenuto nel frame questo
viene accettato, altrimenti viene considerato errato e quindi scartato.
3.1) Rilevamento e correzione errori
Ci sono molti fattori che possono provocare errori,
sopratutto sul local loop e nelle trasmissioni wireless. Viceversa, essi
sono piuttosto rari nei mezzi più moderni quali le fibre ottiche.
Gli errori sono dovuti in generale a:
rumore di fondo;
disturbi (ad es. fulmini) improvvisi;
interferenze (ad es. motori elettrici).
Ci sono due approcci al trattamento degli errori:
includere abbastanza informazione aggiuntiva in modo da poter ricostruire
il messaggio originario (correzione
dell'errore);
includere meno informazione aggiuntiva, in modo da accorgersi
che c'è stato un errore, senza per questo essere in grado di
correggerlo (rilevazione
dell'errore).