# Ethernet Frame

L'Ethernet Frame è definito dallo standard `IEEE 802.3` ed opera a livello data-link nelle reti cablate. Di seguito si descrive la struttura tipica di un frame Ethernet:

![frame-structure](asset/img/frame-structure.png)

## Struttura del Frame

L'ethernet frame è composto da tre parti principali: header, payload e trailer. La dimensione totale di un frame Ethernet standard varia da un minimo di 64 byte a un massimo di 1518 byte.

### Header

- L'header include gli indirizzi MAC di origine e destinazione, che identificano rispettivamente il dispositivo mittente e quello ricevente all'interno della rete locale
- **Type/Length**: questo campo può avere doppia funzione:
  - Puó indicare la lunghezza del payload
  - Tramite un valore esadecimale, identifica il tipo di protocollo utilizzato per generare il payload (ad esempio, 0x0800 equivale a IPv4).

### Payload

Il payload (*Data & Padding*) contiene i dati provenienti dal livello di rete (network layer).  

- Il payload ha una dimensione massima di 1500 byte, nota come `MTU` (Maximum Transfer Unit)
- Se il payload non raggiunge la dimensione minima di 46 byte, viene applicato un padding per garantire la corretta dimensione minima del frame
- Nel caso in cui il payload del livello di rete superi l’MTU, esso viene frammentato in più pacchetti per poter essere correttamente incapsulato nei frame Ethernet.

### Trailer

- **FCS** (Frame Check Sequence): il trailer termina il frame con un campo di 4 byte, il cui scopo è la verifica dell’integrità dei dati trasmessi.

![frame-structure-example](asset/img/frame-structure-example.png)
