Introduction to the Link Layer
Qualsiasi dispositivo che esegue un link-layer protocol viene definito node. Ci riferiamo al canale di comunicazione che connette i nodi adiacenti tra la communication path chiamandoli links. Per fare in modo che un datagramma sia trasferito da un source host ad un destination host, deve passare tra ogni individual links nell’end-to-end path.

Su un certo link, un nodo trasmettente incapsula il datagramma in un link-layer frame e trasmette il frame nel link.
The Services Provided by the Link Layer
- Framing. Quasi tutti i protocolli link-layer incapsulano ogni network layer datagram in un link-layer frame prima di trasmetterlo sul link. Un frame consiste di un data field, dove viene inserito il datagramma, e un numero di header fields. La struttura del frame è specificata dal link-layer protocol.
- Link access. Un medium access control (MAC) protocol specifica le regole alla quale un frame viene trasmesso in un link. Per i links point-to-point che hanno un singolo sender e un singolo receiver, il MAC protocol è semplice (o non esistente) - il sender può inviare un frame quando il link è idle - multiple access problem. Il MAC protocol serve a coordinare il frame transmissions per molti nodi.
- Reliable delivery. Quando un link-layer protocol da un reliable delivery service, garantisce di muovere ogni network-layer datagram nel link senza errori. Similarmente al transport-layer reliable delivery service, un link-layer reliable delivery service può essere raggiunto con acknowledgments e retransmissions. Un link-layer reliable delivery service viene spesso utilizzato per links che sono soggetti a high error rates, come wireless link, con l’obiettivo di correggere gli errori localmente - nel link dove è avvenuto - rispetto a forzare una end-to-end retrasmission dei dati attraverso un transport o application layer protocol. Tuttavia, link-layer reliable delivery può essere considerato un overhead non necessario per piccoli bit-error links, includendo fibra, coax, e altri twisted-pair copper links. Per questa ragione, molti wired link-layer protocols non danno un reliable delivery service.
- Error detection and correction. Il link layer hardware in un receiving node può decidere incorrettamente che un bit in un frame è zero quando è stato trasmesso come uno, e viceversa. Questi bit errors sono introdotti da signal attenuation e electromagnetic noise. Viene quindi effettuato un error check. Error correction è simile all’error detection, apparte che il receiver non trova l’errore ma può anche determinare esattamente dove è avvenuto l’errore.
Where Is the Link Layer Implemented?
Per la maggior parte dei casi, il link layer viene implementato nel network adapter, anche conosciuto come network interface card (NIC). Al cuore del network adapter c’è il link-layer controller, solitamente un singolo, special-puprose chip che implementa molti servizi del link-layer services.
Nel sending side, il controller prende il datagramma che è stato creato e lo immagazzina nella memoria nei layer superiori, incapsula il datagramma in un link-layer frame, e successivamente trasmette il frame nel communication link, seguendo il link-access protocol. Nel receiving side, un controller riceve l’intero frame, e estrae il network-layer datagram. Se il link layer performa error detection, allora è il sending controller che imposta gli error-detection bits nel frame header ed è il receive controller che performa error detection.

Error-Detection and Correction Techniques

Al sending node D, i dati che devono essere protetti da bit errors, hanno in aggiunta un error-detection and -correction bits (EDC). Entrambe D e EDC sono inviate al receiving node in un link layer frame. Al receiving node, una sequenza di bits, D’ e EDC’ vengono ricevuti. Nota che D’ e EDC’ possono essere diversi da D e EDC come risultato di in-transit bit flips.
La difficoltà del receiver è quella di determinare se D’ è uguale a D o no, avendo solamente D’ e EDC’.
Le tecniche di error-detection and -correction permettono qualche volta al receiver, ma non sempre, di trovare errori. Anche con l’utilizzo di error-detection bits ci possono essere degli undetected errors. Di conseguenza, il receiver potrebbe consegnare un corrupted datagram al network layer
Parity Checks
La forma più semplice di error detection è quella di utilizzare un singolo parity bit.