La programmazione di rete

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "La programmazione di rete"

Transcript

1 La programmazione di rete Introduzione alla programmazione di rete La connessione La trasmissione 20 febbraio 2004

2 Applicazioni distribuite Applicazione: un insieme di programmi coordinati per svolgere una data funzione applicativa. Un applicazione è distribuita se prevede più programmi (o processi) eseguiti su differenti calcolatori connessi tramite una rete. I programmi devono quindi contenere funzioni che consentano la comunicazione tramite una rete. Processo: programma in esecuzione. Rete: nodi collegati + servizi di rete che consentono la comunicazione

3 Protocollo applicativo Le regole per la comunicazione in una applicazione distribuita sono dette protocollo applicativo. P. es. il protocollo applicativo della navigazione Web è detto HyperText Transfer Protocol - http. Il protocollo applicativo deve essere definito opportunamente e comune a tutti i programmi dell applicazione. P. es. ogni messaggio scambiato è terminato dalla stringa \0 \0 \

4 Interfacce e protocolli Il protocollo applicativo utilizza i servizi messi a disposizione dal Sistema Operativo della macchina e i servizi di rete che consentono la comunicazione, messi a disposizione dal software di rete. Il software di rete (servizi di rete) dipende dal protocollo di comunicazione comune tra i nodi della rete. Si considera il protocollo di comunicazione TCP/IP (Transfer Control Protocol / Interconnect Protocol). L insieme delle chiamate di funzioni di sistema utilizzabili dai programmi applicativi viene comunemente definito API (Application Program Interface): le API forniscono il canale (o supporto) di comunicazione; i programmi comunicano invocando opportune funzioni della API di rete; il protocollo applicativo rappresenta le regole di comunicazione, e considera il contenuto della comunicazione

5 Interfacce e protocolli Applicazione distribuita Programma applicativo P Protocollo applicativo Programma applicativo Q Sistema operativo e SW di rete Chiamate al S.O. e al software di rete (API) Sistema operativo e SW di rete Rete - 5 -

6 L interfaccia socket Obbiettivo: specificare l interfaccia tra programma applicativo e software del protocollo di comunicazione: La API standard per TCP/ IP si chiama interfaccia socket, ed è stata definita a Berkley agli albori di internet (circa 1980). Per utilizzarla, e cioè utilizzare le funzioni di rete relative, è necessario includere un insieme di file di libreria (sys/types.h, sys/socket.h, netinet/in.h). Il socket costituisce la struttura dati che rappresenta il canale di rete

7 L interfaccia socket L interfaccia socket è scritta in linguaggio C ed è definita per calcolatori Unix (LINUX): per calcolatori Windows si utilizza l interfaccia WinSocket. Socket funziona anche per altri protocolli differenti da TCP / IP. TCP / IP garantisce l interoperabilità tra calcolatori anche se equipaggiati con sistemi operativi differenti. Calcolatori Unix e calcolatori Windows possono comunicare utilizzando le interfacce Socket e WinSocket, rispettivamente

8 Connessione tra calcolatori Unix e Windows Programma C API di Unix + socket Unix e TCP / IP Programma C API di Win + Winsocket Windows e TCP / IP Canale di comunicazione - 8 -

9 Il modello Cliente / Servente (Client / Server) Il software di rete TCP / IP consente a due processi residenti su due nodi della rete di comunicare tra loro, trasferendo dati. Non definisce a priori nessuno schema o modello di cooperazione (applicativa) tra i processi (comunicazione peer-to-peer). Il modello di cooperazione tipico di un applicazione distribuita è il modello cliente / servente (client / server). processo servente (server): offre servizi ad altri processi, ne accetta le richieste, esegue il servizio e fornisce un risultato. Il servente viene pertanto attivato prima del cliente; processo cliente (client): richiede dei servizi a un servente e ne attende la risposta. Generalmente un processo conserva lo stesso ruolo (è o sempre Cliente o sempre Servente) non è però un obbligo

10 Identificazione dei processi - Indirizzamento Siano P e Q i due processi che devono comunicare: Q (cliente) deve richiedere un servizio a P (servente). È necessario che Q sappia come raggiungere P (per inviargli la richiesta) e che poi P sappia come raggiungere Q (per restituire quanto richiesto o segnalare il completamento dell operazione richiesta dallo stesso Q). Un processo viene identificato, e quindi indirizzato, ai fini della comunicazione specificando: il calcolatore sul quale il processo è in esecuzione; il numero di porta, che identifica il processo sul suo calcolatore ai fini della comunicazione

11 Indirizzamento Il calcolatore è specificato tramite l indirizzo IP (Internet Protocol): l indirizzo IP è composto da 4 byte (quindi 32 bit) (per esempio ). La porta è un valore intero che può essere specificato dal processo o assegnato automaticamente: alcune porte (comprese tra 0 e 1023) sono assegnate a servizi standard e non possono essere utilizzate per sviluppare propri serventi. L indirizzamento TCP completo è quindi specificato fornendo l indirizzo IP della macchina e la porta TCP: Es. < , 80> significa: porta 80 (di solito è la porta del server Web); della macchina di indirizzo

12 Il modello di comunicazione e la connessione La comunicazione TCP è connection-oriented (orientata alla connessione): perché due processi comunichino è necessario prima stabilire una connessione, quindi scambiare i dati. Perché una connessione possa essere stabilita è necessario che un processo (generalmente il servente P) sia in attesa di una richiesta di connessione da parte di un altro processo (il cliente Q)

13 Il modello di comunicazione e la connessione Sequenza per la connessione di due processi P e Q: P e Q rappresentano i punti terminali della connessione considerata; ogni punto terminale è identificato dalla coppia <indirizzo IP, numero di porta>; ogni connessione è quindi identificata da 4 numeri: <indirizzo IP di P, numero di porta di P>, <indirizzo IP di Q, numero di porta di Q>; dopo la connessione, il canale di comunicazione è bidirezionale, affidabile e orientato al flusso (stream). Si noti che uno stesso processo può partecipare a diverse connessioni contemporaneamente. Le diverse connessioni sono infatti distinte dagli altri punti terminali

14 Il modello di comunicazione e la connessione Le principali caratteristiche del canale di comunicazione sono: bidirezionale: P colloquia con Q e Q colloquia con P; orientato al flusso (stream): consente una trasmissione continua di byte (o di gruppi di byte); affidabile: se il destinatario (Q o P) non riceve un byte (o un gruppo di byte), il mittente (P o Q) se ne accorge. È la caratteristica di TCP, non presente in IP

15 Tipi di calcolatori e formato dei dati I calcolatori che si affacciano sulla rete (host) possono essere di tipi e con sistemi operativi differenti. I dati possono essere rappresentati in modi differenti. TCP / IP prevede un formato di rete dei dati unico: ogni calcolatore dispone di routine per convertire i dati dal formato TCP/IP al proprio formato locale e viceversa. Indirizzo IP: u_long inet_addr (char * stringa) char * inet_ntoa (u_long addr) Porta TCP: u_short htons (u_short port) u_short ntohs (u_short port)

16 La programmazione di rete La connessione

17 Il meccanismo accept-connect La creazione di una connessione tra due processi deve seguire le seguenti regole: il processo P (server) si pone in attesa di richieste di connessione (apertura passiva). Si utilizza la funzione accept (bloccante). il processo Q (client) formula una richiesta a P di apertura di connessione (apertura attiva): Si utilizza la funzione connect. Le richieste si attuano sull interfaccia di socket tramite le funzioni accept / connect. Per stabilire una connessione è necessario, dal punto di vista programmativo, inizializzare opportune variabili che descrivono i punti terminali della connessione. Lo vedremo con degli esempi

