Livello datalink

Da Wikipedia, l'enciclopedia libera.

Stack ISO/OSI   Modifica
7 Livello di applicazione
6 Livello di presentazione
5 Livello di sessione
4 Livello di trasporto
3 Livello di rete
2 Livello Data Link
  • Sottolivello LLC
  • Sottolivello MAC
1 Livello fisico

Il livello datalink è il secondo livello dei protocolli del modello ISO/OSI per l'interconnessione di sistemi aperti. Questo livello riceve pacchetti dal livello di rete e forma i frame che vengono passati al successivo livello fisico.

Il Livello di Datalink deve svolgere diverse funzioni specifiche:

  • Raggruppare i bit del livello fisico in pacchetti chiamati frame (framing);
  • Controllare e gestire gli errori di trasmissione;
  • Regolare il flusso della trasmissione fra sorgente e destinatario (controllo di flusso).

Indice

[modifica] Framing

Al fine di fornire servizi al livello di rete, il livello data link deve usufruire dei servizi fornitigli dal livello fisico. L'approccio consueto del livello data link è quello di dividere il flusso dei bit in pacchetti (adattatti appunto ad una trasmissione su una rete a pacchetto), e calcolarne la Checksum. Vari metodi vengono utilizzati per la suddivisione dei bit in pacchetti o frame:

  • Conteggio dei caratteri.
  • Caratteri di inizio e fine.
  • Indicatori (flag) di inizio e fine.

Il metodo del conteggio di caratteri (ottenuto specificando nel campo d’intestazione del pacchetto il numero di caratteri del frame) è raramente utilizzabile poiché, se il campo che contiene il numero di caratteri si rovina (altera) durante la trasmissione, non si può più individuare dove comincia il frame successivo; vengono quindi utilizzate le altre tecniche.

Nella trasmissione orientata al byte (il frame mantiene la suddivisione in byte) il frame viene preceduto dalla sequenza di caratteri ASCII DLE STX (Data Link Escape Start of TeXt) e finisce con la sequenza DLE ETX (Data Link Escape End of TeXt). Se un frame si rovina e la destinazione perde la sincronizzazione basta trovare il successivo DLE STX o DLE ETX. Il carattere DLE però può comparire casualmente dentro al frame quando vengono trasmessi dati binari come programmi oggetto o numeri in virgola mobile; perché questi caratteri non interferiscano viene aggiunto un ulteriore DLE (che viene rimosso a destinazione prima di passare al frame al livello di rete) in modo che solo i DLE singoli vengano interpretati come delimitatori; questa tecnica si chiama character stuffing. Nella trasmissione orientata al bit (il frame può contenere un numero qualsiasi di byte) ogni frame inizia e finisce con la sequenza 01111110 chiamata flag: questa sequenza può comparire casualmente nei dati, perciò in trasmissione dopo cinque 1 consecutivi viene sempre inserito uno 0 nel flusso di bit, indipendentemente dal fatto che il bit successivo sia 1 o 0, mentre in ricezione bisogna provvedere ad eliminare i bit inseriti, rimuovendo sempre uno 0 dopo cinque 1; questa tecnica è chiamata bit stuffing.

[modifica] Controllo degli Errori

Come detto, la stazione mittente del livello data-link riceve i dati dal livello superiore e li suddivide in frame prima di affidarli al livello fisico per la trasmissione su canale, aggiungendo ad esso un codice per il controllo degli errori (Integrità dati) di trasmissione in ricezione (Checksum).

Quando un pacchetto arriva a destinazione la Checksum viene ricalcolata dallo stesso livello data-link del sistema ricevente. Se il risultato è diverso da quello contenuto nel pacchetto, il livello data-link riconosce che è stato commesso un errore e prende adeguati provvedimenti (come ad esempio scartare il pacchetto e spedire un messaggio di errore in risposta al mittente).

In generale si hanno due tipi di codici di controllo, i codici rilevatori che permettono soltanto di capire che il frame non è corretto ed i codici correttori che permettono non solo di capire se si è verificato un errore, ma anche di individuare la posizione dell’errore e di conseguenza correggerlo. Questi ultimi codici richiedono molti più bit dei codici rilevatori e quindi sprecano ampiezza di banda; di solito perciò vengono usati i codici rilevatori.

