Aggiunta opzione dei socket IP introdotta con kernel 2.6.34, ed
authorSimone Piccardi <piccardi@gnulinux.it>
Fri, 26 Mar 2010 21:46:58 +0000 (21:46 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Fri, 26 Mar 2010 21:46:58 +0000 (21:46 +0000)
aggiunto un po' di materiale sul TTL dei pacchetti IP e sui pacchetti
ICMP.

netlayer.tex
sockctrl.tex

index 3344c6f531e034cc5d879e366b616138dcb8c07b..e74c1aa3d36858c00098fb7162de04b939538a46 100644 (file)
@@ -288,25 +288,49 @@ pacchetto (cio
 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
 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. 
+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{table}[!htb]
   \centering
   \footnotesize
-  \begin{tabular}[c]{|l|p{6 cm}|}
+  \begin{tabular}{|l|l|p{8cm}|}
     \hline
     \hline
-    \textbf{Costante} & \textbf{Significato} \\
+    \multicolumn{2}{|c|}{\textbf{Valore}}&\textbf{Significato}\\
     \hline
     \hline
     \hline
     \hline
-    \const{IPTOS\_LOWDELAY}   & Minimizza i ritardi per il traffico
-                                interattivo. \\
-    \const{IPTOS\_THROUGHPUT} & Ottimizza la trasmissione per il massimo
-                                flusso di dati.\\
-    \const{IPTOS\_RELIABILITY}& Ottimizza per l'affidabilità della
-                                trasmissione. \\
-    \const{IPTOS\_MINCOST}    & Usato per dati di riempimento, dove non
-                                interessa se c'è una bassa velocità di
-                                trasmissione.\\
+    \const{IPTOS\_LOWDELAY}     &\texttt{0x10}& Minimizza i ritardi
+                                                per rendere più veloce
+                                                possibile la ritrasmissione
+                                                dei pacchetti (usato per
+                                                traffico interattivo di
+                                                controllo come SSH).\\
+    \const{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).\\ 
+    \const{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).\\
+   \const{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
     \hline
   \end{tabular}
   \caption{Le costanti che definiscono alcuni valori standard per il campo TOS
@@ -314,14 +338,40 @@ questo campo.
   \label{tab:IP_TOS_values}
 \end{table}
 
   \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.
 
 
-\subsection{Le opzioni di IP}
-\label{sec:IP_options}
+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}).
 
 
 
 
 
 
+\subsection{Le opzioni di IP}
+\label{sec:IP_options}
+
+Da fare ...
 
 
 \section{Il protocollo IPv6}
 
 
 \section{Il protocollo IPv6}
@@ -1195,7 +1245,7 @@ tab.~\ref{tab:IP_ipv6_nexthead}.
       0  &      & Riservato.\\
          & HBH  & Hop by Hop.\\
       1  & ICMP & Internet Control Message (IPv4 o IPv6).\\
       0  &      & Riservato.\\
          & HBH  & Hop by Hop.\\
       1  & ICMP & Internet Control Message (IPv4 o IPv6).\\
-      2  & ICMP & Internet Group Management (IPv4).\\
+      2  & IGMP & Internet Group Management (IPv4).\\
       3  & GGP  & Gateway-to-Gateway.\\
       4  & IP   & IP in IP (IPv4 encapsulation).\\
       5  & ST   & Stream.\\
       3  & GGP  & Gateway-to-Gateway.\\
       4  & IP   & IP in IP (IPv4 encapsulation).\\
       5  & ST   & Stream.\\
@@ -1519,7 +1569,6 @@ direttamente su IP, ma proprio per questa sua caratteristica di protocollo di
 servizio è da considerarsi a tutti gli effetti appartenente al livello di
 rete.
 
 servizio è da considerarsi a tutti gli effetti appartenente al livello di
 rete.
 
-
 \subsection{L'intestazione di ICMP}
 \label{sec:ICMP_header}
 
 \subsection{L'intestazione di ICMP}
 \label{sec:ICMP_header}
 
@@ -1533,8 +1582,10 @@ struttura dell'intestazione di un pacchetto ICMP generico.
   \label{fig:ICMP_header}
 \end{figure}
 
   \label{fig:ICMP_header}
 \end{figure}
 
-
-
+Ciascun pacchetto ICMP è contraddistinto dal valore del primo campo, il tipo,
+che indica appunto che tipo di messaggio di controllo viene veicolato dal
+pacchetto in questione; i valori possibili per questo campo, insieme al
+relativo significato, sono riportati in tab.~\ref{tab:ICMP_type}.
 
 \begin{table}[!htb]
   \centering
 
 \begin{table}[!htb]
   \centering
@@ -1546,49 +1597,56 @@ struttura dell'intestazione di un pacchetto ICMP generico.
     \hline
     \texttt{any} & -- & Seleziona tutti i possibili valori \\
     \hline
     \hline
     \texttt{any} & -- & Seleziona tutti i possibili valori \\
     \hline
-    \texttt{echo-reply}             &0& Inviato in risposta ad un ICMP
+    \textit{echo-reply}             &0& Inviato in risposta ad un ICMP
                                         \textit{echo-request}.\\ 
                                         \textit{echo-request}.\\ 
-    \texttt{destination-unreachable}&3& Segnala una destinazione 
+    \textit{destination-unreachable}&3& Segnala una destinazione 
                                         irraggiungibile, viene
                                         inviato all'IP sorgente di un
                                         pacchetto quando un router realizza
                                         che questo non può essere inviato a
                                         destinazione.\\
                                         irraggiungibile, viene
                                         inviato all'IP sorgente di un
                                         pacchetto quando un router realizza
                                         che questo non può essere inviato a
                                         destinazione.\\
-    \texttt{source-quench}          &4& Inviato in caso di congestione della
+    \textit{source-quench}          &4& Inviato in caso di congestione della
                                         rete per indicare all'IP sorgente di
                                         diminuire il traffico inviato.\\
                                         rete per indicare all'IP sorgente di
                                         diminuire il traffico inviato.\\
-    \texttt{redirect}               &5& Inviato per segnalare un errore di
+    \textit{redirect}               &5& Inviato per segnalare un errore di
                                         routing, richiede che la macchina
                                         sorgente rediriga il traffico ad un
                                         altro router da esso specificato.\\
                                         routing, richiede che la macchina
                                         sorgente rediriga il traffico ad un
                                         altro router da esso specificato.\\
-    \texttt{echo-request}           &8& Richiede l'invio in risposta di un
-                                        \texttt{echo-reply}.\\
-%    \texttt{router-advertisement}   & & \\
-%    \texttt{router-solicitation}    & & \\
-    \texttt{time-exceeded}          &11& Inviato quando il TTL di un pacchetto
+    \textit{echo-request}           &8& Richiede l'invio in risposta di un
+                                        \textit{echo-reply}.\\
+%    \textit{router-advertisement}   & & \\
+%    \textit{router-solicitation}    & & \\
+    \textit{time-exceeded}          &11& Inviato quando il TTL di un pacchetto
                                          viene azzerato.\\
                                          viene azzerato.\\
-    \texttt{parameter-problem}      &12& Inviato da un router che rileva dei
+    \textit{parameter-problem}      &12& Inviato da un router che rileva dei
                                          problemi con l'intestazione di un
                                          pacchetto.\\
                                          problemi con l'intestazione di un
                                          pacchetto.\\
-    \texttt{timestamp-request}      &13& Richiede l'invio in risposta di un
-                                         \texttt{timestamp-reply}.\\
-    \texttt{timestamp-reply}        &14& Inviato in risposta di un
-                                         \texttt{timestamp-request}.\\
-    \texttt{info-request}           &15& Richiede l'invio in risposta di un
-                                         \texttt{info-reply}.\\
-    \texttt{info-reply}             &16& Inviato in risposta di un
-                                         \texttt{info-request}.\\
-    \texttt{address-mask-request}   &17& Richiede l'invio in risposta di un
-                                         \texttt{address-mask-reply}.\\
-    \texttt{address-mask-reply}     &18& Inviato in risposta di un
-                                         \texttt{address-mask-request}.\\
+    \textit{timestamp-request}      &13& Richiede l'invio in risposta di un
+                                         \textit{timestamp-reply}.\\
+    \textit{timestamp-reply}        &14& Inviato in risposta di un
+                                         \textit{timestamp-request}.\\
+    \textit{info-request}           &15& Richiede l'invio in risposta di un
+                                         \textit{info-reply}.\\
+    \textit{info-reply}             &16& Inviato in risposta di un
+                                         \textit{info-request}.\\
+    \textit{address-mask-request}   &17& Richiede l'invio in risposta di un
+                                         \textit{address-mask-reply}.\\
+    \textit{address-mask-reply}     &18& Inviato in risposta di un
+                                         \textit{address-mask-request}.\\
     \hline
   \end{tabular}
   \caption{I valori del \textsl{tipo} per i pacchetti ICMP.}
 \label{tab:ICMP_type}
 \end{table}
 
     \hline
   \end{tabular}
   \caption{I valori del \textsl{tipo} per i pacchetti ICMP.}
 \label{tab:ICMP_type}
 \end{table}
 
-
+Per alcuni tipi di messaggi ICMP, esiste un secondo campo, detto codice, che
+specifica ulteriormente la natura del messaggio; i soli messaggi che
+utilizzano un valore per questo campo sono quelli di tipo
+\textit{destination-unreachable}, \textit{redirect}, \textit{time-exceeded} e
+\textit{parameter-problem}. I possibili valori del codice relativi a ciascuno
+di essi sono stati riportati nelle quattro sezioni in cui si è suddivisa
+tab.~\ref{tab:ICMP_code}, rispettivamente nell'ordine con cui sono appena
+elencati i tipi a cui essi fanno riferimento. 
 
 \begin{table}[!htb]
   \centering
 
 \begin{table}[!htb]
   \centering
@@ -1598,33 +1656,33 @@ struttura dell'intestazione di un pacchetto ICMP generico.
     \textbf{Valore}&\textbf{Codice}\\
     \hline
     \hline
     \textbf{Valore}&\textbf{Codice}\\
     \hline
     \hline
-    \texttt{network-unreachable}      &0\\
-    \texttt{host-unreachable}         &1\\
-    \texttt{protocol-unreachable}     &2\\
-    \texttt{port-unreachable}         &3 \\
-    \texttt{fragmentation-needed}     &4\\
-    \texttt{source-route-failed}      &5\\
-    \texttt{network-unknown}          &6\\
-    \texttt{host-unknown}             &7\\
-    \texttt{host-isolated}            &8\\
-    \texttt{network-prohibited}       &9\\
-    \texttt{host-prohibited}          &10 \\
-    \texttt{TOS-network-unreachable}  &11 \\
-    \texttt{TOS-host-unreachable}     &12 \\
-    \texttt{communication-prohibited} &13 \\
-    \texttt{host-precedence-violation}&14 \\
-    \texttt{precedence-cutoff}        &15 \\
+    \textit{network-unreachable}      &0\\
+    \textit{host-unreachable}         &1\\
+    \textit{protocol-unreachable}     &2\\
+    \textit{port-unreachable}         &3 \\
+    \textit{fragmentation-needed}     &4\\
+    \textit{source-route-failed}      &5\\
+    \textit{network-unknown}          &6\\
+    \textit{host-unknown}             &7\\
+    \textit{host-isolated}            &8\\
+    \textit{network-prohibited}       &9\\
+    \textit{host-prohibited}          &10 \\
+    \textit{TOS-network-unreachable}  &11 \\
+    \textit{TOS-host-unreachable}     &12 \\
+    \textit{communication-prohibited} &13 \\
+    \textit{host-precedence-violation}&14 \\
+    \textit{precedence-cutoff}        &15 \\
     \hline
     \hline
-    \texttt{network-redirect}         &0  \\
-    \texttt{host-redirect}            &1  \\
-    \texttt{TOS-network-redirect}     &2  \\
-    \texttt{TOS-host-redirect}        &3  \\
+    \textit{network-redirect}         &0  \\
+    \textit{host-redirect}            &1  \\
+    \textit{TOS-network-redirect}     &2  \\
+    \textit{TOS-host-redirect}        &3  \\
     \hline
     \hline
-    \texttt{ttl-zero-during-transit}  &0 \\
-    \texttt{ttl-zero-during-reassembly}&1 \\
+    \textit{ttl-zero-during-transit}  &0 \\
+    \textit{ttl-zero-during-reassembly}&1 \\
     \hline
     \hline
-    \texttt{ip-header-bad}            &0 \\
-    \texttt{required-option-missing}  &1 \\
+    \textit{ip-header-bad}            &0 \\
+    \textit{required-option-missing}  &1 \\
     \hline
   \end{tabular}
   \caption{Valori del campo \textsl{codice} per il protocollo ICMP.}
     \hline
   \end{tabular}
   \caption{Valori del campo \textsl{codice} per il protocollo ICMP.}
@@ -1641,7 +1699,7 @@ struttura dell'intestazione di un pacchetto ICMP generico.
 % LocalWords:  destination identification fragment checksum TCP UDP ICMPv type
 % LocalWords:  service head total fragmentation protocol broadcast broadcasting
 % LocalWords:  multicasting path MTU discovery NSAP IPX based geografic local
 % LocalWords:  destination identification fragment checksum TCP UDP ICMPv type
 % LocalWords:  service head total fragmentation protocol broadcast broadcasting
 % LocalWords:  multicasting path MTU discovery NSAP IPX based geografic local
-% LocalWords:  routing format prefix Registry Subscriber Intra Regional
+% LocalWords:  routing format prefix Registry Subscriber Intra Regional SSH
 % LocalWords:  Register INTERNIC NCC APNIC subscriber Interface MAC address Reg
 % LocalWords:  Subnet Naz Prov Subscr FEBF bootstrap FEC FEFF DNS socket FFFF
 % LocalWords:  sull'host loopback scop all nodes routers rip cbt name dhcp HBH
 % LocalWords:  Register INTERNIC NCC APNIC subscriber Interface MAC address Reg
 % LocalWords:  Subnet Naz Prov Subscr FEBF bootstrap FEC FEFF DNS socket FFFF
 % LocalWords:  sull'host loopback scop all nodes routers rip cbt name dhcp HBH
@@ -1651,7 +1709,7 @@ struttura dell'intestazione di un pacchetto ICMP generico.
 % LocalWords:  Encrypted Security IGRP OSPF Short First tunnelling FFFFFF hash
 % LocalWords:  news FTP NFS authentication Parameter Index ICV Integrity Value
 % LocalWords:  padding Option gateway dell'MD keyed Encripted IEEE ethernet any
 % LocalWords:  Encrypted Security IGRP OSPF Short First tunnelling FFFFFF hash
 % LocalWords:  news FTP NFS authentication Parameter Index ICV Integrity Value
 % LocalWords:  padding Option gateway dell'MD keyed Encripted IEEE ethernet any
-% LocalWords:  Solicitation
+% LocalWords:  Solicitation netfilter iptables TFTP streaming Normal IGMP
 % LocalWords:  stateless solicitation Advertisement stateful Transfer Unit echo
 % LocalWords:  l'autoconfigurazione reply request unreachable all'IP quench TTL
 % LocalWords:  redirect exceeded parameter problem timestamp info mask port ttl
 % LocalWords:  stateless solicitation Advertisement stateful Transfer Unit echo
 % LocalWords:  l'autoconfigurazione reply request unreachable all'IP quench TTL
 % LocalWords:  redirect exceeded parameter problem timestamp info mask port ttl
index 43314d8c6075584e31a51a4421835cfb547f01ee..4b24620b5b7e135c117a6900e37bcd973e2a9de8 100644 (file)
@@ -2764,6 +2764,8 @@ sono definite in \file{netinet/ip.h}, ed accessibili includendo detto file.
       Imposta il valore del campo TOS.\\
     \const{IP\_TTL}             &$\bullet$&$\bullet$&         &\texttt{int}& 
       Imposta il valore del campo TTL.\\
       Imposta il valore del campo TOS.\\
     \const{IP\_TTL}             &$\bullet$&$\bullet$&         &\texttt{int}& 
       Imposta il valore del campo TTL.\\
+    \const{IP\_MINTTL}          &$\bullet$&$\bullet$&   &\texttt{int}& 
+      Imposta il valore minimo del TTL per i pacchetti accettati.\\ 
     \const{IP\_HDRINCL}         &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
       Passa l'intestazione di IP nei dati.\\
     \const{IP\_RECVERR}         &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
     \const{IP\_HDRINCL}         &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
       Passa l'intestazione di IP nei dati.\\
     \const{IP\_RECVERR}         &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
@@ -2880,12 +2882,13 @@ sez.~\ref{sec:net_sendmsg}).
   supportata per socket di tipo \const{SOCK\_STREAM}.
 
 \item[\const{IP\_TOS}] L'opzione consente di leggere o impostare il campo
   supportata per socket di tipo \const{SOCK\_STREAM}.
 
 \item[\const{IP\_TOS}] L'opzione consente di leggere o impostare il campo
-  \textit{Type of Service} dell'intestazione IP (vedi
-  sez.~\ref{sec:IP_header}) che permette di indicare le priorità dei
-  pacchetti. Se impostato il valore verrà mantenuto per tutti i pacchetti del
-  socket; alcuni valori (quelli che aumentano la priorità) richiedono i
-  privilegi di amministrazione con la \itindex{capabilities} capability
-  \const{CAP\_NET\_ADMIN}.
+  \textit{Type of Service} dell'intestazione IP (per una trattazione più
+  dettagliata, che riporta anche i valori possibili e le relative costanti di
+  definizione si veda sez.~\ref{sec:IP_header}) che permette di indicare le
+  priorità dei pacchetti. Se impostato il valore verrà mantenuto per tutti i
+  pacchetti del socket; alcuni valori (quelli che aumentano la priorità)
+  richiedono i privilegi di amministrazione con la \itindex{capabilities}
+  capability \const{CAP\_NET\_ADMIN}.
 
   Il campo TOS è di 8 bit e l'opzione richiede per \param{optval} un intero
   che ne contenga il valore. Sono definite anche alcune costanti che
 
   Il campo TOS è di 8 bit e l'opzione richiede per \param{optval} un intero
   che ne contenga il valore. Sono definite anche alcune costanti che
@@ -2897,12 +2900,32 @@ sez.~\ref{sec:net_sendmsg}).
   dal protocollo utilizzando l'opzione \const{SO\_PRIORITY} illustrata in
   sez.~\ref{sec:sock_generic_options}.
 
   dal protocollo utilizzando l'opzione \const{SO\_PRIORITY} illustrata in
   sez.~\ref{sec:sock_generic_options}.
 