18 Il meccanismo accept-connect La connessione può fallire perché: il processo P (servente) non esiste; P esiste ma non ha eseguito la accept; P esiste ma è occupato in un altra connessione e la coda dei processi che richiedono connessioni a P è già piena; Q (cliente) non conosce gli esatti valori dell indirizzo IP del calcolatore di P e della porta TCP di P;

19 Un cliente semplice Le operazioni svolte dal processo Q (cliente) che effettua una richiesta di connessione a un altro processo (apertura attiva) sono: definisce una opportuna variabile di tipo struct sockaddr_in per contenere le informazioni sul punto terminale che identifica il servente a cui vuole connettersi (il tipo struct sockaddr_in è definito per contenere informazioni di un punto terminale); inizializza la variabile relativa con dati validi; può definire una seconda variabile di tipo struct sockaddr_in per contenere le informazioni del punto terminale che rappresenta se stesso; crea un socket della connessione (descrittore); esegue la connect specificando il proprio socket

20 Descrizione del punto terminale - struct sockaddr_in struct sockaddr_in { short u_short sin_family; sin_port; struct in_addr sin_addr; char sin_zero [8]; } /* end sockaddr_in */ Dove: sin_family: famiglia di indirizzi AF_INET (Address Family InterNet) altre famiglie: AF_UP (Xerox), AF_APPLETALK (AppleTalk), AF_UNIX (UNIX) sin_port: numero di porta TCP, a 16 bit ( ) sin_addr: indirizzo IP, 32 bit sin_zero: non utilizzato

21 Inizializzazione del punto terminale #include <sys/type.h> #include <sys/socket.h> #include <netinet/in.h> /* costanti utili */ #define IND_SERVER /* NB è una stringa */ #define PORTA_SERVER 2000 /* NB è un numero */..... struct sockaddr_in server_addr; /* punto terminale */ int server_len = sizeof (server_addr); /* azzera il punto terminale */ bzero ((char *) &server_addr, server_len); server_addr.sin_family = AF_INET; /* htons: host to network conversion, short */ server_addr.sin_port = htons ((u_short) PORTA_SERVER); /* inet_addr: converte da stringa a formato rete */ server_addr.sin_addr.s_addr = inet_addr (IND_SERVER);

22 Procedura addr_initialize #include <sys/type.h> #include <sys/socket.h> #include <netinet/in.h> void addr_initialize (struct sockaddr_in * indirizzo, int port, long IPaddr) { indirizzo->sin_family = AF_INET; indirizzo->sin_port = htons ((u_short) port); /* htons: host to network conversion, short */ indirizzo->sin_addr.s_addr = IPaddr; } /* end addr_initialize */

23 Un cliente semplice inizializza il punto terminale servente crea un socket tramite l istruzione sd = socket (AF_INET, SOCK_STREAM, 0); esegue la richiesta di connessione error = connect (sd, (struct sockaddr *) &server_addr, sizeof (server_addr)); Tramite la funzione connect gli viene assegnata una porta di cui può conoscere il valore tramite la funzione getsockname. al termine, chiude il socket rilasciando la porta che così potrà essere utilizzata da altri programmi: close (sd);

24 socket ( ) int socket (int family, int type, int protocol) / Crea un socket e ne restituisce il descrittore, -1 = errore. Parametri: family, definisce la famiglia di protocolli (AF_INET per TCP/IP, AF_UP per Xerox,...); type, specifica il tipo di comunicazione (SOCK_STREAM per servizio di consegna affidabile TCP, SOCK_DGRAM per datagramma senza connessione UDP,...); protocol, specifica quale protocollo utilizzare se nella famiglia utilizzata ne esiste più di uno, normalmente vale 0. Nota bene: il socket da solo non è ancora il canale di rete, è soltanto una struttura dati che serve per gestire il canale di rete; per aprire un canale di rete associandolo al socket occorre chiamare la primitiva connect oppure la primitiva accept /

25 connect ( ) int connect (int sd, struct sockaddr server_ep, int ep_len) / Invia una richiesta di collegamento in qualità di cliente, restituisce 0 se successo, -1 se errore. Parametri: sd, specifica il socket (che deve essere già stato creato) da associare al canale di rete; server_ep, specifica il punto terminale (endpoint) del destinatario della richiesta di collegamento, che è il server; ep_len, specifica la lunghezza in byte del punto terminale / Chiamata tipica: error = connect (sd, (sockaddr *) &server_ep, sizeof (server_ep));

26 Passaggio di parametri a main argc: contiene il numero dei parametri ricevuti. argv: è un vettore di puntatori a stringhe, ognuna delle quali è un parametro. Per convenzione argv[0] contiene sempre il nome del programma in esecuzione. #include <stdio.h> void main (int argc, char * argv[]) { int i; printf ( il valore di argc e %d \n \n, argc); for (i = 0; i < argc; i++) { printf ( parametro %i = %s\n, i, argv[i]); } / end for */ } /* end main */ >prova il valore di argc e 2 parametro 0 = prova1 parametro 1 =

27 Codice di UClient1 (I) /* programma UCLIENT1 */ #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #define PORT 4000 void addr_initialize ( ); void main (int argc, char * argv[]) { /* legge sulla linea di comando l indirizzo di IP del calcolatore dove c è il server */ int sd; struct sockaddr_in server_addr; struct sockaddr_in mio_addr; int mio_addr_len = sizeof (mio_addr); int error;

