Aggiornamento data copyright
[gapil.git] / othersock.tex
index 054a30836d5730799f423a31ea3574798afd0c7a..6ebdcb86475ab0c4447fecac79a23c2c255b84dd 100644 (file)
@@ -1,6 +1,6 @@
 %% othersock.tex
 %%
 %% othersock.tex
 %%
-%% Copyright (C) 2004-2006 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2004-2011 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
@@ -8,12 +8,13 @@
 %% license is included in the section entitled "GNU Free Documentation
 %% License".
 %%
 %% license is included in the section entitled "GNU Free Documentation
 %% License".
 %%
+
 \chapter{Gli altri tipi di socket}
 \label{cha:other_socket}
 
 \chapter{Gli altri tipi di socket}
 \label{cha:other_socket}
 
-Dopo aver trattato in cap.~\ref{cha:TCP_socket} i socket TCP, che costituiscono
-l'esempio più comune dell'interfaccia dei socket, esamineremo in questo
-capitolo gli altri tipi di socket, a partire dai socket UDP, e i socket
+Dopo aver trattato in cap.~\ref{cha:TCP_socket} i socket TCP, che
+costituiscono l'esempio più comune dell'interfaccia dei socket, esamineremo in
+questo capitolo gli altri tipi di socket, a partire dai socket UDP, e i socket
 \textit{Unix domain} già incontrati in sez.~\ref{sec:ipc_socketpair}.
 
 
 \textit{Unix domain} già incontrati in sez.~\ref{sec:ipc_socketpair}.
 
 
@@ -54,7 +55,7 @@ utilizzando per il tipo di socket il valore \const{SOCK\_DGRAM}.
 Questa differenza comporta ovviamente che anche le modalità con cui si usano i
 socket UDP sono completamente diverse rispetto ai socket TCP, ed in
 particolare non esistendo il concetto di connessione non esiste il meccanismo
 Questa differenza comporta ovviamente che anche le modalità con cui si usano i
 socket UDP sono completamente diverse rispetto ai socket TCP, ed in
 particolare non esistendo il concetto di connessione non esiste il meccanismo
-del \itindex{three~way~handshake}\textit{three way handshake} né quello degli
+del \itindex{three~way~handshake} \textit{three way handshake} né quello degli
 stati del protocollo. In realtà tutto quello che avviene nella comunicazione
 attraverso dei socket UDP è la trasmissione di un pacchetto da un client ad un
 server o viceversa, secondo lo schema illustrato in
 stati del protocollo. In realtà tutto quello che avviene nella comunicazione
 attraverso dei socket UDP è la trasmissione di un pacchetto da un client ad un
 server o viceversa, secondo lo schema illustrato in
@@ -263,10 +264,21 @@ comunque il numero di byte letti.
 
 I due argomenti \param{from} e \param{fromlen} sono utilizzati per ottenere
 l'indirizzo del mittente del pacchetto che è stato ricevuto, e devono essere
 
 I due argomenti \param{from} e \param{fromlen} sono utilizzati per ottenere
 l'indirizzo del mittente del pacchetto che è stato ricevuto, e devono essere
-opportunamente inizializzati con i puntatori alle variabili dove la struttura
-contenente quest'ultimo e la relativa lunghezza saranno scritti (si noti che
-\param{fromlen} è un valore intero ottenuto come
-\itindex{value~result~argument}\textit{value result argument}).  Se non si è
+opportunamente inizializzati; il primo deve contenere il puntatore alla
+struttura (di tipo \ctyp{sockaddr}) che conterrà l'indirizzo e il secondo il
+puntatore alla variabile con la dimensione di detta struttura. Si tenga
+presente che mentre il contenuto della struttura \ctyp{sockaddr} cui punta
+\param{from} può essere qualunque, la variabile puntata da \param{fromlen}
+deve essere opportunamente inizializzata a \code{sizeof(sockaddr)},
+assicurandosi che la dimensione sia sufficiente a contenere tutti i dati
+dell'indirizzo.\footnote{si ricordi che \ctyp{sockaddr} è un tipo generico che
+  serve ad indicare la struttura corrispondente allo specifico tipo di
+  indirizzo richiesto, il valore di \param{fromlen} pone un limite alla
+  quantità di dati che verranno scritti sulla struttura puntata da
+  \param{from} e se è insufficiente l'indirizzo risulterà corrotto.}  Al
+ritorno della funzione si otterranno i dati dell'indirizzo e la sua effettiva
+lunghezza, (si noti che \param{fromlen} è un valore intero ottenuto come
+\itindex{value~result~argument} \textit{value result argument}).  Se non si è
 interessati a questa informazione, entrambi gli argomenti devono essere
 inizializzati al valore \const{NULL}.
 
 interessati a questa informazione, entrambi gli argomenti devono essere
 inizializzati al valore \const{NULL}.
 
