%% socket.tex
%%
-%% Copyright (C) 2000-2004 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2005 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",
dall'utente generico, ad esempio in generale tutti i socket di tipo
\const{SOCK\_RAW} possono essere creati solo da processi che hanno i privilegi
di amministratore (cioè con user-ID effettivo uguale a zero) o dotati della
-capability \texttt{CAP\_NET\_RAW}.
+capability \const{CAP\_NET\_RAW}.
\subsection{Il tipo, o stile}
specifica il \textsl{numero di porta}. I numeri di porta sotto il 1024 sono
chiamati \textsl{riservati} in quanto utilizzati da servizi standard e
soltanto processi con i privilegi di amministratore (con user-ID effettivo
-uguale a zero) o con la capability \texttt{CAP\_NET\_BIND\_SERVICE} possono
+uguale a zero) o con la capability \const{CAP\_NET\_BIND\_SERVICE} possono
usare la funzione \func{bind} (che vedremo in sez.~\ref{sec:TCP_func_bind}) su
queste porte.
% passaggio dipende dalla direzione del medesimo, dal processo al kernel o
% viceversa.
-% In particolare le tre funzioni \texttt{bind}, \texttt{connect} e
-% \texttt{sendto} passano la struttura al kernel, in questo caso è passata
+% In particolare le tre funzioni \func{bind}, \func{connect} e
+% \func{sendto} passano la struttura al kernel, in questo caso è passata
% \textsl{per valore} anche la dimensione della medesima
-% Le funzioni \texttt{accept}, \texttt{recvfrom}, \texttt{getsockname} e
-% \texttt{getpeername} invece ricevono i valori del kernel
+% Le funzioni \func{accept}, \func{recvfrom}, \func{getsockname} e
+% \func{getpeername} invece ricevono i valori del kernel
variabili intere (ed in genere in diretta corrispondenza a come sono poi in
realtà cablati sui bus interni del computer).
+\begin{figure}[htb]
+ \centering
+ \includegraphics[height=3cm]{img/endianess}
+ \caption{Schema della disposizione dei dati in memoria a seconda della
+ \textit{endianess}.}
+ \label{fig:sock_endianess}
+\end{figure}
+
Per capire meglio il problema si consideri un intero a 32 bit scritto in una
locazione di memoria posta ad un certo indirizzo. Come illustrato in
fig.~\ref{fig:sock_endianess} i singoli bit possono essere disposti un memoria
parte dal bit meno significativo è detto per lo stesso motivo \textit{little
endian}.
-\begin{figure}[htb]
- \centering
- \includegraphics[height=3cm]{img/endianess}
- \caption{Schema della disposizione dei dati in memoria a seconda della
- \textit{endianess}.}
- \label{fig:sock_endianess}
-\end{figure}
-
Si può allora verificare quale tipo di \textit{endianess} usa il proprio
computer con un programma elementare che si limita ad assegnare un valore ad
una variabile per poi ristamparne il contenuto leggendolo un byte alla volta.
resta sempre lo stesso, anche quando il processore permetterebbe di eseguire
questi cambiamenti.
-Per controllare quale tipo di ordinamento si ha sul proprio computer si è
-scritta una piccola funzione di controllo, il cui codice è riportato
-fig.~\ref{fig:sock_endian_code}, che restituisce un valore nullo (falso) se
-l'architettura è \textit{big endian} ed uno non nullo (vero) se l'architettura
-è \textit{little endian}.
-
\begin{figure}[htb]
\footnotesize \centering
\begin{minipage}[c]{15cm}
\label{fig:sock_endian_code}
\end{figure}
+Per controllare quale tipo di ordinamento si ha sul proprio computer si è
+scritta una piccola funzione di controllo, il cui codice è riportato
+fig.~\ref{fig:sock_endian_code}, che restituisce un valore nullo (falso) se
+l'architettura è \textit{big endian} ed uno non nullo (vero) se l'architettura
+è \textit{little endian}.
+
Come si vede la funzione è molto semplice, e si limita, una volta assegnato
(\texttt{\small 9}) un valore di test pari a \texttt{0xABCD} ad una variabile
di tipo \ctyp{short} (cioè a 16 bit), a ricostruirne una copia byte a byte.
% \centering
% \caption{Schema della rappresentazioni utilizzate dalle funzioni di
-% conversione \texttt{inet\_pton} e \texttt{inet\_ntop} }
+% conversione \func{inet\_pton} e \func{inet\_ntop} }
% \label{fig:sock_inet_conv_func}
% \end{figure}