[[PageOutline]] = IEEE 802.11 - Formato dei ''frame'' MAC = Ciascun ''frame'' MAC e' composto dalle seguenti parti: 1. [wiki:IEEE802.11/FormatoDeiFrameMAC#Intestazioneheader intestazione] (''header''): comprende informazioni sul controllo del ''frame'', sulle tempistiche, sull'indirizzamento e sul controllo di sequenza; 2. [wiki:IEEE802.11/FormatoDeiFrameMAC#Corpobody Corpo] (''body''): contiene informazioni dipendenti dal tipo di ''frame'' ed e' di lunghezza variabile; 3. [wiki:IEEE802.11/FormatoDeiFrameMAC#Sequenzadicontrollo Sequenza di controllo] (''frame check sequence'' o FCS): contiene un codice di controllo CRC a 32 bit. ,,gnappo: ''inserire qua uno ''screenshot'' formato frame. I paragrafi sottostanti ne illustrano i campi (prendere da pagina 34)'',,[[BR]] ,,SoujaK: ''oppure uno snello ASCII-art ;)'',,[[BR]] == Intestazione (''Header'') == === ''Frame Control'' === Segue una disamina dei campi contenuti nel cosiddetto ''frame control'', utile, appunto, per il controllo del ''frame''. * '''Versione del protocollo''': indica secondo quale revisione del protocollo e' stato formattato il ''frame''. Una stazione ricevente un ''frame'' il cui campo di versione del protocollo e' maggiore di quello supportato, potra' scartarlo, evitando di inoltrarlo al LLC, senza informare la stazione mittente. * '''Tipo e sottotipo''': identificano il tipo di ''frame'' (controllo, dati o gestione). I sottotipi chiariscono nello specifico la funzionalita' del ''frame'' (e.g. un ''frame'' di ''management'' potrebbe essere un ''frame'' contenente una richiesta di autenticazione oppure di associazione). * '''Al DS''' (''to DS''): indica se il ''frame'' e' destinato al ''Distribution System'' (e.g. tutti i ''frame'' dati inviati dalle STA verso gli AP hanno questo ''flag'' asserito). * '''Dal DS''' ''from DS'': indica se il ''frame'' proviene dal ''Distribution System''. * '''Frammenti ulteriori''' (''more fragments''): indica se il ''frame'' corrente e' seguito da altri frammenti (in caso di MPDU frammentate). * '''Ritentativo''' (''retry''): e' asserito se il ''frame'' corrente costituisce una ritrasmissione di uno gia'precedentemente inviato, aiutando cosi' il ricevitore nel processo di eliminazione dei [wiki:IEEE802.11/DefinizioneDeiServiziMAC#Frameduplicati frame duplicati]. * '''''Power management''''': indica se la stazione opera in ''active'' oppure ''power-save mode''. * '''Dati in attesa''' (''more data''): indica che il trasmittente ha dei dati in attesa di essere spediti. Nello specifico, nelle comunicazioni tra un AP e una STA in modalita' '' [wiki:IEEE802.11/GestioneDelLivelloMAC#Powermanagement power save]'', questo bit indica che l'AP ha almeno una MSDU o una MMPDU pronto per l'invio alla STA in questione. Ancora, il bit puo' essere usato in una trasmissione tra una STA ''CF-pollable'' e l'PC come risposta ad un ''CF-poll'', per indicare che la STA ha almeno una MSDU "bufferizzata" pronta per l'invio. E' asserito anche per trasmissioni ''broadcast'' dell'AP, qualora esso abbia altre MSDU o MMPDU da spedire entro l'invio del prossimo ''beacon''. * '''WEP''': indica se il corpo del ''frame'' e' stato processato dall'algoritmo WEP. Il campo e' significativo solo nei ''frame'' di tipo gestione e sottotipo autenticazione e nei ''frame'' di tipo dati. * '''In ordine''' (''order''): indica se il ''frame'' e' stato spedito utilizzando la classe di servizio '' [wiki:IEEE802.11/ServiziMAC#Servizioperloscambiodidatiasincrono StrictlyOrdered] ''. === ''Duration/ID'' === Il campo ''Duration/ID'' ha due interpretazioni a seconda del tipo di ''frame''. 1. Generalmente contiene un valore di durata dell'occupazione del mezzo trasmissivo, espresso in unita' di tempo. Ad esempio in un ''frame'' RTS il valore del campo ''Duration'' e' dato dalla somma del tempo di trasmissione dei dati pendenti, di un CTS, di un frame ACK e di tre SIFS. Il valore e' fissato a 32768 per ''frame'' inviati durante il CFP, quando invece e' minore di 32768 e' usato da ogni STA per aggiornare il proprio NAV (Network Allocation Vector). 2. Per ''frame'' ''PS-Poll'': contiene l' ''association id'' (AID) della stazione trasmittente. === Indirizzamento === In un frame MAC sono presenti 4 campi ''address'' utilizzati per identificare il BSSID, gli indirizzi delle stazioni che intervengono nella comunicazione: sorgente, destinazione, trasmittente e ricevente. In generale un indirizzo puo' essere individuale o di gruppo. I primi identificano una particolare STA nella rete, mentre i secondi identificano un gruppo di STA e si differenziano in ''multicast'' e ''broadcast''. Gli indirizzi di tipo ''multicast'' denotano un gruppo logico di STA appartenenti ad una stessa rete, mentre quelli di tipo ''broadcast'' si riferiscono all'insieme di tutte le STA appartenenti ad una data LAN. Il BSSID denota univocamente ogni BSS. Per quanto riguarda le IBSS questo valore e' determinato da un algoritmo che genera numeri casuali con un'elevata probabilita' di essere unici. === Controllo di sequenza === Questo campo e' suddiviso in due parti: una contenente il numero di sequenza di MSDU/MMPDU (in modulo 4096) ed un'altra per l'enumerazione dei frammenti di ciascun MSDU/MMPDU. == Corpo (''body'') == Questo campo contiene l'effettivo ''data-load'', costituito dalla MSDU. == Sequenza di controllo (FCS) == E' il campo contentente il codice di ridondanza ciclica (CRC) a 32 bit calcolato su tutti i campi dell' ''header'' e sul ''frame body''. -------------------------------------------------------------------------------- == Alcune note sui frame di gestione == A differenziare il formato dei diversi ''frame'' di ''management'' (MMPDU) e' solo il loro rispettivo corpo, diversamente fissato sul numero e tipo dei campi in esso contenuti. Segue un elenco dei ''frame'' di ''management'' e una sintetica descrizione del loro contenuto: * ''beacon'': ''timestamp'' del nodo, ''beacon interval'' (i.e. il numero di TU che intercorrono tra le trasmissioni dei ''beacon''), informazioni sulle caratterisitche del nodo, parametri della rete fisica e dei servizi (e.g. se l'AP supporta PCF allora nei ''beacon'' saranno contenuti i parametri necessari alle STA); * ''disassociation'': ragione della richiesta di dissociazione; * ''association request'': informazioni sulle caratteristiche operative della STA, intervallo di ascolto (i.e. ogni quanto tempo la STA si risveglia per ascoltare i ''beacon'' dell'AP), SSID, ''rate'' supportati; * ''association response'': informazioni sulle capacita' dell'AP, stato dell'associazione (valida oppure errore), identificativo dell'associazione, ''rate'' supportati; * ''reassociation response'': come sopra; * ''probe request'': SSID, ''rate'' supportati; * ''probe response'': analogo al ''beacon''; * ''authentication'': numero identificante l'algoritmo di autenticazione, numero identificante lo ''step'' del processo di autenticazione, stato, ''challenge text'' (presente solo in particolari ''frame'' di autenticazione); * ''deauthentication'': ragione della richiesta di deautenticazione.