@@ -759,29 +771,36 @@ dei socket.
 
 \index{socket!locali|)}
 
 
 \index{socket!locali|)}
 
-\section{I socket \textit{raw}}
+
+\section{Altri socket}
+\label{sec:socket_other}
+
+Tratteremo in questa sezione gli altri tipi particolari di socket supportati
+da Linux, come quelli relativi a particolare protocolli di trasmissione, i
+socket \textit{netlink} che definiscono una interfaccia di comunicazione con
+il kernel, ed i \textit{packet socket} che consentono di inviare pacchetti
+direttamente a livello delle interfacce di rete. 
+
+\subsection{I socket \textit{raw}}
 \label{sec:socket_raw}
 
 Tratteremo in questa sezione i cosiddetti \textit{raw socket}, con i quali si
 possono \textsl{forgiare} direttamente i pacchetti a tutti i livelli dello
 stack dei protocolli. 
 
 \label{sec:socket_raw}
 
 Tratteremo in questa sezione i cosiddetti \textit{raw socket}, con i quali si
 possono \textsl{forgiare} direttamente i pacchetti a tutti i livelli dello
 stack dei protocolli. 
 
+\subsection{I socket \textit{netlink}}
+\label{sec:socket_netlink}
 
 
-\section{Altri socket}
-\label{sec:socket_other}
-
-Tratteremo in questa sezione gli altri tipi particolari di socket supportati
-da Linux, come quelli relativi a particolare protocolli di trasmissione ed i
-socket \textit{netlink} che definiscono una interfaccia di comunicazione con
-il kernel.
 
 
+\subsection{I \textit{packet socket}}
+\label{sec:packet_socket}
 
 
 
 
+% articoli interessanti:
+% http://www.linuxjournal.com/article/5617
+% http://www.linuxjournal.com/article/4659
+% 
 
 
-%%% Local Variables: 
-%%% mode: latex
-%%% TeX-master: "gapil"
-%%% End: 
 
 % LocalWords:  socket cap TCP UDP domain sez NFS DNS stream datagram PF INET to
 % LocalWords:  IPv tab SOCK DGRAM three way handshake client fig bind listen AF
 
 % LocalWords:  socket cap TCP UDP domain sez NFS DNS stream datagram PF INET to
 % LocalWords:  IPv tab SOCK DGRAM three way handshake client fig bind listen AF
@@ -794,4 +813,11 @@ il kernel.
 % LocalWords:  ECONNREFUSED value result argument close shutdown daytime nell'
 % LocalWords:  memset inet pton nread NUL superdemone inetd sniffer daytimed
 % LocalWords:  INADDR ANY addr echo ClientEcho sendbuff serv VPN tcpdump l'I
 % LocalWords:  ECONNREFUSED value result argument close shutdown daytime nell'
 % LocalWords:  memset inet pton nread NUL superdemone inetd sniffer daytimed
 % LocalWords:  INADDR ANY addr echo ClientEcho sendbuff serv VPN tcpdump l'I
-% LocalWords:  Stevens destination descriptor raw stack netlink
+% LocalWords:  Stevens destination descriptor raw stack netlink packet
+
+
+
+%%% Local Variables: 
+%%% mode: latex
+%%% TeX-master: "gapil"
+%%% End: