La busta Ethernet, byte per byte
È la busta più esterna, quella che contiene tutte le altre — e l'unica che muore a ogni salto: viene aperta e rifatta da capo da ogni apparato che il pacchetto attraversa. Qui si smontano i 48 bit di un indirizzo MAC, si guarda il frame campo per campo, e si scopre da dove viene quel numero apparentemente arbitrario: 46.
1 · Smonta un indirizzo MAC
2 · Il frame, campo per campo
| Campo | Byte | Contenuto | Conta nel frame? |
|---|
3 · Quanto della tua connessione sono buste
Come funziona
48 bit, due metà
Un MAC è lungo 48 bit = 6 byte, scritti come 12 cifre esadecimali. I primi 3 byte sono l'OUI, assegnato dall'IEEE al costruttore della scheda; gli ultimi 3 sono il numero di serie, che il costruttore assegna come gli pare.
2²⁴ costruttori × 2²⁴ schede ciascuno = 2⁴⁸ ≈ 281.000 miliardi
Dall'OUI si risale al produttore: esistono database pubblici che traducono quel prefisso nel nome dell'azienda, ed è il primo strumento di chi guarda una cattura di rete.
I due bit nascosti nel primo byte
Dettaglio che quasi nessun testo divulgativo spiega, e che invece è puro calcolo binario: nel primo byte due bit hanno un significato speciale.
| Bit | Nome | Vale 0 | Vale 1 |
|---|---|---|---|
| bit 0 (il meno significativo) | I/G — Individual/Group | unicast: un destinatario solo | multicast: un gruppo |
| bit 1 | U/L — Universal/Local | globale, assegnato via OUI | amministrato localmente |
Ne segue una constatazione elegante: il broadcast FF:FF:FF:FF:FF:FF è tecnicamente un multicast — il caso particolare in cui il gruppo coincide con la totalità dei presenti. Non è una categoria a parte: è il gruppo più grande possibile.
Il bit U/L spiega anche una funzione dei telefoni moderni. Quando uno smartphone usa il MAC casuale per non farsi tracciare da una rete Wi-Fi all'altra, genera un indirizzo con U/L a 1: sta dichiarando «questo indirizzo me lo sono dato da solo, non viene da nessun costruttore». Uno come 02:1A:2B:3C:4D:5E si riconosce a colpo d'occhio.
Perché servono sia il MAC sia l'IP
| Indirizzo MAC | Indirizzo IP | |
|---|---|---|
| Lunghezza | 48 bit | 32 bit (IPv4) |
| Assegnato da | il costruttore, in fabbrica | la rete a cui ti colleghi |
| Cambia se cambio rete | no | sì |
| Struttura | piatta | gerarchica: rete + host |
| Vale per | il singolo segmento di rete | il mondo intero |
| Somiglia a | il codice fiscale | l'indirizzo di casa |
L'ultima riga regge benissimo: il codice fiscale ti identifica per sempre ma non dice dove sei; l'indirizzo di casa dice dove sei ma cambia quando trasloci.
Il motivo tecnico, però, è matematico. I MAC sono piatti: A4:5E:60:1C:2B:07 e …:08 sono consecutivi, ma possono stare uno a Milano e uno a Sydney — sono usciti dalla stessa fabbrica e venduti ovunque. Se Internet fosse instradata sui MAC, ogni router di dorsale dovrebbe avere una riga per ogni scheda di rete del pianeta: nell'ordine di 2⁴⁸ righe. Gli IP invece si possono aggregare, perché la parte iniziale dice qualcosa sulla posizione:
una riga sola: 93.184.0.0/16 → copre 65.534 host
L'aggregazione è ciò che rende le tabelle di routing finite. In breve: l'IP dice dove andare, il MAC dice a chi passare il testimone adesso.
Da dove viene il 46
È il numero che sembra più arbitrario di tutta la specifica, e ha invece una derivazione fisica esatta. Nell'Ethernet originale su cavo condiviso due schede potevano trasmettere insieme e provocare una collisione; il metodo CSMA/CD prevede che il mittente se ne accorga mentre sta ancora trasmettendo. Ma il segnale della collisione deve fare in tempo a tornare indietro: nel caso peggiore, tutta la rete e ritorno. Con i parametri dell'Ethernet a 10 Mbit/s quel tempo è di circa 51,2 microsecondi.
10.000.000 bit/s × 51,2 µs = 512 bit = 64 byte
64 − 18 (involucro) = 46 byte
Il 46 non è una convenzione: è la velocità della luce nel rame tradotta in byte. Un frame più corto finirebbe di essere trasmesso prima che la collisione possa essere rilevata, e il mittente crederebbe di aver spedito con successo un frame in realtà distrutto. Le reti commutate di oggi non hanno più collisioni, ma il vincolo è rimasto per compatibilità: è un fossile fisico dentro una specifica ancora in uso.
L'ordine dei campi non è casuale
Il MAC di destinazione viene prima di quello sorgente. È il campo che la scheda ricevente deve leggere per primo, per decidere se il frame la riguarda: metterlo in testa le permette di scartare i frame altrui dopo appena 6 byte, senza leggere il resto.
E il preambolo si capisce solo pensando al livello fisico: il ricevente non sa quando il mittente comincerà a parlare, e deve sincronizzare il proprio orologio sulla cadenza dei bit. Quei 56 bit alternati 1010… servono a prendere il ritmo, come il conteggio del batterista prima dell'attacco. L'SFD, che rompe lo schema con due 1 di fila, dice che il contenuto vero comincia subito dopo.
Il FCS, e il frame che vive un salto solo
Gli ultimi 4 byte sono il Frame Check Sequence, un CRC-32 calcolato su tutto il frame. Il ricevente rifà il conto: se non torna, butta via il frame e basta — non chiede di ritrasmettere, non avvisa nessuno. Rimediare è compito di TCP, molti piani più su. È il principio della rete stupida ai bordi intelligenti.
E ogni volta che il pacchetto attraversa un router, questa busta viene buttata e rifatta con MAC nuovi, mentre il pacchetto IP dentro resta intatto dall'inizio alla fine. Lo vedi succedere salto per salto in Viaggio nel TCP/IP; a trovare il MAC del prossimo apparato ci pensa ARP.
Questa è la busta di livello 2. Dentro c'è il pacchetto IP con i suoi indirizzi — che si calcolano in Il messaggio in numeri — e dentro ancora il segmento TCP con le sue porte.
Ripetizioni e tutoring con un docente di ruolo
Matematica, fisica e informatica. Un metodo, non solo esercizi: si parte da come funziona.