28 Codice di UClient1 (II) addr_initialize (&server_addr, PORT, inet_addr (argv[1])); sd = socket (AF_INET, SOCK_STREAM, 0); error = connect (sd, (struct sockaddr *) &server_addr, sizeof (server_addr)); if (error == 0) { printf ("Ho eseguito la connessione\n"); getsockname (sd, &mio_addr, &mio_addr_len); printf ( la mia porta e': %d.\n\n", ntohs (mio_addr.sin_port)); close (sd); } /* end if */ else printf ("%s","\nerrore di connect.\n\n"); close (sd); } /* end main */

29 Esecuzione di UClient1 Se il servente non è attivo, il cliente riporta il fallimento della connessione:

30 Un servente semplice (I) Le operazioni svolte dal processo P che si mette in attesa di richieste di connessione da altri processi (apertura passiva) sono analoghe a quelle svolte da Q: predispone una variabile struct sockaddr_in client_addr per memorizzare l indirizzo IP e la porta del cliente per potergli rispondere; predispone una variabile struct sockaddr_in server_addr per inizializzare il proprio punto terminale, specificando indirizzo e numero di porta. Generalmente un servente specifica che intende accettare connessioni sulla propria porta, indipendentemente dall indirizzo IP (del servente stesso) sul quale arrivano le richieste (INADDR_ANY); crea un socket sd per accettare connessioni

31 Un servente semplice (II) indica a TCP/IP che l indirizzo locale associato al socket sd è quello contenuto in server_addr tramite la funzione bind: bind (sd,(struct sockaddr *) &server_addr, sizeof (server_addr)); si pone in attesa di una richiesta di connessione tramite la funzione accept: new_sd = accept (sd, (struct sockaddr *) &client_addr, &client_len); Poiché la funzione accept è bloccante (con time-out), il programma eseguito dal servente può proseguire solo quando arriva una richiesta di connessione; Quando la accept è stata eseguita la connessione è associata al nuovo socket new_sd e quindi le operazioni di trasmissione e/o ricezione dati fanno riferimento a questo socket. Il socket sd può essere usato per accettare altre richieste di connessione

32 Un servente semplice (III) il servente chiude la connessione con il cliente tramite la close (new_sd); In aggiunta il servente: può stabilire il numero massimo di richieste di connessione che può accodare (MAXCONN), servendone però sempre una sola per volta: listen (sd, MAXCONN); La funzione listen serve anche per sincronizzare le richieste tra cliente e servente ed elimina il problema di connect fallita nel caso in cui il servente non abbia ancora eseguito la accept quando il cliente esegue la connect

33 bind ( ) int bind (int sd, struct sockaddr server_ep, int ep_len) / Associa un numero di porta TCP a un socket, restituisce 0 se successo, -1 se errore. Parametri: sd, specifica il socket da associare al numero di porta TCP; server_ep, specifica il punto terminale (endpoint) contenente il numero di porta da associare (l'indirizzo ha funzione di filtro); ep_len, specifica la lunghezza in byte del punto terminale /

34 accept ( ) int accept (int sd, struct sockaddr client_ep, int ep_len) / Accetta una richiesta di collegamento in qualità di servente, restituisce un nuovo socket (sempre >= 0) se successo, -1 se errore; il nuovo socket restituito è quello su cui portare avanti il dialogo con il cliente richiedente; il vecchio socket è disponibile per ulteriori accettazioni. Parametri: sd, specifica il socket (che deve essere già stato creato) su cui ricevere la richiesta di collegamento proveniente dal cliente; client_ep, specifica la locazione in cui memorizzare il punto terminale (endpoint) del cliente; ep_len, specifica la locazione in cui memorizzare la lunghezza in byte del punto terminale / Chiamata tipica: new_sd = accept (sd, (sockaddr *)&client_ep, &ep_len);

35 Codice di UServer1 (I) /* programma USERVER1 */ #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #define PORT 4000 #define MAXCONN 5 void addr_initialize ( ); void main (int argc, char * argv[]) { int sd, new_sd; struct sockaddr_in server_addr; struct sockaddr_in client_addr; int client_len = sizeof (client_addr);

36 Codice di UServer1 (II) addr_initialize (&server_addr, PORT, INADDR_ANY); sd = socket (AF_INET, SOCK_STREAM, 0); bind (sd, (struct sockaddr *) &server_addr, sizeof (server_addr)); listen (sd, MAXCONN); printf ("Mi pongo in attesa di richieste di connessione\n"); printf ("sulla mia porta: %d.\n", ntohs (server_addr.sin_port)); new_sd = accept (sd, (struct sockaddr *) &client_addr, &client_len); printf ("\n\nho accettato una connessione\n"); printf ("dal client con porta: %d\n\n", ntohs (client_addr.sin_port)); close (new_sd); close (sd); } / * end main */

37 UClient1 e UServer1 in esecuzione

38 Connessione lato cliente e lato servente lato cliente lato servente Indirizzo IP Indirizzo/i IP numero porta del server socket della connessione (lato cliente) socket per accettare connessioni (bind.., listen.) connect(, con chi ) new_sd=accept(, da chi ) numero porta del client socket della connessione accettata (lato servente)

39 La programmazione di rete La trasmissione

40 La trasmissione Dopo aver stabilito la connessione bidirezionale (accept / connect), i due processi possono scambiarsi dati (caratteri) tramite le funzioni send e receive: send: spedisce dati all altro punto terminale della connessione; receive: riceve dati inviati dall altro punto terminale della connessione

41 Trasmissione send all invocazione della funzione i byte da trasferire, presenti nelle variabili del processo, vengono copiati in un area di sistema (buffer di sistema) e il processo può proseguire nell elaborazione anche se i dati non sono ancora arrivati a destinazione. È sospensiva per il processo che la invoca solo se il buffer di sistema è pieno. receive sospensiva: all invocazione della funzione il processo che la esegue non può proseguire nell elaborazione finché i dati non siano stati ricevuti e copiati nel buffer di sistema del ricevente (a meno di chiusura di connessione o errore). I byte ricevuti nel buffer di sistema vengono quindi copiati nelle variabili del processo; se sono stati ricevuti più dati di quelli copiabili nelle variabili del processo, questi rimangono disponibili nel buffer di sistema per chiamate successive

42 Sintassi delle primitive int send (int sd, char message, int len, int flags) / Spedisce, attraverso il canale identificato da sd, len byte memorizzati nella stringa message. Restituisce il numero di byte effettivamente inviati, -1 se errore. Altri param.: flags, specifica funzioni speciali, di solito 0 / int recv (int sd, char message, int len, int flags) / Riceve, attraverso il canale identificato da sd, len byte e li memorizza nella stringa message. Restituisce il numero di byte effettivamente ricevuti, -1 se errore. Altri param.: flags, specifica funzioni speciali, di solito 0 /

43 Esempio d uso Send... char dati [12] = "abcdefghilm"; int num; /* numero byte da inviare */ int inviati; /* numero byte trasmessi */ num = 7; inviati = send (sd, dati, num, 0); Receive... #define DIM... char dati_ricevuti [DIM + 1]; int ricevuti; /* numero byte ricevuti */ ricevuti = recv (sd, dati_ricevuti, DIM, 0);

44 Esempio d uso 2 - Cliente con ricezione carattere, eco e ritrasmissione di carattere (I) #include <stdio.h> #include <sys/socket.h> void main (int argc, char * argv[]) { int sd; struct sockaddr_in server; int error; char c; /* inizializzazione pto terminale del server */ server.sin_family = AF_INET; server.sin_port = htons ((u_short) 4500); server.sin_addr.s_addr = inet_addr ( ); sd = socket (AF_INET, SOCK_STREAM, 0); error = connect (sd, (struct sockaddr *) &server_addr, sizeof (server_addr));

45 Esempio d uso 2 - Cliente con ricezione carattere, eco e ritrasmissione di carattere (II) if (error == 0) { recv (sd, &c, 1, 0); printf ( %c\n, c); send (sd, &c, 1, 0); printf ("\nchiudo la connessione.\n"); close (sd); } else { printf ("%s","\nerrore di connect.\n\n"); close (sd); } /* end if */ } /* end main */

46 Ancora sul funzionamento: send int send (int sd, char message, int len, int flags) copia in memoria di sistema del trasmittente len byte prelevati da message (variabile utente); non bloccante se la memoria di sistema è sufficiente a contenere i byte da spedire; valore restituto: n byte effettivamente spediti (< 0 se errore)

47 Ancora sul funzionamento - receive int recv (int sd, char message, int len, int flags) bloccante fino all arrivo dei dati (o alla segnalazione dell evento di chiusura della connessione o d errore); riceve i dati depositandoli nel buffer di sistema del ricevente e copia len byte in message (variabile utente); valore restituito: - se n byte effettivamente ricevuti <= len, allora valore restituito = n byte effettivamente ricevuti; - se n byte ricevuti > len,allora solo len copiati in message (i rimanenti sono disponibili per receive successive) e valore restituito = n byte copiati; - se chiusura connessione valore restituito = 0, se errore valore restituito <

48 Un esempio - UClient2 e Userver2 UClient2 e Userver2: Invio da parte di un cliente di un n variabile di caratteri che vengono ricevuti da un servente che li visualizza. Il numero di caratteri da inviare è specificato dall utente del cliente (se viene specificato 0, l applicazione deve terminare)

49 UClient2 UClient2: stabilisce la connessione con UServer2; chiede all utente di inserire il numero di caratteri che si vogliono inviare (num); preleva da un buffer (char dati [12]) tali caratteri e li invia al servente; ripete la richiesta di num. Termina se l utente ha indicato che non si vogliono spedire ulteriori caratteri (num = 0), chiudendo la connessione

50 Codice di UClient2 (I) #include <stdio.h> #include <sys/socket.h> #define PORT 4000 void addr_initialize ( ); void main (int argc, char * argv[]) { int sd; struct sockaddr_in server_addr; struct sockaddr_in mio_addr; int mio_addr_len = sizeof (mio_addr); int error, num, inviati; char dati [12] = "abcdefghilm"; addr_initialize (&server_addr, PORT, inet_addr (argv[1])); sd = socket (AF_INET, SOCK_STREAM, 0); error = connect (sd, (struct sockaddr *) &server_addr, sizeof (server_addr));

51 Codice di UClient2 (II) if (error == 0) { printf ("Ho eseguito la connessione\n"); printf ("\n inserire il numero di caratteri da trasmettere: "); scanf ("%d", &num); while (num > 0) { inviati = send (sd, dati, num, 0); printf ( inserire il numero di caratteri da trasmettere:"); scanf ("%d", &num); } /* end while */ printf ("\nchiudo la connessione\n"); close (sd); } /* end if */ else printf ("%s","\nerrore di connect\n\n"); close (sd); } /* end main */

52 UServer2 UServer2: accetta la connessione (da UClient2); riceve un numero variabile di caratteri (ric), con un limite massimo di DIMBUF; stampa a video il numero di caratteri ricevuti e i caratteri stessi. Poi: si prepara per una nuova ricezione di caratteri dalla stessa connessione; se non ha ricevuto caratteri (ric = 0) chiude la connessione con UClient2 e si prepara per una nuova connessione da un nuovo cliente

53 Codice di UServer2 (II) #include <stdio.h> #include <sys/socket.h> #define PORT 4000 #define MAXCONN 5 #define DIMBUF 6 void addr_initialize ( ); void main (int argc, char * argv[]) { int sd,new_sd; struct sockaddr_in server_addr; struct sockaddr_in client_addr; int client_len = sizeof (client_addr); int ric, i; char buf [DIMBUF]; addr_initialize (&server_addr, PORT, INADDR_ANY);

54 Codice di UServer2 (II) sd = socket (AF_INET, SOCK_STREAM, 0); bind (sd, (struct sockaddr *) &server_addr, sizeof (server_addr)); listen (sd, MAXCONN); while (1) { printf ("\nmi pongo in attesa di richieste di connessione\n"); new_sd = accept (sd, (struct sockaddr *) &client_addr, &client_len); printf ("Ho accettato una connessione\n"); ric = 1; while (ric > 0) { ric = recv (new_sd, buf, DIMBUF, 0); printf ("\nho ricevuto %d caratteri: ", ric); for (i = 0; i < ric; i++) { printf ("%c", buf[i]); } /* end for */ } /* end while */ close (new_sd); printf ("chiudo la connessione\n"); } /* fine del ciclo perenne */ } /* end main*/

55 - 55 -

56 Ricezione di sequenze di caratteri da memorizzare in una stringa (array di caratteri) La ricezione di sequenze di caratteri da memorizzare in stringhe (array di caratteri terminate da \0 ) deve garantire la correttezza dell operazione, e cioè nell array devono venire copiati tutti e soli i caratteri della sequenza. Si deve inoltre ricordare che i buffer di sistema di mittente e destinatario di una trasmissione sono indipendenti tra loro. Per es., in un determinato istante il buffer di sistema del destinatario può contenere byte che provengono da due send successive. La ricezione può avvenire: carattere per carattere, fino a completare la sequenza (più semplice); a gruppi di caratteri, fino a completare la sequenza (più veloce). Inoltre la sequenza da ricevere può essere: di lunghezza fissata; di lunghezza variabile terminata da un carattere terminatore di fine_seq

57 Sequenza di caratteri di lunghezza fissata da memorizzare in una stringa Ricezione di un singolo carattere alla volta: char seq [DIM + 1]; int i; i = 0; while (i < DIM) { recv (sd, &seq[i], 1, 0); i++; } /* end while */ seq[i] = \0 ; 0 1 DIM \0-57 -

58 Sequenza di caratteri di lunghezza fissata da memorizzare in una stringa Ricezione di più caratteri alla volta: char seq [DIM + 1]; int i; i = 0; while (i < DIM) { ric = recv (sd, &seq[i], DIM - i, 0); i = i + ric; } /* end while */ seq[i] = \0 ;

59 Sequenza di caratteri terminata da carattere terminatore da memorizzare in una stringa Ricezione di un singolo carattere alla volta: char seq [MAXDIM]; char term =...; int i; i = 0; do { recv (sd, &seq[i], 1, 0); i++; } while (seq[i - 1]!= term); /* end do */ seq[i - 1] = \0 ; 0 1 MaxDIM-1 \0-59 -

60 Sequenza di caratteri terminata da carattere terminatore da memorizzare in una stringa Ricezione di più caratteri alla volta: char seq [MAXDIM]; char term =...; int i; i = 0; do { ric = recv (sd, &seq[i], MAXDIM - i, 0); i = i + ric; } while ((seq[i - 1]!= term) && (i < MAXDIM)); /* end do */ seq[i - 1] = \0 ;

Reti (già Reti di Calcolatori )

Reti (già Reti di Calcolatori ) Reti (già Reti di Calcolatori ) Cenni di Socket Programming Renato Lo Cigno http://disi.unitn.it/locigno/index.php/teaching-duties/computer-networks Socket API Programmazione dei socket Obiettivo:imparare

Dettagli

Socket. Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server.

Socket. Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Socket Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Tale architettura consente ai sistemi di condividere risorse e cooperare per il raggiungimento

Dettagli

Socket. Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server.

Socket. Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Socket Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Tale architettura consente ai sistemi di condividere risorse e cooperare per il raggiungimento

Dettagli

COMUNICAZIONE TRA PROCESSI REMOTI IN UNIX

COMUNICAZIONE TRA PROCESSI REMOTI IN UNIX A cura del prof. Gino Tombolini 1 COMUNICAZIONE TRA PROCESSI REMOTI IN UNIX Il sistema UNIX TCP/IP fornisce un meccanismo di comunicazione tra processi residenti su nodi distinti di una rete, compatibili

Dettagli

Interazione (TCP) Client-Server con le socket

Interazione (TCP) Client-Server con le socket Interazione (TCP) Client-Server con le socket D. Gendarmi Interazione TCP Client/Server Server 2. Assegnare un local address alla socket 3. Settare la socket all ascolto 4. Iterativamente: a. Accettare

Dettagli

I Socket. Laboratorio Software 2008-2009 M. Grotto R. Farina

I Socket. Laboratorio Software 2008-2009 M. Grotto R. Farina M. Grotto R. Farina Sommario 1. Applicazioni Distribuite 2. I Socket Introduzione Interfacce e protocolli Descrizione Stile di comunicazione Namespace e protocollo Include e system call Creazione e chiusura

Dettagli

Lo strato di applicazione in Internet

Lo strato di applicazione in Internet Lo strato di applicazione in Internet Prof. Ing. Carla Raffaelli a.a. 2004/2005 Protocolli applicativi Sono i protocolli utilizzati dalle applicazioni per scambiarsi informazioni Esempi: HTTP per il web,

Dettagli

L interfaccia socket

L interfaccia socket L interfaccia socket Application Programming Interface: API Socket API Procedure base Altre procedure Ordinamento dei byte Interazione client-server orientata alla connessione Interazione client-server

Dettagli

Esempio 1: stampa locale di file remoto

Esempio 1: stampa locale di file remoto Alcuni esempi di uso di Socket Esempio 1: stampa locale di file remoto Visualizzazione locale del contenuto di un file remoto. Il client deve richiedere la creazione della connessione e successivamente

Dettagli

IPC Inter Process Communication

IPC Inter Process Communication Il protocollo TCP controlla che la trasmissione tra due end points avvenga correttamente. Non stabilisce alcun criterio su chi deve iniziare la comunicazione. Questo compito è svolto dalle applicazioni

Dettagli

Cenni di programmazione distribuita in C++ Mauro Piccolo piccolo@di.unito.it

Cenni di programmazione distribuita in C++ Mauro Piccolo piccolo@di.unito.it Cenni di programmazione distribuita in C++ Mauro Piccolo piccolo@di.unito.it Socket Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Tale

Dettagli

TECN.PROG.SIST.INF. TCP socket in Windows. 2015 - Roberta Gerboni

TECN.PROG.SIST.INF. TCP socket in Windows. 2015 - Roberta Gerboni 2015 - Roberta Gerboni Schema logico della comunicazione TCP in linguaggio C mediante bytestream socket. Parte asimmetrica Ruolo passivo bind () Parte asimmetrica Ruolo attivo Parte simmetrica Parte simmetrica

Dettagli

ESERCITAZIONE 2 RIPASSO. EX. 1 Un processo padre (parent) crea due processi figli (children) e attende la loro terminazione. Se, e solo se,...

ESERCITAZIONE 2 RIPASSO. EX. 1 Un processo padre (parent) crea due processi figli (children) e attende la loro terminazione. Se, e solo se,... ESERCITAZIONE DEL 23 MARZO 2002 ESERCITAZIONE 2 RIPASSO EX. 1 Un processo padre (parent) crea due processi figli (children) e attende la loro terminazione. Se, e solo se,. EX. 2 Un server di rete attende

Dettagli

Internetworking with TCP/IP (Douglas E. Comer) Vol. I and Vol III.

Internetworking with TCP/IP (Douglas E. Comer) Vol. I and Vol III. Internetworking with TCP/IP (Douglas E. Comer) Vol. I and Vol III http://gapil.truelite.it/ http://www.linuxdidattica.org/docs/a ltre_scuole/planck/socket/ Client Server Esistono vari modelli di architettura

Dettagli

Laboratorio di Sistemi Operativi 29-01-2009. Cognome Nome Mat.

Laboratorio di Sistemi Operativi 29-01-2009. Cognome Nome Mat. Il compito è costituito da domande chiuse, domande aperte ed esercizi. Non è consentito l uso di libri, manuali, appunti., etc. Tempo massimo 2 ore. Domande chiuse: ogni domanda corrisponde ad un punteggio

Dettagli

Paradigma client-server

Paradigma client-server Interazione Client Server (socket) Vittorio Maniezzo Università di Bologna Vittorio Maniezzo Università di Bologna 15 CliSer - 1/31 Paradigma client-server Le applicazioni utente devono interagire con

Dettagli

Creare una applicazione Winsock di base

Creare una applicazione Winsock di base Creare una applicazione Winsock di base Usiamo le API Winsock incluse in Creare un progetto per una Socket Windows (in Dev C++) Selezionare la file New Projects Selezionare Empty Project Salvare

Dettagli

Esercitazione [6] Client/Server con Socket

Esercitazione [6] Client/Server con Socket Esercitazione [6] Client/Server con Socket Leonardo Aniello - aniello@dis.uniroma1.it Daniele Cono D'Elia - delia@dis.uniroma1.it Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di

Dettagli

Programmazione socket. Queste slide sono distribuite con licenza Creative Commons Attribuzione-Non commerciale-condividi allo stesso modo 2.

Programmazione socket. Queste slide sono distribuite con licenza Creative Commons Attribuzione-Non commerciale-condividi allo stesso modo 2. Programmazione socket Queste slide sono distribuite con licenza Creative Commons Attribuzione-Non commerciale-condividi allo stesso modo 2.5 Italia Applicazioni di rete Realizzare un'applicazione di rete

Dettagli

LABORATORIO di Reti di Calcolatori

LABORATORIO di Reti di Calcolatori LABORATORIO di Reti di Calcolatori Socket in linguaggio C: protocollo connection-oriented 1 of 15 v slide della docente Bibliografia v testo di supporto: D. Maggiorini, Introduzione alla programmazione

Dettagli

DATAGRAM SOCKET. Angelastro Sergio Diomede Antonio Viterbo Tommaso

DATAGRAM SOCKET. Angelastro Sergio Diomede Antonio Viterbo Tommaso DATAGRAM SOCKET Angelastro Sergio Diomede Antonio Viterbo Tommaso Definizione supporta i datagram privo di connessione messaggi inaffidabili di una lunghezza massima prefissata il protocollo UDP supporta

Dettagli

Program m azione di Sistem a 6

Program m azione di Sistem a 6 Program m azione di Sistem a 6 Lucidi per il corso di Laboratorio di Sistemi Operativi tenuto da Paolo Baldan presso l'università Ca' Foscari di Venezia, anno accademico 2004/ 2005. Parte di questo materiale

Dettagli

Esercitazione Laboratorio di Sistemi Operativi 20-01-2014. Cognome Nome Mat.

Esercitazione Laboratorio di Sistemi Operativi 20-01-2014. Cognome Nome Mat. Il compito è costituito da domande chiuse e domande aperte. Non è consentito l uso di libri, manuali, appunti., etc. Tempo massimo 2 ore. Domande chiuse: ogni domanda corrisponde ad un punteggio di 1 punto

Dettagli

Struttura interna del sistema operativo Linux

Struttura interna del sistema operativo Linux Struttura interna del sistema operativo Linux 5. I device driver A cura di: Anna Antola Giuseppe Pozzi DEI, Politecnico di Milano anna.antola/giuseppe.pozzi@polimi.it -versione del 30 marzo 2004-1-04.-04

Dettagli

Creare un'elementare backdoor in C in ambiente UNIX

Creare un'elementare backdoor in C in ambiente UNIX Creare un'elementare backdoor in C in ambiente UNIX DISCLAIMER: Questo tutorial è a solo scopo didattico. L'autore NON si prende alcuna responsabilità circa usi errati o non legali delle informazioni qui

Dettagli

Server Iterativi. Server TCP Ricorsivi. Fork. Server Ricorsivi. un server iterativo gestisce una connessione alla volta. Prof.

Server Iterativi. Server TCP Ricorsivi. Fork. Server Ricorsivi. un server iterativo gestisce una connessione alla volta. Prof. Università degli studi di Salerno Laurea in Informatica a.a. 2003/04 TCP Ricorsivi Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ 1 Iterativi un server iterativo

Dettagli

Una semplice applicazione client/server 1

Una semplice applicazione client/server 1 Una semplice applicazione client/server 1 Il nostro obiettivo In questa parte del corso implementeremo un applicazione client/server che usa i socket Internet disponibili nei sistemi Unix/Linux. Nello

Dettagli

Introduzione alla programmazione C di socket

Introduzione alla programmazione C di socket Introduzione alla programmazione C di socket (testo di riferimento : M. J. Donahoo, K. L. Calvert, TCP/IP Sockets in C: Practical Guide for Programmers. Morgan Kaufman Publishers. ) A.A. 2005/06 Una rete

Dettagli

Socket TCP. prima parte

Socket TCP. prima parte Socket TCP prima parte Cosa cambia: socket int fd = socket(pf_inet, SOCK_STREAM, 0); if (fd

Dettagli

Modello a scambio di messaggi

Modello a scambio di messaggi Modello a scambio di messaggi Aspetti caratterizzanti il modello Canali di comunicazione Primitive di comunicazione 1 Aspetti caratterizzanti il modello modello architetturale di macchina (virtuale) concorrente

Dettagli

Le Reti Informatiche

Le Reti Informatiche Le Reti Informatiche modulo 8 Prof. Salvatore Rosta www.byteman.it s.rosta@byteman.it 1 Il Livello di Trasporto: 1 L utente non ha il controllo sulla rete; non può risolvere i problemi di un servizio inadeguato

Dettagli

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione I semestre 03/04 Comunicazione tra Computer Protocolli Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in Informatica 2

Dettagli

Reti di Calcolatori - Laboratorio. Lezione 5. Gennaro Oliva

Reti di Calcolatori - Laboratorio. Lezione 5. Gennaro Oliva Reti di Calcolatori - Laboratorio Lezione 5 Gennaro Oliva Server basato su I/O Multiplex Per realizzare un server è possibile utilizzare l'i/o Multiplex Un unico processo iterativo gestisce il socket che

Dettagli

Sistemi Operativi Teledidattico

Sistemi Operativi Teledidattico Sistemi Operativi Teledidattico Anno 2002 3a esercitazione 5/10/2002 Paolo Torroni processi fork (creazione di un figlio) exec (sostituzione di codice del programma in esecuzione) wait (attesa della terminazione

Dettagli

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori a.a. 2009/10

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori a.a. 2009/10 Corso di Laurea in Ingegneria Informatica Corso di Reti di Calcolatori a.a. 2009/10 Roberto Canonico (roberto.canonico@unina.it) Antonio Pescapè (pescape@unina.it) Le socket di Berkeley Le socket di Berkeley

Dettagli

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ&

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ& (VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ& 3ULPRHVHUFL]LR6RFNHWVWUHDPFRQULGLUH]LRQH Si progetti un applicazione distribuita Client/Server per una rete di workstation UNIX (BSD oppure System V). In particolare,

Dettagli

Socket per TCP: Fondamenti

Socket per TCP: Fondamenti Socket per TCP: Fondamenti Network Applications Molte applicazioni di rete sono formate da due programmi distinti (che lavorano su due diversi host) uno detto server ed uno detto client. Il server si mette

Dettagli

CAP9. Device drivers

CAP9. Device drivers Struttura interna del sistema operativo Linux CAP9. Device drivers Device drivers Gestori di periferiche Sono moduli software che realizzano l interfacciamento e la gestione dei dispositivi periferici

Dettagli

Laboratorio reti AA 2008/2009. Dott. Matteo Roffilli Ricevimento in ufficio dopo la lezione

Laboratorio reti AA 2008/2009. Dott. Matteo Roffilli Ricevimento in ufficio dopo la lezione Laboratorio reti AA 2008/2009 Dott. Matteo Roffilli roffilli@csr.unibo.it Ricevimento in ufficio dopo la lezione 1 Laboratorio reti AA 2008/2009 Per esercitarvi fate SSH su: alfa.csr.unibo.it si-tux00.csr.unibo.it.

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2016-17 Pietro Frasca Lezione 20 Giovedì 22-12-2016 Comunicazione: pipe In Unix, processi possono comunicare

Dettagli

Protocolli multimediali

Protocolli multimediali Protocolli multimediali RTP, RTCP, RTSP Ormai molte applicazioni scambiano informazioni in cui le relazioni temporali sono molto importanti. La Telefonia via Internet, Videoconferenza, Lezioni a distanza,

Dettagli

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length); Fondamenti di Informatica L-A (A.A. 004/005) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista I Prova Intermedia del 11/11/004 - durata h - COMPITO B Esercizio 1 (punti 1) Una associazione di

Dettagli

Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012. - Comunicazione Tra Processi (IPC) - - 2 Parte -

Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012. - Comunicazione Tra Processi (IPC) - - 2 Parte - Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012 - Comunicazione Tra Processi (IPC) - - 2 Parte - 1 Sommario Comunicazione tra processi su macchine diverse in rete: Socket TCP o Socket Stream

Dettagli

ACSO Programmazione di Sistema e Concorrente

ACSO Programmazione di Sistema e Concorrente ACSO Programmazione di Sistema e Concorrente P2 Modello Thread 2/12/2015 programma e parallelismo il tipo di parallelismo dipende dal grado di cooperazione (scambio di informazione) necessario tra attività

Dettagli

Strato di trasporto. Livello di applicazione SAP. Livello di trasporto. Livello di rete SAP

Strato di trasporto. Livello di applicazione SAP. Livello di trasporto. Livello di rete SAP Strato di trasporto Lo strato di trasporto si colloca al livello 4 dello strato ISO-OSI e svolge il compito di mettere in comunicazione diversi processi software. La comunicazione tra applicazioni avviene

Dettagli

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE Input/output da file Il linguaggio C non contiene istruzioni di I/O, in quanto tali operazioni vengono eseguite tramite funzioni di libreria standard. Questo approccio rende estremamente flessibile e potente

Dettagli

Architetture di rete. 4. Le applicazioni di rete

Architetture di rete. 4. Le applicazioni di rete Architetture di rete 4. Le applicazioni di rete Introduzione L avvento di tecnologie (hw, sw, protocolli) di rete avanzate ha permesso la nascita di architetture software molto evolute che permettono lo

Dettagli

INTERNET DOMAIN SOCKETS (Cap.59)

INTERNET DOMAIN SOCKETS (Cap.59) INTERNET DOMAIN SOCKETS (Cap.59) Internet Domain Stream Socket TCP Internet Domain Datagram Socket UDP A differenza degli UDDS I datagrams possono essere persi duplicati o arrivare in un ordine diverso

Dettagli

SISTEMI DI ELABORAZIONE

SISTEMI DI ELABORAZIONE SISTEMI DI ELABORAZIONE CORSO DI LAUREA MAGISTRALE IN INGEGNERIA ELETTRONICA SPECIFICHE DI PROGETTO A.A. 2011/2012 Il progetto consiste nello sviluppo di un applicazione client/server. Client e server

Dettagli

Socket TCP. seconda parte

Socket TCP. seconda parte Socket TCP seconda parte Schema della connessione Computer 1 127.43.18.1 indirizzo I1 indirizzo I2 Computer 2 143.225.5.3 porta 45000 socket porta 5200 socket processo client processo server socket(...)

Dettagli

*HVWLRQHDYDQ]DWDGHOOH6RFNHWLQ& ODSULPLWLYDVHOHFW

*HVWLRQHDYDQ]DWDGHOOH6RFNHWLQ& ODSULPLWLYDVHOHFW *HVWLRQHDYDQ]DWDGHOOH6RFNHWLQ& ODSULPLWLYDVHOHFW 7&3H8'3&OLHQW6HUYHUXVDQGRVHOHFW Si progetti un applicazione distribuita Client/Server per una rete di workstation UNIX (BSD oppure System V). In particolare,

