2013-02-17 20 views
5

Sto facendo uno studio sul socket di dominio Unix. Soprattutto su come funziona. Ho cercato su Google molte volte con molte parole chiave, ma i risultati riguardano esclusivamente le API, le chiamate di sistema, come utilizzarle, esempi .... Ho letto anche su Pipe e FIFO perché il socket di Unix Domain è lo stesso di Pipe e FIFO, ma voglio ancora saperne di più sui concetti/pricipli di Unix Domain Socket. Come funziona? (Forse a livello di kernel perché Wiki dice questo: "Ciò consente a due processi di aprire lo stesso socket per comunicare. Tuttavia, la comunicazione avviene interamente all'interno del kernel del sistema operativo."Principio del dominio di dominio Unix. Come funziona?

Mi chiedo ancora perché il dominio Unix Socket documenta è inferiore del tubo o FIFO? Forse perché è nato tanti anni fa?

qualcuno mi potrebbe mostrare qualche idea o che libri/link per leggere?

Grazie in anticipo!

prese
+0

Per un libro, prova * Unix Network Programming, Volume 1 * di W. Richard Stevens. La terza edizione è l'ultima, ma una copia usata della seconda edizione costerà molto meno ed è sufficiente, se non la trovi nella tua biblioteca locale. –

+0

Grazie a @robmayoff per i tuoi libri, l'ho letto. Ma parla dell'API di UDS :(. Ho bisogno di informazioni su, forse, su come i dati vengono inviati o ricevuti a livello di kernel. Qualcosa come parlano di pipe qui: http://www.tldp.org/LDP/lpg/node10 .html # SECTION00721000000000000000 Grazie! – leokaka

+0

[* TCP/IP Illustrated, Vol. 3: TCP per Transazioni, HTTP, NNTP e Protocolli di dominio UNIX *] (http://amzn.com/0201634953), anche da W Richard Stevens –

risposta

16

Unix utilizzato come qualsiasi altro tipo di socket. Ciò significa che vengono utilizzate le chiamate del sistema socket la differenza tra FIFO e Unix, è che FIFO usa le chiamate di file sys, mentre i socket Unix usano le chiamate socket.

I socket Unix sono indirizzati come file. Permette di utilizzare i permessi dei file per il controllo degli accessi.

I socket Unix vengono creati da socket sys call (mentre FIFO è stato creato da mkfifo). Se hai bisogno di un socket client, chiami connect, passandogli l'indirizzo del socket del server. Se è necessario il socket del server, è possibile eseguire il binding per assegnare il proprio indirizzo. Mentre, per FIFO viene utilizzata la chiamata aperta. L'operazione IO viene eseguita da lettura/scrittura.

Il socket Unix è in grado di distinguere i client, mentre FIFO no. Le informazioni sul peer sono fornite da accept call, restituisce l'indirizzo di peer.

Le prese Unix sono bidirezionali. Ciò significa che ogni lato può eseguire operazioni di lettura e scrittura. Mentre, i FIFO sono unidirezionali: ha un peer di scrittori e un peer di lettori.

Gli zoccoli Unix creano meno spese generali e le comunicazioni sono più veloci rispetto alle prese IP di localhost. Il pacchetto non ha bisogno di passare attraverso lo stack di rete come con i socket localhost. E poiché esistono solo localmente, non esiste un routing.

Se avete bisogno di maggiori dettagli su come i socket Unix funzionano a livello di kernel, guardate il file net/unix/af_unix.c nel sorgente del kernel di Linux.

+0

Se la risposta è soddisfatta, si prega di impostarla come migliore risposta O aggiungere al commento, cos'altro deve essere spiegato. –

+0

Grazie per la vostra informazione, ma ho letto su queste informazioni già. :(potrebbe darmi qualche altro dettaglio su come invia e riceve i dati? Fa uso di file I/O? Grazie S! – leokaka

+0

I socket Unix utilizzano la stessa API degli altri tipi di socket.Vengono creati dalla chiamata socket sys e quindi è possibile connettersi al socket del server connettendo la chiamata o collegandola (se è necessario il socket del server). le chiamate di lettura/scrittura possono essere utilizzate per eseguire l'IO. –