X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=sockctrl.tex;h=5906b98aee79993b55d3e311b8823044b9bedfb9;hp=429fdecc17d973cd142c9ff6bace81e5ce9b94c8;hb=7208522fd60468969d96dba5d8dd2cbd24b75b89;hpb=7b43a7843d483c826a6ed13224208c615a23c4d6 diff --git a/sockctrl.tex b/sockctrl.tex index 429fdec..5906b98 100644 --- a/sockctrl.tex +++ b/sockctrl.tex @@ -2599,10 +2599,8 @@ Infine il quarto caso è quello in cui si vuole effettivamente ottenere un \func{bind} su un indirizzo ed una porta che sono già \textsl{legati} ad un altro socket. Questo ovviamente non ha senso per il normale traffico di rete, in cui i pacchetti vengono scambiati direttamente fra due applicazioni; ma -quando un sistema supporta il traffico in \itindex{multicast} -\textit{multicast}, in cui una applicazione invia i pacchetti a molte altre -(vedi sez.~\ref{sec:xxx_multicast}), allora ha senso che su una macchina i -pacchetti provenienti dal traffico in \itindex{multicast} \textit{multicast} +quando un sistema supporta il traffico in \textit{multicast}, allora ha senso +che su una macchina i pacchetti provenienti dal traffico in \textit{multicast} possano essere ricevuti da più applicazioni\footnote{l'esempio classico di traffico in \textit{multicast} è quello di uno streaming di dati (audio, video, ecc.), l'uso del \textit{multicast} consente in tal caso di @@ -2611,7 +2609,6 @@ possano essere ricevuti da più applicazioni\footnote{l'esempio classico di questo caso è perfettamente logico aspettarsi che sulla stessa macchina più utenti possano lanciare un programma che permetta loro di ricevere gli stessi dati.} o da diverse istanze della stessa applicazione. -\itindex{multicast} In questo caso utilizzando \const{SO\_REUSEADDR} si consente ad una applicazione eseguire \func{bind} sulla stessa porta ed indirizzo usata da @@ -2619,10 +2616,10 @@ un'altra, così che anche essa possa ricevere gli stessi pacchetti (chiaramente la cosa non ha alcun senso per i socket TCP, ed infatti in questo tipo di applicazione è normale l'uso del protocollo UDP). La regola è che quando si hanno più applicazioni che hanno eseguito \func{bind} sulla stessa porta, di -tutti pacchetti destinati ad un indirizzo di \itindex{broadcast} -\textit{broadcast} o di \itindex{multicast} \textit{multicast} viene inviata -una copia a ciascuna applicazione. Non è definito invece cosa accade qualora -il pacchetto sia destinato ad un indirizzo normale (unicast). +tutti pacchetti destinati ad un indirizzo di \textit{broadcast} o di +\textit{multicast} viene inviata una copia a ciascuna applicazione. Non è +definito invece cosa accade qualora il pacchetto sia destinato ad un indirizzo +normale (unicast). Essendo questo un caso particolare in alcuni sistemi (come BSD) è stata introdotta una opzione ulteriore, \const{SO\_REUSEPORT} che richiede che detta @@ -2787,17 +2784,15 @@ file. \const{IP\_ROUTER\_ALERT} &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& Imposta l'opzione \textit{IP router alert} sui pacchetti.\\ \const{IP\_MULTICAST\_TTL} &$\bullet$&$\bullet$& &\texttt{int}& - Imposta il TTL per i pacchetti \itindex{multicast} \textit{multicast}.\\ + Imposta il TTL per i pacchetti \textit{multicast}.\\ \const{IP\_MULTICAST\_LOOP} &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& - Controlla il reinvio a se stessi dei dati di \itindex{multicast} - \textit{multicast}.\\ + Controlla il reinvio a se stessi dei dati di \textit{multicast}.\\ \const{IP\_ADD\_MEMBERSHIP} & &$\bullet$& &\struct{ip\_mreqn}& - Si unisce a un gruppo di \itindex{multicast} \textit{multicast}.\\ + Si unisce a un gruppo di \textit{multicast}.\\ \const{IP\_DROP\_MEMBERSHIP}& &$\bullet$& &\struct{ip\_mreqn}& Si sgancia da un gruppo di \textit{multicast}.\\ \const{IP\_MULTICAST\_IF} & &$\bullet$& &\struct{ip\_mreqn}& - Imposta l'interfaccia locale di un socket \itindex{multicast} - \textit{multicast}.\\ + Imposta l'interfaccia locale di un socket \textit{multicast}.\\ \hline \end{tabular} \caption{Le opzioni disponibili al livello \const{SOL\_IP}.} @@ -3028,7 +3023,6 @@ sez.~\ref{sec:net_sendmsg}). sez.~\ref{sec:IP_options}) che devono essere inoltrati al socket corrente. Può essere usata soltanto per socket di tipo raw. -\itindbeg{multicast} \item[\const{IP\_MULTICAST\_TTL}] L'opzione permette di impostare o leggere il valore del campo TTL per i pacchetti \textit{multicast} in uscita associati al socket. È importante che questo valore sia il più basso possibile, ed il @@ -3085,7 +3079,6 @@ sez.~\ref{sec:net_sendmsg}). % TODO chiarire quale è la struttura \struct{ip\_mreq} -\itindend{multicast} \end{basedescript} @@ -3709,14 +3702,13 @@ Le costanti che identificano le operazioni disponibili sono le seguenti: pacchetti che vede passare, compresi quelli non direttamente indirizzati a lei).\\ \const{IFF\_NOTRAILERS}& Evita l'uso di \textit{trailer} nei pacchetti.\\ - \const{IFF\_ALLMULTI} & Riceve tutti i pacchetti di \itindex{multicast} - \textit{multicast}.\\ + \const{IFF\_ALLMULTI} & Riceve tutti i pacchetti di \textit{multicast}.\\ \const{IFF\_MASTER} & L'interfaccia è il master di un bundle per il bilanciamento di carico.\\ \const{IFF\_SLAVE} & L'interfaccia è uno slave di un bundle per il bilanciamento di carico.\\ \const{IFF\_MULTICAST} & L'interfaccia ha il supporto per il - \textit{multicast} \itindex{multicast} attivo.\\ + \textit{multicast} attivo.\\ \const{IFF\_PORTSEL} & L'interfaccia può impostare i suoi parametri hardware (con l'uso di \struct{ifmap}).\\ \const{IFF\_AUTOMEDIA} & L'interfaccia è in grado di selezionare @@ -3797,19 +3789,19 @@ Le costanti che identificano le operazioni disponibili sono le seguenti: struttura \struct{ifmap}, secondo la definizione di fig.~\ref{fig:netdevice_ifmap_struct}. -\item[\const{SIOCADDMULTI}] aggiunge un indirizzo di \itindex{multicast} - \textit{multicast} ai filtri del livello di collegamento associati - dell'interfaccia. Si deve usare un indirizzo hardware da specificare - attraverso il campo \var{ifr\_hwaddr}, che conterrà l'opportuna struttura - \struct{sockaddr}; l'operazione è privilegiata. Per una modalità alternativa - per eseguire la stessa operazione si possono usare i \textit{packet socket}, - vedi sez.~\ref{sec:packet_socket}. - -\item[\const{SIOCDELMULTI}] rimuove un indirizzo di \itindex{multicast} - \textit{multicast} ai filtri del livello di collegamento dell'interfaccia, - vuole un indirizzo hardware specificato come per \const{SIOCADDMULTI}. Anche - questa operazione è privilegiata e può essere eseguita in forma alternativa - con i \textit{packet socket}. +\item[\const{SIOCADDMULTI}] aggiunge un indirizzo di \textit{multicast} ai + filtri del livello di collegamento associati dell'interfaccia. Si deve usare + un indirizzo hardware da specificare attraverso il campo \var{ifr\_hwaddr}, + che conterrà l'opportuna struttura \struct{sockaddr}; l'operazione è + privilegiata. Per una modalità alternativa per eseguire la stessa operazione + si possono usare i \textit{packet socket}, vedi + sez.~\ref{sec:packet_socket}. + +\item[\const{SIOCDELMULTI}] rimuove un indirizzo di \textit{multicast} ai + filtri del livello di collegamento dell'interfaccia, vuole un indirizzo + hardware specificato come per \const{SIOCADDMULTI}. Anche questa operazione + è privilegiata e può essere eseguita in forma alternativa con i + \textit{packet socket}. \item[\const{SIOCGIFTXQLEN}] permette di leggere la lunghezza della coda di trasmissione del dispositivo associato all'interfaccia specificata nel campo