Dettagli

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat. Il compito è costituito da domande chiuse, domande aperte ed esercizi. Non è consentito l uso di libri, manuali, appunti., etc. Tempo massimo 2 ore. Domande chiuse: ogni domanda corrisponde ad un punteggio

Dettagli

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore I puntatori Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore...... L operatore & fornisce l indirizzo di un oggetto: p = &c; assegna a p l indirizzo di c, i.e., p

Dettagli

Programmazione di applicazioni di rete

Programmazione di applicazioni di rete Programmazione di applicazioni di rete Valeria Cardellini Università di Roma Tor Vergata Applicazioni di rete Applicazioni di rete - forniscono i servizi di alto livello utilizzati dagli utenti - determinano

Dettagli

Modello client-server

Modello client-server Modello -server Il server fornisce servizi sulla rete Viene eseguita l applicazione server su un host L applicazione attende connessioni dalla rete Il usufruisce del servizio attraverso la rete Deve conoscere

Dettagli

Stringhe e allocazione dinamica della memoria

Stringhe e allocazione dinamica della memoria Stringhe e allocazione dinamica della memoria Esercizio Scrivere un programma strings.c che legge da standard input una sequenza di parole separate da uno o più spazi, e stampa le parole lette, una per

Dettagli

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00 Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00 NB: alcune domande hanno risposta multipla: si richiede di identificare TUTTE le risposte corrette. Cognome: Nome:

