X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;f=socket.tex;h=052e8c5a796f779a91e8dfd4d92bb0fb85d6c673;hb=7281907d38ca9d916bff5a3579c61d805a33c71d;hp=64674af6c4326fba02e91bf99159d9e5e1085a72;hpb=74b559a3958675adf01c9a906cdd485eaf399290;p=gapil.git diff --git a/socket.tex b/socket.tex index 64674af..052e8c5 100644 --- a/socket.tex +++ b/socket.tex @@ -149,9 +149,10 @@ implicitamente dal tipo di socket, per cui di norma questo valore viene messo a zero (con l'eccezione dei \textit{raw socket}). Si noti che la creazione del socket si limita ad allocare le opportune -strutture nel kernel (sostanzialmente una voce nella \textit{file table}) e -non comporta nulla riguardo all'indicazione degli indirizzi remoti o locali -attraverso i quali si vuole effettuare la comunicazione. +strutture nel kernel (sostanzialmente una voce nella \itindex{file~table} +\textit{file table}) e non comporta nulla riguardo all'indicazione degli +indirizzi remoti o locali attraverso i quali si vuole effettuare la +comunicazione. \subsection{Il dominio dei socket} \label{sec:sock_domain} @@ -593,7 +594,7 @@ Il campo \var{sat\_family} deve essere sempre \const{AF\_APPLETALK}, mentre il campo \var{sat\_port} specifica la porta che identifica i vari servizi. Valori inferiori a 129 sono usati per le \textsl{porte riservate}, e possono essere usati solo da processi con i privilegi di amministratore o con la -\itindex{capabilities}\textit{capability} \const{CAP\_NET\_BIND\_SERVICE}. +\itindex{capabilities} \textit{capability} \const{CAP\_NET\_BIND\_SERVICE}. L'indirizzo remoto è specificato nella struttura \var{sat\_addr}, e deve essere in \textit{network order} (vedi sez.~\ref{sec:sock_endianess}); esso è composto da un parte di rete data dal campo \var{s\_net}, che può assumere il @@ -612,8 +613,11 @@ un'interfaccia specifica di Linux per inviare e ricevere pacchetti 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 -assicura la portabilità su altre piattaforme, anche se con funzionalità +fisico. In genere comunque si preferisce usare la libreria +\file{pcap},\footnote{la libreria è mantenuta insieme al comando + \cmd{tcpdump}, informazioni e documentazione si possono trovare sul sito del + progetto \href{http://www.tcpdump.org/}{\texttt{http://www.tcpdump.org/}}.} +che assicura la portabilità su altre piattaforme, anche se con funzionalità ridotte. Questi socket possono essere di tipo \const{SOCK\_RAW} o \const{SOCK\_DGRAM}. @@ -701,9 +705,9 @@ 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. +un'altra stazione (e ricevuto su un'interfaccia in \index{modo~promiscuo} 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 @@ -1050,4 +1054,5 @@ sez.~\ref{sec:IP_ipv6_notation} per IPv6. % LocalWords: all'endianess htons ntohl ntohs long hostlong hostshort netlong % LocalWords: sort netshort host inet aton ntoa dotted decimal const char src % LocalWords: strptr struct dest addrptr INADDR NULL pton ntop presentation af -% LocalWords: numeric EAFNOSUPPORT size ENOSPC ENOAFSUPPORT ADDRSTRLEN +% LocalWords: numeric EAFNOSUPPORT size ENOSPC ENOAFSUPPORT ADDRSTRLEN ROUTE +% LocalWords: of tcpdump