X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;f=socket.tex;h=69a6a3bb34c542ec782c2f8824052ab78fa61993;hb=744b5439cb89cce4d00d6426170684051292ff25;hp=138ebe2a9969e0d2a2ff546e110405e37e259f69;hpb=6f8e0ca42d3d0b97b5e5747798a1eaffb44e8521;p=gapil.git diff --git a/socket.tex b/socket.tex index 138ebe2..69a6a3b 100644 --- a/socket.tex +++ b/socket.tex @@ -91,9 +91,9 @@ Un terzo esempio di stile di comunicazione concerne le modalit avviene, in certi casi essa può essere condotta con una connessione diretta con un solo corrispondente, come per una telefonata; altri casi possono prevedere una comunicazione come per lettera, in cui si scrive l'indirizzo su -ogni pacchetto, altri ancora una comunicazione \textit{broadcast} come per la -radio, in cui i pacchetti vengono emessi su appositi ``\textsl{canali}'' dove -chiunque si collega possa riceverli. +ogni pacchetto, altri ancora una comunicazione \itindex{broadcast} +\textit{broadcast} come per la radio, in cui i pacchetti vengono emessi su +appositi ``\textsl{canali}'' dove chiunque si collega possa riceverli. É chiaro che ciascuno di questi stili comporta una modalità diversa di gestire la comunicazione, ad esempio se è inaffidabile occorrerà essere in grado di @@ -506,11 +506,11 @@ il loro uso Il campo \var{sin6\_addr} contiene l'indirizzo a 128 bit usato da IPv6, espresso da un vettore di 16 byte. Infine il campo \var{sin6\_scope\_id} è un campo introdotto in Linux con il kernel 2.4, per gestire alcune operazioni -riguardanti il multicasting. Si noti infine che \struct{sockaddr\_in6} ha una -dimensione maggiore della struttura \struct{sockaddr} generica di -fig.~\ref{fig:sock_sa_gen_struct}, quindi occorre stare attenti a non avere -fatto assunzioni riguardo alla possibilità di contenere i dati nelle -dimensioni di quest'ultima. +riguardanti il \itindex{multicast} \textit{multicasting}. Si noti infine che +\struct{sockaddr\_in6} ha una dimensione maggiore della struttura +\struct{sockaddr} generica di fig.~\ref{fig:sock_sa_gen_struct}, quindi +occorre stare attenti a non avere fatto assunzioni riguardo alla possibilità +di contenere i dati nelle dimensioni di quest'ultima. \subsection{La struttura degli indirizzi locali} @@ -599,7 +599,7 @@ rete. I \textit{packet socket}, identificati dal dominio \const{PF\_PACKET}, sono un'interfaccia specifica di Linux per inviare e ricevere pacchetti -direttamente su un'interfaccia di rete, senza passare per le routine di +direttamente su un'interfaccia di rete, senza passare per le funzioni di gestione dei protocolli di livello superiore. In questo modo è possibile implementare dei protocolli in user space, agendo direttamente sul livello fisico. In genere comunque si preferisce usare la libreria \file{pcap}, che @@ -686,19 +686,20 @@ Il campo \var{sll\_hatype} indica il tipo ARP, come definito in \file{linux/if\_arp.h}, mentre il campo \var{sll\_pkttype} indica il tipo di pacchetto; entrambi vengono impostati alla ricezione di un pacchetto ed han senso solo in questo caso. In particolare \var{sll\_pkttype} può assumere i -seguenti valori: \var{PACKET\_HOST} per un pacchetto indirizzato alla macchina -ricevente, \var{PACKET\_BROADCAST} per un pacchetto di broadcast, -\var{PACKET\_MULTICAST} per un pacchetto inviato ad un indirizzo fisico di -multicast, \var{PACKET\_OTHERHOST} per un pacchetto inviato ad un'altra -stazione (e ricevuto su un'interfaccia in modo promiscuo), -\var{PACKET\_OUTGOING} per un pacchetto originato dalla propria macchina che +seguenti valori: \const{PACKET\_HOST} per un pacchetto indirizzato alla +macchina ricevente, \const{PACKET\_BROADCAST} per un pacchetto di +\itindex{broadcast} \textit{broadcast}, \const{PACKET\_MULTICAST} per un +pacchetto inviato ad un indirizzo fisico di \itindex{multicast} +\textit{multicast}, \const{PACKET\_OTHERHOST} per un pacchetto inviato ad +un'altra stazione (e ricevuto su un'interfaccia in modo promiscuo), +\const{PACKET\_OUTGOING} per un pacchetto originato dalla propria macchina che torna indietro sul socket. -Si tenga presente infine che in fase di ricezione, anche se si richiede il -troncamento del pacchetto, le funzioni \func{recvmsg}, \func{recv} e -\func{recvfrom} restituiranno comunque la lunghezza effettiva del pacchetto -così come arrivato sulla linea. +Si tenga presente infine che in fase di ricezione, anche se si richiede il +troncamento del pacchetto, le funzioni \func{recv}, \func{recvfrom} e +\func{recvmsg} (vedi sez.~\ref{sec:net_sendmsg}) restituiranno comunque la +lunghezza effettiva del pacchetto così come arrivato sulla linea. %% \subsection{La struttura degli indirizzi DECnet} %% \label{sec:sock_sa_decnet}