Dettagli

RETI DI CALCOLATORI Home Work ritardi e livello applicativo

RETI DI CALCOLATORI Home Work ritardi e livello applicativo RETI DI CALCOLATORI Home Work ritardi e livello applicativo Prima parte Q1. Supponiamo che un router A trasmetta un pacchetto su un collegamento con un router B, che la frequenza di trasmissione del collegamento

Dettagli

Livello di trasporto: meccanismi trasferimento dati affidabile, TCP

Livello di trasporto: meccanismi trasferimento dati affidabile, TCP Livello di trasporto: meccanismi trasferimento dati affidabile, TCP Gaia Maselli Queste slide sono un adattamento delle slide fornite dal libro di testo e pertanto protette da copyright. - Copyright 2013

Dettagli

MODELLI ISO/OSI e TCP/IP

MODELLI ISO/OSI e TCP/IP PARTE I - Reti di Calcolatori ed Internet MODELLI ISO/OSI e TCP/IP Reti di Calcolatori Livelli e Servizi Il modello OSI Il modello TCP/IP Un confronto tra OSI e TCP/IP ARPANET Ethernet Reti ATM reti wireless

Dettagli

rsystem Maximiliano Marchesi maximiliano.marchesi@studenti.unipr.it

rsystem Maximiliano Marchesi maximiliano.marchesi@studenti.unipr.it Maximiliano Marchesi 28 Settembre 2005 Diario delle Revisioni Revisione 1.2 28 Settembre 2005 maximiliano.marchesi@studenti.unipr.it Sommario Introduzione..................................................................................