In caso di errore, se il servizio è inaffidabile il frame può essere semplicemente scartato; se la linea deve essere affidabile bisogna che tutti i frame arrivino correttamente; se si usa un codice rilevatore il ricevente deve richiedere la ritrasmissione dei frame errati.

La scelta tra codici rilevatori e correttori può dipendere anche dalla velocità delle linee (per linee a bassa velocità aspettare la ritrasmissione potrebbe richiedere troppo tempo) o affidabilità (se il tasso di errore sulla linea è molto basso non vale la pena sprecare molta per un codice correttore) o dal tipo di servizio richiesto (real-time o meno).

Il modo consueto per assicurare una consegna affidabile è quello di fornire al mittente un riscontro di quello che sta accadendo all'altro capo della linea. Tipicamente il protocollo richiede che il ricevente rispedisca alcuni speciali pacchetti di controllo con valore positivo o negativo a seconda dei pacchetti ricevuti. Se il mittente riceve un riscontro positivo su di un pacchetto spedito, sa che esso è arrivato correttamente. Se invece ottiene un riscontro negativo significa che qualcosa è andata male e che occorre ritrasmettere il pacchetto. Una complicazione aggiuntiva potrebbe derivare dalla possibilità che i problemi hardware causino la sparizione totale del pacchetto. Se un pacchetto, non arriva a destinazione, il mittente non aspetterà all'infinito, infatti viene utilizzato un timer, che viene avviato quando i dati vengono trasmessi, se il timer supera la soglia limite(programmata) senza ricevere l'ack (Acknowledgment o conferma), rimanderà di nuovo i pacchetti. Tuttavia, se il pacchetto o il messaggio di riscontro vengono persi, il timer scade, e la stazione mittente, non ricevendo conferma, è costretta a reinviare i dati, ma a questo punto il mittente potrebbe riceverebbe due o più volte lo stesso pacchetto. Per risolvere questo problema, i pacchetti inviati vengono numerati, così il sistema ricevente, nel caso in cui riceva un numero di pacchetto uguale al precedente, dunque una copia del pacchetto, lo scarta. Questa tecnica è nota come Stop and wait; le altre tecniche maggiormente utilizzate per il controllo degli errori sono il Codice di Hamming e il CRC (Codice di Ridondanza Ciclica).

[modifica] Controllo di Flusso

Un altro importante problema di progettazione che si ritrova nel livello di data link è quello gestire una linea condivisa quando più nodi vogliono inviare messaggi nello stesso tempo e inoltre deve decidere cosa fare di un mittente che sistematicamente tende a trasmettere pacchetti più velocemente di quanto il ricevente li accetti. Questa situazione può facilmente essere riscontrata quando il mittente è dislocato su una macchina veloce e il ricevente su una macchina lenta. Il mittente continua a spedire pacchetti ad alta velocità, fino a quando il ricevente non è completamente sopraffatto. Anche se la trasmissione è esente da errori, a un certo punto il ricevente non sarà in grado di gestire i pacchetti in arrivo e inizierà a perderli. La tipica soluzione è quella di introdurre un controllo di flusso per obbligare il mittente a rispettare la velocità del ricevente nello spedire i pacchetti. Questa imposizione solitamente richiede un certo tipo di meccanismo di riscontro in modo che il mittente possa essere avvisato se il ricevente è in grado di ricevere o meno. Nel caso in cui invece più nodi vogliono inviare contemporaneamente dei messaggi, si tende ad introdurre un controllo centralizzato, creando un singolo nodo di controllo, responsabile di determinare chi ottiene la priorità all'interno della rete; il nodo successivo quindi, controllerà quando la rete non sarà più occupata, così da poter inviare il messaggio appena questa diventerà libera. Può accadere però, che più nodi monitorizzano la rete e che appena questa sia libera, inviano immediatamente i messaggi, in questo caso si avranno dei problemi di collisione; per ovviare a questo problema, i nodi che monitorizzano la rete attenderanno un tempo casuale prima di inviare i messaggi, poiché è improbabile che i nodi scelgano lo stesso istante per inviare i dati.

