+finale può essere piazzato in qualunque punto (vedi
+tab.~\ref{tab:IP_ipv4cidr}), permettendo di accorpare più classi A su un'unica
+rete o suddividere una classe B e diminuendo al contempo il numero di
+indirizzi di rete da inserire nelle tabelle di instradamento dei router.
+
+
+\subsection{L'intestazione di IP}
+\label{sec:IP_header}
+
+Come illustrato in fig.~\ref{fig:net_tcpip_data_flux} (si ricordi quanto detto
+in sez.~\ref{sec:net_tcpip_overview} riguardo al funzionamento generale del
+TCP/IP), per eseguire il suo compito il protocollo IP inserisce (come
+praticamente ogni protocollo di rete) una opportuna intestazione in cima ai
+dati che deve trasmettere, la cui schematizzazione è riportata in
+fig.~\ref{fig:IP_ipv4_head}.
+
+\begin{figure}[!htb]
+ \centering
+ \includegraphics[width=10cm]{img/ipv4_head}
+ \caption{L'intestazione o \textit{header} di IPv4.}
+ \label{fig:IP_ipv4_head}
+\end{figure}
+
+Ciascuno dei campi illustrati in fig.~\ref{fig:IP_ipv4_head} ha un suo preciso
+scopo e significato, che si è riportato brevemente in
+tab.~\ref{tab:IP_ipv4field}; si noti come l'intestazione riporti sempre due
+indirizzi IP, quello \textsl{sorgente}, che indica l'IP da cui è partito il
+pacchetto (cioè l'indirizzo assegnato alla macchina che lo spedisce) e quello
+\textsl{destinazione} che indica l'indirizzo a cui deve essere inviato il
+pacchetto (cioè l'indirizzo assegnato alla macchina che lo riceverà).
+
+\begin{table}[!htb]
+ \footnotesize
+ \begin{center}
+ \begin{tabular}{|l|c|p{10cm}|}
+ \hline
+ \textbf{Nome} & \textbf{Bit} & \textbf{Significato} \\
+ \hline
+ \hline
+ \textit{version} & 4& Numero di \textsl{versione}, nel caso
+ specifico vale sempre 4.\\
+ \textit{head length} & 4& Lunghezza dell'intestazione,
+ in multipli di 32 bit.\\
+ \textit{type of service}&8& Il ``\textsl{tipo di servizio}'', è suddiviso
+ in: 3 bit di precedenza, che nelle attuali
+ implementazioni del protocollo non vengono
+ comunque utilizzati; un bit riservato che
+ deve essere mantenuto a 0; 4 bit che
+ identificano il tipo di servizio
+ richiesto, uno solo dei quali può essere
+ attivo.\\
+ \textit{total length} &16& La \textsl{lunghezza totale}, indica
+ la dimensione del carico di dati del
+ pacchetto IP in byte.\\
+ \textit{identification}&16& L'\textsl{identificazione}, assegnato alla
+ creazione, è aumentato di uno all'origine
+ della trasmissione di ciascun pacchetto, ma
+ resta lo stesso per i pacchetti
+ frammentati, consentendo così di
+ identificare quelli che derivano dallo
+ stesso pacchetto originario.\\
+ \textit{flag} & 3& I \textsl{flag} di controllo nell'ordine: il
+ primo è riservato e sempre nullo, il secondo
+ indica se il pacchetto non può essere
+ frammentato, il terzo se ci sono ulteriori
+ frammenti.\\
+ \textit{fragmentation offset}&13& L'\textsl{offset di frammento}, indica
+ la posizione del frammento rispetto al
+ pacchetto originale.\\
+ \textit{time to live} &16& Il \textsl{tempo di vita}, è decrementato di
+ uno ogni volta che un router ritrasmette il
+ pacchetto, se arriva a zero il pacchetto
+ viene scartato.\\
+ \textit{protocol} & 8& Il \textsl{protocollo}, identifica il tipo di
+ pacchetto che segue l'intestazione di IPv4.\\
+ \textit{header checksum}&16&La \textsl{checksum di intestazione}, somma
+ di controllo per l'intestazione.\\
+ \textit{source IP} &32& L'\textsl{indirizzo di origine}.\\
+ \textit{destination IP}&32& L'\textsl{indirizzo di destinazione}.\\
+ \hline
+ \end{tabular}
+ \caption{Legenda per il significato dei campi dell'intestazione di IPv4}
+ \label{tab:IP_ipv4field}
+ \end{center}
+\end{table}
+
+
+Il campo TOS definisce il cosiddetto \textit{Type of Service}; questo permette
+di definire il tipo di traffico contenuto nei pacchetti, e può essere
+utilizzato dai router per dare diverse priorità in base al valore assunto da
+questo campo. Abbiamo già visto come il valore di questo campo può essere
+impostato sul singolo socket con l'opzione \const{IP\_TOS} (vedi
+sez.~\ref{sec:sock_ipv4_options}), esso inoltre può essere manipolato sia dal
+sistema del \textit{netfilter} di Linux con il comando \texttt{iptables} che
+dal sistema del routing avanzato del comando \texttt{ip route} per consentire
+un controllo più dettagliato dell'instradamento dei pacchetti e l'uso di
+priorità e politiche di distribuzione degli stessi.
+
+\begin{table}[!htb]
+ \centering
+ \footnotesize
+ \begin{tabular}{|l|l|p{8cm}|}
+ \hline
+ \multicolumn{2}{|c|}{\textbf{Valore}}&\textbf{Significato}\\
+ \hline
+ \hline
+ \constd{IPTOS\_LOWDELAY} &\texttt{0x10}& Minimizza i ritardi
+ per rendere più veloce
+ possibile la ritrasmissione
+ dei pacchetti (usato per
+ traffico interattivo di
+ controllo come SSH).\\
+ \constd{IPTOS\_THROUGHPUT} &\texttt{0x8} & Ottimizza la trasmissione
+ per rendere il più elevato
+ possibile il flusso netto di
+ dati (usato su traffico dati,
+ come quello di FTP).\\
+ \constd{IPTOS\_RELIABILITY} &\texttt{0x4} & Ottimizza la trasmissione
+ per ridurre al massimo le
+ perdite di pacchetti (usato su
+ traffico soggetto a rischio di
+ perdita di pacchetti come TFTP
+ o DHCP).\\
+ \constd{IPTOS\_MINCOST} &\texttt{0x2} & Indica i dati di riempimento,
+ dove non interessa se si ha
+ una bassa velocità di
+ trasmissione, da utilizzare
+ per i collegamenti con minor
+ costo (usato per i protocolli
+ di streaming).\\
+ \textit{Normal-Service}&\texttt{0x0} & Nessuna richiesta specifica.\\
+ \hline
+
+ \hline
+ \end{tabular}
+ \caption{Le costanti che definiscono alcuni valori standard per il campo TOS
+ da usare come argomento \param{optval} per l'opzione \const{IP\_TOS}.}
+ \label{tab:IP_TOS_values}
+\end{table}
+
+I possibili valori del campo TOS, insieme al relativo significato ed alle
+costanti numeriche ad esso associati, sono riportati in
+tab.~\ref{tab:IP_TOS_values}. Per il valore nullo, usato di default per tutti
+i pacchetti, e relativo al traffico normale, non esiste nessuna costante
+associata.
+
+Il campo TTL, acromino di \textit{Time To Live}, viene utilizzato per
+stabilire una sorta di tempo di vita massimo dei pacchetti sulla rete. In
+realtà più che di un tempo, il campo serve a limitare il numero massimo di
+salti (i cosiddetti \textit{hop}) che un pacchetto IP può compiere nel passare
+da un router ad un altro nel suo attraversamento della rete verso la
+destinazione.
+
+Il protocollo IP prevede infatti che il valore di questo campo venga
+decrementato di uno da ciascun router che ritrasmette il pacchetto verso la
+sua destinazione, e che quando questo diventa nullo il router lo debba
+scartare, inviando all'indirizzo sorgente un pacchetto ICMP di tipo
+\textit{time-exceeded} con un codice \textit{ttl-zero-during-transit} se
+questo avviene durante il transito sulla rete o
+\textit{ttl-zero-during-reassembly} se questo avviene alla destinazione finale
+(vedi sez.~\ref{sec:ICMP_protocol}).
+
+In sostanza grazie all'uso di questo accorgimento un pacchetto non può
+continuare a vagare indefinitamente sulla rete, e viene comunque scartato dopo
+un certo tempo, o meglio, dopo che ha attraversato in certo numero di
+router. Nel caso di Linux il valore iniziale utilizzato normalmente è 64 (vedi
+sez.~\ref{sec:sock_ipv4_sysctl}).