Dettagli

Guida all' uso dei sockets nella programmazione in C

Guida all' uso dei sockets nella programmazione in C Guida all' uso dei sockets nella programmazione in C ( pseudo-traduzione personalizzata di "Beej's Guide to Network Programming" ) (Prima parte) INTRODUZIONE Finalmente ho trovato una guida chiara e semplice

Dettagli

Sviluppo di Applicazioni su Rete. Introduzione all API socket di Berkeley. Interazione tra Processi. Modello Client-Server

Sviluppo di Applicazioni su Rete. Introduzione all API socket di Berkeley. Interazione tra Processi. Modello Client-Server a.a. 2003/04 Introduzione all API socket di Berkeley Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea e Diploma in Informatica

Dettagli

Corso di Reti di Calcolatori L-A

Corso di Reti di Calcolatori L-A Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 9 (svolta) RPC: Inizializzazione Strutture Dati sul Server Luca Foschini Anno accademico 2010/2011

Dettagli

Array. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali

Array. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali MASTER Information Technology Excellence Road (I.T.E.R.) Array Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1 Tipi di dato stutturati In C si possono

Dettagli

SC per Inter Process Comminication. Comunicazione fra macchine diverse: socket

SC per Inter Process Comminication. Comunicazione fra macchine diverse: socket SC per Inter Process Comminication Comunicazione fra macchine diverse: socket 1 Sockets File speciali utilizzati per connettere due o più processi con un canale di comunicazione i processi possono risiedere

