Le socket Flashcards
Cosa sono le socket
Le socket rappresentano un’astrazione di canale di comunicazione tra processi
Attraverso di esse un’applicazione può ricevere o trasmettere dati
Si presentano sotto la forma di un’API (Application Programming Interface), cioè un insieme di funzioni scritte in C, che le applicazioni possono invocare per ricevere il servizio desiderato.
E’ possibile un tipo di comunicazione locale con le socket
Due applicazioni, localizzate sulla stessa macchina, scambiano dati tra di loro utilizzando l’interfaccia delle socket.
Le socket utilizzate a questo scopo vengono comunemente definite Unix-domain socket.
E’ possibile la comunicazione remota via TCP/IP
Anche due applicazioni situate su macchine distinte possono scambiare informazioni secondo gli stessi meccanismi.
Così funzionano telnet, ftp, Emule, BitTorrent.
Nel momento in cui una entità decide di instaurare una comunicazione con un’entità paritaria, come assicurarsi che quest’ultima sia disponibile?
E’ necessario che il chiamante conosca l’indirizzo del chiamato e che il chiamato sia in attesa di eventuali comunicazioni.
Il chiamato è il server:
* deve aver divulgato il proprio indirizzo
* resta in attesa di chiamate
* in genere viene contattato per fornire un servizio
Il chiamante è il client:
* conosce l’indirizzo del server
* prende l’iniziativa di comunicare
* usufruisce dei servizi messi a disposizione dal server
Come è composto un indirizzo delle socket
Una comunicazione può essere identificata attraverso la quintupla:
{protocol, local-addr, local-process, foreign-addr, foreign-process}
Una coppia {addr, process} identifica univocamente un terminale di comunicazione (end-point).
Nel mondo IP, ad esempio:
* local-addr e foreign-addr rappresentano indirizzi IP
* local-process e foreign-process rappresentano numeri di porto
Differenza tra server concorrente e iterativo
Un server che accetti più comunicazioni contemporaneamente si definisce concorrente.
Un server che accetti una sola comunicazione alla volta è detto iterativo. In questo ultimo caso una richiesta può essere servita solo quando la precedente si è già conclusa.
Cosa succede in una comunicazione connection-oriented
In una comunicazione dati Connection-Oriented, i due end-point dispongono di un canale di comunicazione che:
* trasporta flussi
* è affidabile
* è dedicato
* preserva l’ordine delle informazioni
Il canale si comporta cioè come una sorta di “tubo”: tutto quello che viene inserito al suo interno, arriverà inalterato dall’altro lato e nello stesso ordine con cui è stato immesso.
Cosa succede in una comunicazione Datagram
In una comunicazione Datagram (anche detta connectionless), il canale
* trasporta messaggi
* non è affidabile
* è condiviso
* non preserva l’ordine delle informazioni
Se si inviano dieci messaggi dall’altro lato essi possono anche arrivare mescolati tra di loro e tra i messaggi appartenenti ad altre comunicazioni.
Cosa si intende per Naming/Binding
È l’operazione in cui associamo un indirizzo transport ad una socket già creata. In questo modo l’indirizzo diventa noto al sistema operativo ed altre socket sono in grado di stabilire una connessione
Quali sono i protocolli utilizzati per il trasferimento dei dati
È possibile impostare il protocollo che verrà utilizzato per il trasferimento dei dati
Nel caso delle socket abbiamo due opzioni:
-byte-stream: I dati vengono trasferiti come una sequenza ordinata ed affidabile di byte
-Datagram: I dati vengono inviati come messaggi indipendenti ed inaffidabili
Cosa si intende con il termine marshalling
Con il termine marshalling si intende la traduzione di un’informazione in un formato prefissato e comprensibile universalmente
E’ un’operazione tipica del sesto livello della pila OSI (presentazione) il cui intento è di assicurare portabilità ad un programma.