# Pacchetto (reti)

Un pacchetto, nel gergo informatico e delle telecomunicazioni, indica ciascuna sequenza finita e distinta di dati trasmessa su una rete o in generale su un canale o linea di comunicazione (ad esempio su una linea seriale) che usi il modo di trasferimento a commutazione di pacchetto. Tipicamente si tratta di una sequenza di bit, ovvero informazione in formato digitale, modulati poi in maniera numerica per la trasmissione sul canale fisico. Le reti che utilizzano tale modalità di trasmissione sono dette reti a pacchetto. Un pacchetto trasmesso in una modalità senza connessione è frequentemente chiamato "datagramma".

## Descrizione

In generale il pacchetto è l'unità di base del protocollo (PDU Protocol Data Unit) dello strato architetturale in cui esso è generato, ed ogni pacchetto rappresenta una singola informazione, comando o risposta. A seconda del tipo di protocollo di comunicazione e di sistema di trasmissione, il termine "pacchetto" assume significati, formati e nomi diversi: per il livello di collegamento del modello ISO/OSI si preferisce il termine frame, in IP (cioè a livello di rete) si chiama "datagramma", in TCP si usa invece il termine "segmento".
Con protocolli di trasporto più sofisticati, un pacchetto è il risultato della suddivisione (segmentazione) delle informazioni dei protocolli di alto livello in blocchi di dimensioni inferiori. Ad esempio in una rete TCP/IP, quando si scarica una pagina web, i dati della pagina vengono automaticamente suddivisi dal server in pacchetti di livello IP di ridotte dimensioni (generalmente non più di 1500 byte, che è la dimensione massima possibile imposta dall'MTU dei frame Ethernet) e riassemblati nell'ordine corretto dal client.

### Denominazioni

A seconda del livello di incapsulamento all'interno della stack della pila dei protocolli di rete TCP/IP i pacchetti dati assumono diversi nomi: al livello TCP si chiamano "segmenti", al livello IP si chiamano "datagrammi", al livello di datalink si chiamano frame, al livello fisico (SDH/PDH) si chiamano bit.

### Formato

La forma esatta di ogni pacchetto dipende quindi dal protocollo utilizzato, ma in genere sono presenti tre parti:
* header (intestazione): contiene tutte le informazioni di overhead necessarie alla trasmissione, quali l'indirizzo del trasmettitore, quello del ricevitore, la vita del pacchetto, i dati che riguardano l'assemblaggio con gli altri pacchetti e così via
* data: contiene i dati utili trasmessi o payload
* checksum: un codice di controllo utilizzato per controllare la corretta ricezione dei dati ovvero l'eventuale presenza di errori.
Ciascun pacchetto può essere di lunghezza variabile con un limite massimo di dati (MTU Maximum Transmission Unit), operando quindi eventuali frammentazioni o segmentazioni su pacchetti troppo lunghi, e spesso anche un limite minimo, operando eventuali aggregazioni o riempimenti aggiuntivi (padding) su pacchetti troppo corti (es. IP e Ethernet). L'intestazione (header) ovviamente è sempre fissa contenendo informazioni di servizio del rispettivo protocollo essenziali. In alcuni casi invece la lunghezza del payload può essere fissa, ma sempre soggetta a frammentazione e padding eventuali (es. ATM).

### Delimitazione

Ciascun pacchetto prevede dei meccanismi identificativi che lo distinguano univocamente dagli altri pacchetti nel flusso continuo di pacchetti dalla sorgente al destinatario (es. bit stuffing).

### Incapsulamento

Nelle reti costituite da più livelli, come appunto il TCP/IP, in una trasmissione dati i pacchetti dei livelli superiori vengono inseriti o incapsulati nei pacchetti dei livelli inferiori: tale operazione è definita “imbustamento”. In ricezione si ha situazione o processo inverso: a partire dai livelli più bassi ogni protocollo analizza il proprio header e passa al protocollo di livello superiore quello che per lui è carico utile cioè il pacchetto restante che quindi perde via via informazioni aggiuntive di protocollo salendo di strato fino a rimanere nei soli dati utili a livello applicativo.