Il Livello Data Link

Lezione 6 - Il livello data link, le sue funzioni i suoi servizi.

La scorsa lezione abbiamo analizzato il livello fisico. In questo capitolo, invece, ci addentriamo nel livello data link, il secondo layer dello stack protocollare ISO/OSI.

Il livello data link svolge diversi compiti; si occupa di:

  • fornire al livello rete un’interfaccia ben definita;
  • gestire gli errori di trasmissione;
  • gestire il flusso di dati, cosicché i ricevitori lenti non “collassino” a causa di mittenti troppo veloci.

NIC

Il dispositivo con cui un dispositivo si connette alla rete si chiama Network Interface Card (NIC). Una NIC elabora il livello fisico e una parte del livello data link.

Frame

Mentre il livello fisico spedisce i singoli bit, il livello data link li incapsula in frame. Ogni frame è suddiviso in:

  • header;
  • payload;
  • trailer.

Servizi

Il principale servizio del livello data link è permettere al livello rete di trasferire dati tra il livello rete del mittente e il livello rete del destinatario. È la colla che tiene tutto insieme.

Framing

Il livello data link per trasmettere i dati che riceve in input dal terzo layer li spezza in frame.

Checksum

Per ogni frame il secondo layer calcola un numero checksum, che permette al ricevente di identificare se ci sono stati degli errori di trasmissione. Ci sono quattro metodi principali per raggiungere questo scopo:

  • conteggiare i byte trasmessi;
  • inserire dei byte di flag con stuffing;
  • inserire dei bit di flag con stuffing;
  • coding violation del livello fisico.

Conteggio dei byte

Il conteggio dei byte usa un campo nell’header per indicare quanti byte contiene il frame. Il problema è che questo numero può essere corrotto durante il trasporto.

Ad esempio, un 5 può diventare un 8. Il ricevente, quindi, rischia di perdere la sincronizzazione, perché non sa dove termina un frame e inizia quello successivo.

Byte di flag

Il byte di flag è un byte, che ha sempre la stessa sequenza di bit, che viene posto all’inizio e alla fine di ogni frame per delimitarlo.

Byte di flag

In questo modo se il ricevente perde la sincronizzazione deve solo cercare due byte di flag consecutivi. Con questa tecnica, quindi, nel caso in cui si verificassero errori di trasmissione verrebbero scartati solo due frame.

La tecnica precedente, invece, causa un effetto a cascata che può ripercuotersi su più frame consecutivi.

Il problema, però, è che un flusso dati - in particolar modo se multimediale - può contenere accidentalmente una sequenza di bit identica al byte di flag. Una soluzione è inserire uno speciale escape byte prima di ogni occorrenza di un finto flag nel payload.

Il ricevente, quindi, rimuove gli escape byte: questa tecnica è detta byte stuffing.

Byte stuffing

Se anche il byte di escape dovesse apparire nel flusso dei dati verrebbe anteposto ad anch’esso un escape byte.

Bit di flag

Usare il byte di flag impone di lavorare a gruppi di otto bit. Per operare con parole di lunghezza differente si usa il bit di flag, che raggruppa i bit diversamente. Per il resto, funziona esattamente come il metodo con byte di flag e stuffing, perciò non ci addentreremo ulteriormente nelle sue caratteristiche.

Coding violation

Il layer fisico può usare la codifica 4B/5B. Questa codifica permette di mappare gruppi di 4 bit su 5 bit, per avere a disposizione delle sequenze di bit che sicuramente non possono far parte del payload.

Delle trentadue combinazioni disponibili con 5 bit (2^5 = 32), 16 rimangono inutilizzate (2^4 = 16). Si possono quindi usare alcune di queste combinazioni per delimitare l’inizio e la fine di un frame, attuando quindi una coding violation (violazione di codifica) del livello fisico.

In questo modo non serve fare stuffing dei dati.

Controllo degli errori

Ci sono vari metodi che permettono di controllare se i dati trasmessi sono arrivati danneggiati, come:

  • bit di parità;
  • checksum;
  • cyclic redundancy check (CRC).

Livello Data Link

In questa lezione, che segue quella sul livello fisico, abbiamo analizzato il livello data link. Questo layer è suddiviso in due sottolivelli: Media Access Control (MAC) e Logical Link Control (LLC). Ne parleremo nella prossima lezione.

In particolare, esploreremo nel dettaglio il sublayer MAC e i protocolli che implementa per trasmettere i datisu reti cablate (wired) e reti senza fili (wireless) 🤩.