Dettagli

Una socket è un punto estremo di un canale di comunicazione accessibile mediante un file descriptor. Alcuni tipi predefiniti di socket

Una socket è un punto estremo di un canale di comunicazione accessibile mediante un file descriptor. Alcuni tipi predefiniti di socket Una socket è un punto estremo di un canale di comunicazione accessibile mediante un file descriptor Le socket costituiscono un fondamentale strumento di comunicazione, basato sullo scambio di messaggi,

Dettagli

Architettura di rete. Modelli di Riferimento: TCP/IP e OSI. Modello di riferimento OSI. Modelli di riferimento. architettura di rete

Architettura di rete. Modelli di Riferimento: TCP/IP e OSI. Modello di riferimento OSI. Modelli di riferimento. architettura di rete I semestre 02/03 Modelli di Riferimento: TCP/IP e OSI Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/~auletta/ Architettura di rete architettura di rete insieme delle specifiche funzionali

Dettagli

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura

Dettagli

I Socket di Berkeley

I Socket di Berkeley I Socket di Berkeley di Francesco Licandro Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università degli studi di Catania A.A. 2004-2005 1 Programmazione su rete Le applicazioni di

Dettagli

Funzioni e. Alessandra Giordani Mercoledì 16 maggio 2012

Funzioni e. Alessandra Giordani Mercoledì 16 maggio 2012 Funzioni e passaggio parametri Alessandra Giordani agiordani@disi.unitn.it Mercoledì 16 maggio 2012 http://disi.unitn.it/~agiordani/ Cosa vedremo oggi Le funzioni Il passaggio dei parametri Le dichiarazioni

Dettagli

Precedenza e associatività. Complementi sul C - 2. Esempi. Esempi

Precedenza e associatività. Complementi sul C - 2. Esempi. Esempi Complementi sul C - 2 Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Precedenza e associatività () [] ->. S D! ~ ++ + * & (cast ) sizeof S D * / % S D + - (somma e sottrazione) S D >

Dettagli

SISTEMI DI ELABORAZIONE

SISTEMI DI ELABORAZIONE 1 SISTEMI DI ELABORAZIONE CORSO DI LAUREA SPECIALISTICA IN INGEGNERIA ELETTRONICA SPECIFICHE DI PROGETTO A.A. 2012/2013 Il progetto consiste nello sviluppo di un applicazione client/server. Client e server

Dettagli

Corso di Reti di Telecomunicazioni. Giovanni Schembra. Trasmissione trame su canale broadcast

Corso di Reti di Telecomunicazioni. Giovanni Schembra. Trasmissione trame su canale broadcast Indirizzi LAN e ARP Corso di Reti di Telecomunicazioni Giovanni Schembra 1 Trasmissione trame su canale broadcast I nodi di una LAN si scambiano trame su un canale broadcast: quando un nodo in una LAN

Dettagli

Perché il linguaggio C?

Perché il linguaggio C? Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare

Dettagli

ALTRI TIPI DI CONNESSIONE