-\item[\const{IP\_TTL}] L'opzione consente di leggere o impostare il campo
-  \textit{Time to Live} dell'intestazione IP (vedi sez.~\ref{sec:IP_header})
-  per tutti i pacchetti associati al socket.  Il campo TTL è di 8 bit e
+\item[\const{IP\_TTL}] L'opzione consente di leggere o impostare per tutti i
+  pacchetti associati al socket il campo \textit{Time to Live}
+  dell'intestazione IP che indica il numero massimo di \textit{hop} (passaggi
+  da un router ad un altro) restanti al paccheto (per una trattazione più
+  estesa si veda sez.~\ref{sec:IP_header}).  Il campo TTL è di 8 bit e
   l'opzione richiede che \param{optval} sia un intero, che ne conterrà il
   valore.
 
   l'opzione richiede che \param{optval} sia un intero, che ne conterrà il
   valore.
 
+\item[\const{IP\_MINTTL}] L'opzione, introdotta con il kernel 2.6.34, imposta
+  un valore minimo per il campo \textit{Time to Live} dei pacchetti associati
+  al socket su cui è attivata, che se non rispettato ne causa lo scarto
+  automatico. L'opzione è nata per implementare
+  l'\href{http://www.ietf.org/rfc/rfc5082.txt}{RFC~5082} che la prevede come
+  forma di protezione per i router che usano il protocollo BGP poiché questi,
+  essendo in genere adiacenti, possono, impostando un valore di 255, scartare
+  automaticamente tutti gli eventuali pacchetti falsi creati da un attacco a
+  questo protocollo, senza doversi curare di verificarne la
+  validità.\footnote{l'attacco viene in genere portato per causare un
+    \textit{Denial of Service} aumentando il consumo di CPU del router nella
+    verifica dell'autenticità di un gran numero di pacchetti di pacchetti
+    falsi; questi, arrivando da sorgenti diverse da un router adiacente, non
+    potrebbero più avere un TTL di 255 anche qualora questo fosse stato il
+    valore di partenza, e l'impostazione dell'opzione consente di scartarli
+    senza carico aggiuntivo sulla CPU (che altrimenti dovrebbe calcolare una
+    checksum).}
+
 \item[\const{IP\_HDRINCL}] Se abilitata l'utente deve fornire lui stesso
   l'intestazione IP in cima ai propri dati. L'opzione è valida soltanto per
   socket di tipo \const{SOCK\_RAW}, e quando utilizzata eventuali valori
 \item[\const{IP\_HDRINCL}] Se abilitata l'utente deve fornire lui stesso
   l'intestazione IP in cima ai propri dati. L'opzione è valida soltanto per
   socket di tipo \const{SOCK\_RAW}, e quando utilizzata eventuali valori