Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Le connessione Socket, Appunti di Elementi di Informatica

Descrizione delle connessioni socket

Tipologia: Appunti

2018/2019

Caricato il 07/07/2019

patrizio-ottaviani
patrizio-ottaviani 🇮🇹

5

(1)

2 documenti

1 / 2

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
TPS ( CONNESSIONE SOCKET)
Il concetto di socket è stato sviluppato come estensione diretta del paradigma UNIX di I/O su file,
che si basa sulla sequenza di operazioni open-read-write-close:
- Open: permette di accedere ad un file;
- Read/write: accedono ai contenuti del file;
- close: terminazione dell’utilizzo del file.
L’utilizzo dei socket avviene aggiungendo a questa struttura, l’insieme dei parametri necessari a
realizzare la connessione tra macchine remote , richiedendo:
-gli indirizzi;
-Il protocollo e numero di porta;
-Il tipo del protocollo;
Ogni sistema operativo mette a disposizione nelle API i meccanismi per realizzare
l’interfacciamento tra i diversi protocolli: le socket API sono delle specifiche API di protocollo che
hanno origine con Berkeley BSD UNIX e che oggi sono disponibili in Windows , Solaris e Linux.
Le funzioni presenti nei linguaggi più comuni in C e in Java sono:
-socket()/server socket(): crea un nuovo socket
-close(): termina l’utilizzo di un socket;
-bind():collega un indirizzo di rete ad un socket;
-listen(): aspetta messaggi in ingresso;
-accept(): comincia a utilizzare una connessione in ingresso;
-connect(): crea una connessione con un host remoto;
-send()/write(): trasmette dati su una connessione attiva;
-recv()/red(): riceve dati da una connessione attiva.
Famiglie e tipi di Socket
Famiglie di socket
Esistono varie famiglie di socket chiamate domini, dove ogni famiglia riiunisce i socket che
utilizzano gli stessi protocolli (protocol family): ogni famiglia supporta un sottoinsieme di stili di
comunicazione e possiede un proprio formato di indirizzamento (address family).
Tra le famiglie si socket ricordiamo :
Internet socket(AF_INET): è quella che permette il trasferimento di dati tra processi posti su
macchine remote connesse tramite una LAN o internet.
UNIX DOMAIN SOCKET(AF_UNIX): permette il trasferimento di dati tra processi sulla stessa
macchina UNIX.
Tipi di Socket
I socket sono fondamentalmente di tre tipi:
-stream socket;
-datagram socket;
-raw socket;
Gli stream socket e datagram socket sono usati a livello applicativo, mentre i raw socket sono
utilizzati negli sviluppi dei protocolli.
Stream Socket
pf2

Anteprima parziale del testo

Scarica Le connessione Socket e più Appunti in PDF di Elementi di Informatica solo su Docsity!

TPS ( CONNESSIONE SOCKET)

Il concetto di socket è stato sviluppato come estensione diretta del paradigma UNIX di I/O su file, che si basa sulla sequenza di operazioni open-read-write-close:

  • Open: permette di accedere ad un file;
  • Read/write: accedono ai contenuti del file;
  • close: terminazione dell’utilizzo del file.

L’utilizzo dei socket avviene aggiungendo a questa struttura, l’insieme dei parametri necessari a realizzare la connessione tra macchine remote , richiedendo: -gli indirizzi; -Il protocollo e numero di porta; -Il tipo del protocollo;

Ogni sistema operativo mette a disposizione nelle API i meccanismi per realizzare l’interfacciamento tra i diversi protocolli: le socket API sono delle specifiche API di protocollo che hanno origine con Berkeley BSD UNIX e che oggi sono disponibili in Windows , Solaris e Linux.

Le funzioni presenti nei linguaggi più comuni in C e in Java sono: -socket()/server socket(): crea un nuovo socket -close(): termina l’utilizzo di un socket; -bind():collega un indirizzo di rete ad un socket; -listen(): aspetta messaggi in ingresso; -accept(): comincia a utilizzare una connessione in ingresso; -connect(): crea una connessione con un host remoto; -send()/write(): trasmette dati su una connessione attiva; -recv()/red(): riceve dati da una connessione attiva.

Famiglie e tipi di Socket

Famiglie di socket

Esistono varie famiglie di socket chiamate domini, dove ogni famiglia riiunisce i socket che utilizzano gli stessi protocolli (protocol family): ogni famiglia supporta un sottoinsieme di stili di comunicazione e possiede un proprio formato di indirizzamento (address family). Tra le famiglie si socket ricordiamo : Internet socket(AF_INET): è quella che permette il trasferimento di dati tra processi posti su macchine remote connesse tramite una LAN o internet. UNIX DOMAIN SOCKET(AF_UNIX): permette il trasferimento di dati tra processi sulla stessa macchina UNIX.

Tipi di Socket

I socket sono fondamentalmente di tre tipi: -stream socket; -datagram socket; -raw socket;

Gli stream socket e datagram socket sono usati a livello applicativo, mentre i raw socket sono utilizzati negli sviluppi dei protocolli. Stream Socket

Con i stream socket si realizza una connessione sequenziale: il server si mette in ascolto, in attesa di un collegamento, e quando gli arriva una richiesta la esaudisce mediante la primitiva accept() che crea il nuovo socket dedicato alla connessione; il client si pone in coda sul socket del server e quando viene accettato dal server crea implicitamente il bing con la porta locale. Tra i due processi server e client, i server è quello che ha controllo maggiore poiché è il processo che inizialmente crea il socket: più client possono comunicare attraverso lo stesso socket ma solo un server può essere associato a uno specifico socket. Inoltre il client ha bisogno di conoscere l’ indirizzo del server mentre il server acquisisce le informazioni del client ( e, quindi, anche il suo indirizzo ) solo dopo che viene stabilita la connessione.

Datagram Socket Con i datagram Socket (SOCK_DGRAM) viene realizzata la comunicazione che permette di scambiare dati senza connessione mediante il trasferimento di datagrammi che inoltrano messaggi di dimensione variabile senza garantire ordine o arrivo di pacchetti , quindi, si ha una comunicazione inaffidabile. Permettono quindi di inviare da un socket a più destinazione e ricevere su un socket da più sorgenti : in generale realizzano quindi il modello “ molti a molti” e sono supportato nel dominio internet dal protocollo UDP. Operativamente , ogni processo crea il proprio endpoint richiamando la primitiva che crea il socket successivamente : -Il server si mette in attesa di ricevere i dati (mediante la primitiva receive () in Java e recfrom() in C ) e alla loro ricezione può inviare una risposta ( mediante la primitiva send() in Java e sendto() in C ); -Il client invia il pacchetto di dati al server ( mediante la primitiva send() in java e sendto () in C ) e può ,mettersi in attesa di una risposta con le stesse primitive che ha utilizzato il sever. Al termine della comunicazione il socket viene chiuso. Il loro vantaggio è quello di trasferire velocemente i dati e non esistono differenze tra le chiamate effettuate dai vari processi coinvolti nella comunicazione: quindi decade anche il concetto di client e server dato che utilizzano le stesse primitive e solo il loro ordine stabilisce nell’applicazione quale processo fa la funzione di server e quale di client.