Lo strato Collegamento di dati della norma 802.11 è composto da due substrati: lo strato di controllo del collegamento logico (Logical Link Control, sigla LLC) e lo strato di controllo di accesso al supporto (Media Access Control o MAC).
Lo strato MAC definisce due metodi di accesso diversi :
In una rete locale Ethernet classica, il metodo di accesso utilizzato per i terminali è il CSMA/CD (Carrier Sense Multiple Access with Collision Detect), per cui ogni terminale è libero di comunicare in qualsiasi momento. Ogni terminale che invia un messaggio verifica che nessun altro messaggio sia stato inviato allo stesso momento da un altro terminale. Se è questo il caso, i due terminali aspettano per un tempo aleatorio prima di ricominciare ad emettere.
In un ambiente senza fili questa procedura non è possibile dato che le due stazioni comunicanti con un ricettore non si sentono reciprocamente per forza in ragione del loro raggio di portata. Così la norma 802.11 propone un protocollo simile dettoCSMA/CA (Carrier Sense Multiple Access with Collision Avoidance).
Il protocollo CSMA/CA usa un meccanismo per evitare le collisioni basato sul principio di accusa di ricezione reciproca tra l'emittente e il ricevente :
La stazione che vuole emettere ascolta la rete. Se la rete è occupata, la trasmissione sarà differita. In caso contrario, se il media è libero per un tempo dato (detto DIFS per Distributed Inter Frame Space), allora la stazione può emettere. La stazione trasmette un messaggio detto Ready to Send (sigla RTSche significa pronto ad emettere) che contiene delle informazioni sul volume dei dati che vuole emettere e sulla velocità di trasmissione. Il ricevente (generalmente un punto di accesso) risponde un Clear To Send (CTS, che significa Il campo è libero per emettere), poi la stazione comincia l'emissione dei dati.
Alla ricezione di tutti i dati emessi dalla stazione, il ricevente invia un'accusa di ricezione (ACK). Tutte le stazioni vicine aspettano allora per un periodo di tempo che considera essere necessario alla trasmissione del volume di informazioni da emettere alla velocità annunciata.
Lo strato MAC del protocollo 802.11 offre un meccanismo di controllo di errore che permette di verificare l'integrità delle trame. Si tratta di una differenza fondamentale con lo standard Ethernet. In effetti Ethernet non propone nessun sistema di rilevamento o di correzione degli errori, dato che questo compito è lasciato ai protocolli di trasporto del livello superiore (TCP).
In una rete senza fili il tasso di errore è più elevato, ragione per cui un controllo di errore è stato integrato a livelli dello strato collegamento di dati. Il controllo di errore è basato sul polinomio di grado 32 che segue :
x32+x26+x23+x22+x16+x12+x10+x8+x7+x5+x4+x2+x+1
D'altra parte il tasso di errore di trasmissione sulle reti senza fili aumenta generalmente con dei pacchetti di dimesione importante, ragione per cui la norma 802.11 offre un meccanismo di frammentazione, che permette di scomporre una trama in più pezzi (frammenti).
Lo standard 802.11 definisce il formato delle trame scambiate. Ciascuna trama è costituita da un'intestazione (detta MAC header, lunga 30 bte), da un corpo e da un FCS (Frame Sequence Check) che permette la correzione di errore.
| FC (2) | D/ID (2) | Indirizzo 1 (4 byte) |
Indirizzo 2 (4 byte) |
Indirizzo 3 (4 byte) | SC (2) |
Indirizzo 4 (4 byte) |
|
(da 0 a 2312 byte)
|
|||||||
Ecco la descrizione di questi campi :
| Versione del protocollo (2 bits) | Tipo (2 bits) | Sotto tipo (4 bits) |
|||||
| To DS (1 bit) | From DS (1 bit) | More Frag (1 bit) | Retry (1 bit) |
Power Mgt (1 bit) | More Data (1 bit) | WEP (1 bit) | Order (1 bit) |
La tabella sottostante riassume i tipi e i sotto tipi di trame incapsulati nel campo di controllo della trama dell'intestazione MACnbsp;:
| Tipo | Descrizione del tipo | Sotto tipo | Descrizione del sotto tipo |
|---|---|---|---|
| 00 | Management (gestione) | 0000 | Association request (richiesta di associazione) |
| 00 | Management (gestione) | 0001 | Association response (risposta d'associazione) |
| 00 | Management (gestione) | 0010 | Reassociation request (richiesta ri-associazione) |
| 00 | Management (gestione) | 0011 | Reassociation response (risposta di ri-associazione) |
| 00 | Management (gestione) | 0100 | Probe request (richiesta di inchiesta) |
| 00 | Management (gestione) | 0101 | Probe response (risposta di inchiesta) |
| 00 | Management (gestione) | 0110-0111 | Reserved (riservato) |
| 00 | Management (gestione) | 1000 | Beacon (tag) |
| 00 | Management (gestione) | 1001 | Annoucement traffic indication message (ATIM) |
| 00 | Management (gestione) | 1010 | Disassociation (dissociazione) |
| 00 | Management (gestione) | 1011 | Authentication (autentificazione) |
| 00 | Management (gestione) | 1100 | Deauthentication (disautentificazione) |
| 00 | Management (gestione) | 1101-1111 | Reserved (riservato) |
| 01 | Control (controllo) | 0000-1001 | Reserved (riservato) |
| 01 | Control (controllo) | 1010 | Power Save (PS)-Poll (economia d'energia) |
| 01 | Control (controllo) | 1011 | Request To Send (RTS) |
| 01 | Control (controllo) | 1100 | Clear To Send (CTS) |
| 01 | Control (controllo) | 1101 | ACK |
| 01 | Control (controllo) | 1110 | Contention Free (CF)-end |
| 01 | Control (controllo) | 1111 | CF-end + CF-ACK |
| 10 | Data (dati) | 0000 | Data (dati) |
| 10 | Data (dati) | 0001 | Data (dati) + CF-Ack |
| 10 | Data (dati) | 0010 | Data (dati) + CF-Poll |
| 10 | Data (dati) | 0011 | Data (dati) + CF-Ack+CF-Poll |
| 10 | Data (dati) | 0100 | Null function (no Data (dati)) |
| 10 | Data (dati) | 0101 | CF-Ack |
| 10 | Data (dati) | 0110 | CF-Poll |
| 10 | Data (dati) | 0111 | CF-Ack + CF-Poll |
| 10 | Data (dati) | 1000-1111 | Reserved (riservato) |
| 11 | Data (dati) | 0000-1111 | Reserved (riservato) |
La Point Coordination Function (PCF) detta modalità di accesso controllato. Essa è fondata sull'interrogazione a turno delle stazioni, o polling, controllate dal punto di accesso. Una stazione non può emettere se non è autorizzata e non può ricevere se non è selezionata. Questo metodo è concepito per le applicazioni in tempo reale (video, voce) che necessitano di una gestione dei tempi delle trasmissioni di dati.