[modifica] Protocolli

Nello stack IP, in alcuni casi, il livello datalink consiste nell'utilizzo di una rete realizzata con un altro protocollo per il trasporto di pacchetti IP. Questo avviene ad esempio con X.25, Frame Relay, Asynchronous Transfer Mode. Sono protocolli del livello datalink Ethernet (per le LAN) e PPP, HDLC e ADCCP per le connessioni punto a punto (cioè tra due stazioni collegate tra loro fisicamente).

Può essere o non essere affidabile: molti protocolli di data link non utilizzano conferme e alcuni potrebbero addirittura non controllare se sono stati commessi errori di trasmissione. In questo caso devono essere i livelli superiori ad effettuare il controllo di flusso, il controllo degli errori e gestire le conferme (e relative ritrasmissioni).

In alcune reti, come le LAN IEEE 802, questo livello è diviso nei sottolivelli MAC e LLC. Quest'ultimo è comune a tutti i livelli MAC, come token ring e IEEE 802.11 ma anche a livelli MAC che non fanno parte dello standard 802, come FDDI.

[modifica] Sottolivello LLC

Il sottolivello superiore è Logical link control (LLC), e può fornire servizi di controllo di flusso, conferma, rilevazione (o correzione) degli errori. I protocolli PPP e HDLC fanno parte di questo sottolivello.

I protocolli di sottolivello LLC che forniscono il servizio di conferma di o garanzia di ricezione dei dati devono prevedere messaggi di conferma avvenuta ricezione (acknowledge, o ACK). Il trasmittente può attendere il riscontro di ciascun messaggio prima di trasmettere il successivo, oppure può continuare a trasmettere fino al raggiungimento di un numero massimo di messaggi non ancora confermati dal ricevente, nei cosiddetti protocolli finestrati.

Nei protocolli con finestra ciascun pacchetto trasmesso è identificato con un numero progressivo all'interno della finestra, detto numero di sequenza (sequence number); i messaggi di conferma devono riportare il numero di sequenza del pacchetto che riscontrano.

I messaggi di conferma possono essere cumulativi ("ricevuti i pacchetti fino a N"), o richiedere la ritrasmisione cumulativa ("ritrasmettere i pacchetti fino a N") o selettiva dei soli pacchetti non ricevuti correttamente. In alcuni casi il riscontro dei messaggi ricevuti utilizza un messaggio dedicato, in altri casi il riscontro viene inserito in campi specifici dei messaggi trasmessi in direzione opposta (piggyback).

[modifica] Sottolivello MAC

Il sottolivello inferiore è Media Access Control. A volte questo si riferisce al sottolivello che stabilisce chi può utilizzare il mezzo trasmissivo in un certo momento (di solito CSMA/CD). Altre volte si riferisce in una struttura a frame che contiene indirizzi MAC. Ci sono essenzialmente due tipi: distribuito e centralizzato. Entrambi possono essere paragonati al dialogo di due persone, ad esempio, in una rete fatta di persone che parlano, come una conversazione, cerchiamo di capire da chi è intorno a noi se stanno per iniziare a parlare. Se due persone iniziano a parlare insieme, smetteranno subito e inizieranno un lungo scambio di "No, parla prima tu".

Il sottolivello MAC stabilisce dove iniziano i frame di dati e dove finiscono. In una rete di posta ordinaria, ogni lettera è un frame di dati, e ognuno capisce dove iniziano e finiscono perché sono all'interno di una busta. Si può anche specificare che una lettera inizierà con un'espressione come "Caro Tizio" e finirà con un'espressione come "Distinti saluti".

[modifica] Interfacce

Il livello di data link è spesso implementato come un driver della scheda di rete. Il sistema operativo avrà una certa interfaccia software tra questo livello e quello superiore (di rete). Questa interfaccia non è un livello, ma più uno standard per la comunicazione tra livelli. Alcuni esempi:

[modifica] Voci correlate

[modifica] Bibliografia

Reti di Computer.TANENBAUM Reti e protocolli. Fabrizia Scorzoni

  • Telematica Portale Telematica: accedi alle voci di Wikipedia che parlano di reti, telecomunicazioni e protocolli di rete
Strumenti personali