ALTRI TIPI DI CONNESSIONE ALTRI TIPI DI CONNESSIONE Socket Un socket è una connessione a una porta su un computer remoto, che è usata per scambiare informazioni con comandi HTTP Supponiamo che la nostra applicazione voglia ricevere

Dettagli

T.A.R.I. Socket (ICT, AL)

T.A.R.I. Socket (ICT, AL) Internet Applications (Client-Server Concept, Use of Protocol Ports, Socket API, DNS, E-mail, TELNET, FTP) Funzionalità Livello di trasporto e livelli sottostanti Comunicazione base Disponibilità Livello

Dettagli

la trasmissione è regolata solamente dall algoritmo per il controllo del flusso prima di inviare l ACK.

la trasmissione è regolata solamente dall algoritmo per il controllo del flusso prima di inviare l ACK. 1. Considerare il problema della stima del Round Trip Time. Supporre che inizialmente RTT valga 200 ms. Il mittente invia un segmento e riceve l ACK relativo dopo 100 ms, quindi invia un altro segmento,

Dettagli

Configurazione delle interfacce di rete

Configurazione delle interfacce di rete Configurazione delle interfacce di rete A.A. 2006/2007 Alessandro Botticelli Instradamento dei datagrammi IP Routing : scelta del percorso su cui inviare i dati i router formano struttura interconnessa

Dettagli

Sistemi di Elaborazione. Introduzione alla Programmazione distribuita

Sistemi di Elaborazione. Introduzione alla Programmazione distribuita Sistemi di Elaborazione Introduzione alla Programmazione distribuita Obiettivi Introdurre i concetti di base su programmazione distribuita Modello Client-Server Interfaccia Socket Progettare e realizzare

Dettagli

Elementi di programmazione con interfaccia Socket

Elementi di programmazione con interfaccia Socket Struttura generale per stream sockets Socket() Well-Known Port Bind() Elementi di programmazione con interfaccia Socket Cenni di programmazione secondo la nuova interfaccia Socket definita nella RFC 2553

Dettagli

Il linguaggio C. Notate che...

Il linguaggio C. Notate che... Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione

Dettagli

unsigned long inet_addr(cp) char *cp;

unsigned long inet_addr(cp) char *cp; /* bcopystru.c #include struct point int x; char *y; ; struct point a, b; struct pint *pta, *ptb; a.x = 5; a.y = pippo ; b = a; printf i valori del secondo point sono: %d %s\n,b.x,b.y); pta=

Dettagli

I/O INTERATTIVO. scanf: quello che è indispensabile sapere printf: quello che è utile sapere

I/O INTERATTIVO. scanf: quello che è indispensabile sapere printf: quello che è utile sapere I/O INTERATTIVO scanf: quello che è indispensabile sapere printf: quello che è utile sapere Input da tastiera Funzioni disponibili (tra le altre): scanf getchar Schema di funzionamento Tastiera Sistema

Dettagli

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy

Dettagli

Applicazioni web. Parte 10 Socket. Alberto Ferrari

Applicazioni web. Parte 10 Socket. Alberto Ferrari Applicazioni web Parte 10 Socket Protocolli I computer collegati ad Internet comunicano tra loro usando il Transmission Control Protocol (TCP) o lo User Datagram Protocol (UDP) Quando si scrivono programmi

Dettagli

Informatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi

Informatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi Informatica 1 Corso di Laurea Triennale in Matematica Gianluca Rossi gianluca.rossi@uniroma2.it Dipartimento di Matematica Università di Roma Tor Vergata 11: Stringhe (www.informatica-uno.blogspot.com)

Dettagli

MODELLO TCP/IP LIVELLO 4 Trasporto. Il protocollo per il controllo della trasmissione. La gestione degli errori di trasmissione

MODELLO TCP/IP LIVELLO 4 Trasporto. Il protocollo per il controllo della trasmissione. La gestione degli errori di trasmissione Prof.ssa Daniela Decembrino MODELLO /IP LIVELLO 4 Trasporto Il protocollo per il controllo della trasmissione significa Transmission Control Protocol, cioè Protocollo per il Controllo della Trasmissione.

Dettagli

Sistemi distribuiti e reti di calcolatori

Sistemi distribuiti e reti di calcolatori Sistemi distribuiti e reti di calcolatori 1 Indice Modulazione e trasmissione dei dati Reti di calcolatori Topologia Messaggi e protocolli ISO/OSI Ethernet Architettura client/server Telefonia mobile 2

Dettagli

Il livello di Trasporto del TCP/IP

Il livello di Trasporto del TCP/IP Il livello di Trasporto del TCP/IP Il compito del livello transport (livello 4) è di fornire un trasporto efficace dall'host di origine a quello di destinazione, indipendentemente dalla rete utilizzata.

Dettagli

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI Confronto tra ISO-OSI e TCP/IP, con approfondimento di quest ultimo e del livello di trasporto in cui agiscono i SOCKET. TCP/IP

Dettagli

Scrittura formattata - printf

Scrittura formattata - printf Esercizi su Input/Output con formato FormattedIO 1 Scrittura formattata - printf Funzione printf int printf ( , ) La funzione restituisce un valore intero uguale ai caratteri

Dettagli

Laboratorio di Programmazione in Rete

Laboratorio di Programmazione in Rete Laboratorio di rogrammazione in Rete a.a. 2005/2006 http://www.di.uniba.it/~lisi/courses/prog-rete/prog-rete0506.htm dott.ssa Francesca A. Lisi lisi@di.uniba.it Orario di ricevimento: mercoledì ore 10-12

Dettagli

Introduzione. Java HTTP. G. Prencipe

Introduzione. Java HTTP. G. Prencipe Java html e http G. Prencipe prencipe@di.unipi.it Introduzione Tutte le comunicazioni tra client e server Web avvengono mediate il (HyperText Transfer Protocol, attualmente alla versione 1.1), che è un

Dettagli

file fisico file logico

file fisico file logico I files Un file è una struttura di dati residente su una memoria di massa (file fisico) Un programma vede un file come una sequenza di bytes (file logico) Generalizzando, un file può comprendere qualsiasi

Dettagli

Le Reti Informatiche

Le Reti Informatiche Le Reti Informatiche modulo 2 Prof. Salvatore Rosta www.byteman.it s.rosta@byteman.it 1 Commutazione di Circuito Le reti telefoniche utilizzano la tecnica della commutazione di circuito. I commutatori

Dettagli

Applicazione distribuita

Applicazione distribuita La programmazione di applicazioni distribuite in C Il concetto di applicazione distribuita L architettura di una applicazione distribuita Il paradigma a scambio di messaggi Il paradigma client-server Il

Dettagli

Caratteri e stringhe

Caratteri e stringhe Caratteri e stringhe Caratteri Dato che un computer può memorizzare esclusivamente sequenze di bit, per memorizzare un carattere (e quindi testi) è necessario stabilire una convenzione che associa a un

Dettagli

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

IL CONCETTO DI FILE. È illecito operare oltre la fine del file. IL CONCETTO DI FILE Un file è una astrazione fornita dal sistema operativo, il cui scopo è consentire la memorizzazione di informazioni su memoria di massa. Concettualmente, un file è una sequenza di registrazioni

Dettagli

LA GESTIONE DELLA I/O

LA GESTIONE DELLA I/O LA GESTIONE DELLA I/O Il S.O. È l interfaccia tra l hardware e i programmi che effettuano richieste di I/O Sottosistema di I/O strutturato in moduli chiamati DRIVER uno per ogni dispositivo I Driver rendono

Dettagli