Interazione con il DNS Conversioni di Nomi ed Indirizzi

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Interazione con il DNS Conversioni di Nomi ed Indirizzi"

Transcript

1 a.a. 2003/04 Interazione con il DNS Conversioni di Nomi ed Indirizzi Prof. Vincenzo Auletta Università degli studi di Salerno Laurea in Informatica 1 Il DNS consente di convertire dinamicamente nomi di dominio in indirizzi IP e viceversa L interazione con il name server avviene tramite l API resolver l applicazione interagisce con il name server utilizzando le funzioni dell API il funzionamento delle funzioni è modificabile tramite file di configurazione /etc/resolv.conf /etc/hosts, /etc/services, ecc. Il resolver è utilizzato in generale per calcolare corrispondenze tra nomi ed indirizzi nomi di e numeri di porta 2 Funzioni del resolver struct hostent* gethostbyname(const char* hostname); struct hostent* gethostbyaddr(const char* addr, size_t len, int family); Restituisce NULL se errore puntatore diverso da NULL se OK Permettono di interrogare il resolver per effettuare conversioni da nomi ad indirizzi gethostbyname: nome indirizzo gethostbyaddr: indirizzo nome 3 Struttura hostent Le funzioni gethostbyname e gethostbyaddr restituiscono puntatori ad oggetti hostent allocati staticamente struct hostent { char* h_name; /* nome canonico */ char** h_aliases; /* elenco di alias */ int h_addrtype; /* tipo di indirizzo */ int h_length; /* lunghezza dell indirizzo */ char** h_addr_list; /* elenco indirizzi */ ; #define h_addr h_addr_list[0] h_aliases e h_addr_list sono array di stringhe terminati da una stringa nulla

2 Esempio Funzionamento del Resolver 4 oggetto restituito da gethostbyname per il nome koala un nome canonico (bsdi), due alias (koala e panda) e tre indirizzi IP 4 ( , , ) h_name h_aliases h_addrtype h_length h_addr_list AF_INET 4 bsdi koala panda NULL NULL 5 Il resolver può operare sia localmente che interagendo con il DNS il file /etc/resolv.conf contiene gli indirizzi dei name server da contattare e le regole di espansione il file /etc/hosts contiene un elenco delle corrispondenze nome/indirizzo il file di configurazione (/etc/resolv.conf) stabilisce le regole di funzionamento del resolver per default contatta prima i name server e poi legge il file locale Errori In caso di errore le funzioni del resolver scrivono un codice nella variabile h_errno la funzione hstrerror() legge il valore di h_errno e restituisce un messaggio di errore appropriato i valori che può assumere h_errno sono definiti in <netdb.h> HOST_NOT_FOUND TRY_AGAIN NO_RECOVERY NO_ADDRESS (NO_DATA) 6 Il nome specificato è sconosciuto Un errore temporaneo si è verificato su un name server Un errore irrimediabile si è verificato su un name server Il nome specificato è valido ma non ha un indirizzo IP 7 Conversioni Servizi/Porte struct servent* getservbyname(const char* servname, const char* protoname); struct servent* getservbyaddr(int port, const char* protoname); Permettono di interrogare il resolver per effettuare conversioni nomi di servizi/numeri di porta getservbyname: nome porta getservbyaddr: porta nome Il resolver non interagisce con il DNS ma legge soltanto il contenuto di un file locale (/etc/services)

3 Struttura servent Altri Tipi di Interrogazioni 8 Le funzioni getservbyname e getservbyaddr restituiscono puntatori ad oggetti servent allocati staticamente struct servent { char* s_name; /* nome ufficiale del */ char** s_aliases; /* elenco di alias */ int s_port; /* numero di porta */ char* s_proto; /* protocollo da utilizzare */ ; 9 struct netent* getnetbyname(const char* netname); struct netent* getnetbyaddr(long net, int type); struct protoent* getprotobyname(const char* protoname); struct protoent* getprotobynumber(int proto); consentono di assegnare dei nomi a reti e protocolli funzioni poco utilizzate Il resolver legge i file locali (/etc/networks e /etc/protocols) 10 Altre Funzioni void sethostent(int flag); void endhostent(void); #include <unistd.h> #include <sys/utsname.h> int gethostname(char* name, size_t len); /* name contiene il risultato */ sethostent(true) consente di utilizzare TCP per interrrogare il DNS endhostent() ripristina l uso di UDP gethostname() restituisce il nome dell host corrente stesso risultato ottenuto con uname() 11 Client daytime con resolver 1 int main(int argc, char **argv) { int sockd, n; char recvline[maxline + 1], str[maxline]; struct sockaddr_in servaddr; struct in_addr **elenco_addr; struct hostent *hp; struct servent *sp; if (argc!= 3) (1) err_quit("utilizzo: dtime_client <nome dell'host> <nome del >"); if ( (hp = gethostbyname(argv[1])) == NULL) (2) err_quit("errore nella gethostbyname per l'host %s: %s", argv[1], hstrerror(h_errno)); if ( (sp = getservbyname(argv[2], "tcp")) == NULL)(3) err_quit("errore nella getservbyname per il %s", argv[2]); elenco_addr = (struct in_addr **) hp->h_addr_list; 1.legge da linea di comando il nome del server e del 2.recupera l elenco di indirizzi IP del server 3.recupera il numero di porta ed il tipo di protocollo

4 12 Client daytime con resolver 2 for ( ; *elenco_addr!= NULL; elenco_addr++) { (4) if( (sockd = socket(af_inet, SOCK_STREAM, 0)) < 0 ) err_sys("errore nella socket"); (5) bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; (6) servaddr.sin_port = sp->s_port; memcpy(&servaddr.sin_addr, *elenco_addr, sizeof(struct in_addr)); if (connect(sockd, (SA *) &servaddr, sizeof(servaddr)) == 0) (7) break; err_ret("connessione non riuscita con %s:%d", inet_ntop(hp->h_addrtype, *elenco_addr, str, sizeof(str)), ntohs(sp->s_port)); close(sockd); (8) 4. prova a connettersi a tutti gli indirizzi forniti dal resolver 5. crea il socket 6. riempie servaddr 7. tenta di connettersi e se ci riesce esce dal ciclo 8. altrimenti chiude il socket 13 Client daytime con resolver 3 if (*elenco_addr == NULL) (9) err_quit("impossibile stabiliree una connessione"); while ( (n = read(sockd, recvline, MAXLINE)) > 0) { (10) recvline[n] = 0; if( fputs(recvline, stdout) == EOF ) err_sys("errore in fputs"); exit(0); 9. se è uscito dal ciclo senza essere riuscito a stabilire la connessione esce 10.legge la data e la stampa 14 Server daytime con resolver 1 int main(int argc, char **argv) { pid_t pid; int listend, connd; struct sockaddr_in servaddr; char buff[maxline]; time_t ticks; struct servent *sp; if( (listend = socket(af_inet, SOCK_STREAM, 0)) < 0) err_sys("errore in socket"); if( (sp = getservbyname("daytime", "tcp")) == NULL ) { fprintf(stderr, "errore nella getservbyame perr il %s", argv[2]); exit(-1); /* riempie la struttura servaddr */ servaddr.sin_port = sp->s_port; if( (bind(listend, (SA *) &servaddr, sizeof(servaddr))) < 0) err_sys("errore in bind"); 15 Server daytime con resolver 2 if( listen(listend, 5) < 0 ) err_sys("errore in listen"); for ( ; ; ) { if( (connd = accept(listend, (struct sockaddr *) NULL, NULL)) < 0) err_sys("errore in accept"); if( (pid = fork()) == 0 ) { /* il figlio chiude il socket di ascolto */ ticks = time(null); snprintf(buff, sizeof(buff), "%.24s\r\n", ctime(&ticks)); if( write(connd, buff, strlen(buff))!= strlen(buff) ) err_sys("errore in write"); /* il figlio chiude il socket di connessione */ exit(0); /* il padre chiude il socket di connessione */

5 16 Funzioni Indipendenti dal Protocollo Le funzioni gethostbyname e gethostbyaddr dipendono dal tipo di indirizzi utilizzati e sono obsolete Per utilizzare l indirizzo restituito da gethostbyname dobbiamo sapere a che famiglia appartiene per copiarlo nel campo opportuno di struct sockaddr Restituisce Lo standard POSIX 1.g ha introdotto due nuove funzioni per interfacciarsi con il resolver Sono indipendenti dal tipo di indirizzi Restituiscono informazioni immediatamente utilizzabili dall applicazione L applicazione non deve sapere nulla di indirizzi, protocolli, ecc. 17 Funzione getaddrinfo int getaddrinfo(const char* host, const char* serv, const struct addrinfo *hints, struct addrinfo **result); Diverso da 0 se errore 0 se OK Consente di fare interrogazioni sia per nomi di host che di servizi contemporaneamente Legge dalla struttura puntata da hints il tipo di informazioni richieste restituisce il risultato nella lista puntata da result Struttura addrinfo Esempio 18 struct addrinfo { int ai_flags; /* nome canonico */ int ai_family; /* famiglia di indirizzi */ int ai_socktype; /* tipo di socket */ int ai_protocol; /* tipo di protocollo */ size_t ai_addrlength; /* lunghezza di ai_addr */ char* ai_canonname; /* puntatore al nome ufficiale */ struct sockaddr *ai_addr; /* puntatore all indirizzo struct addrinfo *ai_next; /* puntatore al nodo succ */ ; Tutti i puntatori indirizzano memoria allocata dinamicamente L applicazione deve preoccuparsi di rilasciare la memoria La funzione freeaddrinfo() rilascia tutta la memoria associata ad un oggetto addrinfo 19 Richiediamo informazioni sul daytime e l host koala Specifichiamo che vogliamo indirizzi IP 4 e trasporto TCP HINTS ai_flag AI_CANONNAME ai_family AF_INET ai_socktype SOCK_STREAM ai_protocol 0 ai_addrlen 0 ai_canonname NULL ai_addr NULL ai_next NULL RESULTS ai_flag 0 ai_family AF_INET ai_socktype SOCK_STREAM ai_protocol 0 ai_addrlen 16 ai_canonname bsdi.xyz.com ai_addr ai_next AF_INET 7 prossimo nodo

6 20 Errori In caso di errore la funzione getaddrinfo() restituisce un intero nonnegativo la funzione gai_strerror() legge il valore restituito dalla funzione e restituisce un messaggio di errore appropriato EAI_ADDRFAMILY EAI_AGAIN EAI_FAIL EAI_BADFLAGS EAI_FAMILY EAI_MEMORY EAI_NODATA EAI_NONAME EAI_SERVICE EAI_SOCKTYPE EAI_SYSTEM tipo di indirizzo non supportato per name un errore temporaneo si è verificato su un name server un errore irrecuperabile si è verificato su un name server valore non corretto di ai_flags valore di ai_family non supportato errore di allocazione della memoria nessun indirizzo associato a name name o service non conosciuto service non supportato per ai_socktype ai_socktype non supportato errore di sistema restituito in errno 21 Funzione getnameinfo int getaddrinfo(const struct sockaddr* sockaddr, socklen_t addrlen, char* host, size_t hostlen, char* serv, size_t servlen, int flags); Restituisce -1 se errore 0 se OK Consente di trasformare l indirizzo del socket contenuto in sockaddr in due stringhe host contiene il nome dell host e serv contiene il nome del hostlen e servlen sono le lunghezze allocate per le stringhe flags consente di modificare il comportamento di default della funzione Utilizzo di getaddrinfo() Schema Base 22 E possibile costruire delle funzioni che nascondono all applicazione tutti i dettagli relativi alla gestione del socket L applicazione usa solo i nomi dell host e del Le funzioni utilizzano le informazioni restituite da getaddrinfo() per invocare le funzioni sul socket Useremo le seguenti funzioni tcp_connect() (client TCP) tcp_listen() (server TCP) udp_client() (client UDP non connesso) udp_connect() (client UDP connesso) udp_server() (server UDP) 23 Tutte le funzioni adotteranno il seguente schema Leggono da linea di comando nome dell host e del È possibile anche specificare l indirizzo IP o il numero di porta Invocano getaddrinfo() Scorrono la lista di risultati e provano ad utilizzare ognuno degli indirizzi Appena ne trovano uno funzionante escono Se nessuno funziona escono con un errore

7 24 Tcp_connect() 1 int tcp_connect(const char *host, const char *serv) { int sockd, n; struct addrinfo hints, *risp, *backup; char buff[maxline]; bzero(&hints, sizeof(struct addrinfo)); hints.ai_family = AF_UNSPEC; (1) hints.ai_socktype = SOCK_STREAM; if ( (n = getaddrinfo(host, serv, &hints, &risp))!= 0) (2) err_quit("errore in tcp_connect per %s:%s: %s", host, serv, gai_strerror(n)); backup = risp; 1.Riempie i campi di hints 2.Invoca getaddrinfo Risultato restituito nella lista puntata da risp 25 Tcp_connect() 2 do { (3) sockd = socket(risp->ai_family, risp->ai_socktype, risp->ai_protocol); if (sockd < 0) continue; if (connect(sockd, risp->ai_addr, risp->ai_addrlen) < 0) /* ignora questo indirizzo e chiude il socket */ break; while ( (risp = risp->ai_next)!= NULL); if (risp == NULL) err_sys("errore in tcp_connect per %s:%s", host, serv); freeaddrinfo(backup); (4) return(sockd); 3. Cicla su tutti gli indirizzi di risp Prova ad eseguire prima socket() e poi connect() ed esce se ha stabilito la connessione 4. Dealloca la memoria dinamica Tcp_listen() 1 Tcp_listen() 2 26 Int tcp_listen(const char *host, const char *serv, socklen_t *addrlenp) { int listend, n; const int on = 1; struct addrinfo hints, *risp, *backup; bzero(&hints, sizeof(struct addrinfo)); hints.ai_flags = AI_PASSIVE; hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; if ( (n = getaddrinfo(host, serv, &hints, &risp))!= 0) err_quit("errore in tcp_listen per %s:%s: %s", host, serv, gai_strerror(n)); backup = risp; 1.Richiede socket passivo 2.Invoca getaddrinfo 27 do { listend = socket(risp->ai_family, risp->ai_socktype, risp->ai_protocol); if (listend < 0) continue; if( setsockopt(listend, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) == -1) (3) err_sys("errore in setsockopt"); if (bind(listend, risp->ai_addr, risp->ai_addrlen) < 0) /* ignora questo indirizzo e chiude il descrittore. */ break; while ( (risp = risp->ai_next)!= NULL); if (risp == NULL) err_quit("errore in tcp_listen per %s:%s", host, serv); if( listen(listend, LISTENQ) < 0 ) err_sys("errore in listen"); (4) if (addrlenp) *addrlenp = risp->ai_addrlen; (5) freeaddrinfo(backup); (6) return(listend); 3. Setta il socket per poter utilizzare una porta occupata 4. Se socket() e bind() riescono chiama la listen() 5. Restituisce in addrlenp un puntatore alla lunghezza dell indirizzo assegnato al socket 6. Dealloca la memoria dinamica

8 28 Client daytime con tcp_connect() 1 int main(int argc, char **argv) { int sockd, n; char recvline[maxline + 1]; socklen_t len; struct sockaddr *sa; 1.legge da linea di comando il nome del server e del 2.recupera l elenco di indirizzi IP del server 3.recupera il numero di porta ed il tipo di protocollo if (argc!= 3) (1) err_quit("utilizzo: dtime_name_client <nome dell'host> <nome del >"); sockd = tcp_connect(argv[1], argv[2]); if( (sa = malloc(maxsockaddr) == NULL ) err_sys( errore in malloc ); len = MAXSOCKADDR; if( getpeername(sockd, sa, &len) < 0 ) err_sys( errore in getpeername ); printf 29 Client daytime con tcp_connect 2 while ( (n = read(sockd, recvline, MAXLINE)) > 0) { (10) recvline[n] = 0; if( fputs(recvline, stdout) == EOF ) err_sys("errore in fputs"); exit(0); 9. se è uscito dal ciclo senza essere riuscito a stabilire la connessione esce 10.legge la data e la stampa 30 Server daytime con tcp_listen 1 int main(int argc, char **argv) { pid_t pid; int listend, connd; struct sockaddr *cliaddr; socklen_taddrlen, len; struct linger ling; char buff[maxline]; time_t ticks; switch(argc) { (1) case 2: listend = tcp_listen(null, argv[1], &addrlen); break; case 3: listend = tcp_listen(argv[1], argv[2], &addrlen); break; default: err_quit("utilizzo: dtime_name_server [<host>] < o porta>"); if( (cliaddr = malloc(addrlen)) == NULL ) err_sys("errore in malloc"); (2) 1. legge da linea di comando il nome del server e del 2. Alloca la memoria per contenere l indirizzo del client 31 Server daytime con tcp_listen 2 for ( ; ; ) { len = addrlen; if( (connd = accept(listend, cliaddr, &len)) < 0) err_sys("errore in accept"); ling.l_onoff = 1; ling.l_linger = 0; if( setsockopt(connd, SOL_SOCKET, SO_LINGER, &ling, sizeof(ling)) < 0 ) err_sys("errore in setsockopt"); if( (pid = fork()) == 0 ) { /* il processo figlio chiude il socket di ascolto */ ticks = time(null); snprintf(buff, sizeof(buff), "%.24s\r\n", ctime(&ticks)); if( write(connd, buff, strlen(buff))!= strlen(buff) ) err_sys("errore in write"); /* il processo figlio chiude il socket di connessione */ exit(0); /* il processo padre chiude il socket di connessione */

9 Client e Server UDP Dal sito è possibile scaricare il codice delle funzioni udp_client(), udp_server() e udp_connect() logica simile a tcp_connect() e tcp_listen() Il codice di un client ed un server UDP indipendenti dal protocollo 32

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

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

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

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

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

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

Laboratorio di Reti di Calcolatori

Laboratorio di Reti di Calcolatori Laboratorio di Reti di Calcolatori Funzioni utili, server ricorsivi, echo client ed echo server. Paolo D Arco Abstract Scopo della lezione è presentare alcune funzioni di utilità generale (e.g., funzioni

Dettagli

Laboratorio di Reti di Calcolatori

Laboratorio di Reti di Calcolatori Laboratorio di Reti di Calcolatori Socket UDP. Paolo D Arco Abstract Scopo della lezione è descrivere le funzioni che l interfaccia dei socket offre per far interagire client e server attraverso il protocollo

Dettagli

request reply richiesta client processo di servizio processo server principale From - Valeria Cardellini, Corso Sist. Distr. A.A.

request reply richiesta client processo di servizio processo server principale From - Valeria Cardellini, Corso Sist. Distr. A.A. Applicazioni di rete Forniscono i servizi di alto livello utilizzati dagli utenti Determinano la percezione di qualità del servizio (QoS) che gli utenti hanno della rete sottostante Programmazione di applicazioni

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

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

Progettazione di Applicazioni Robuste. Applicazione Echo. Schema Generale di un Server TCP Ricorsivo 1. Applicazione echo

Progettazione di Applicazioni Robuste. Applicazione Echo. Schema Generale di un Server TCP Ricorsivo 1. Applicazione echo a.a. 2003/04 Applicazione Echo Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Progettazione di Applicazioni Robuste nel progettare applicazioni su rete robuste

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

Laboratorio di Reti di Calcolatori

Laboratorio di Reti di Calcolatori Laboratorio di Reti di Calcolatori Comunicazione tra processi in una interrete, Socket API. Paolo D Arco Abstract Scopo della lezione è spiegare concisamente come possono comunicare due processi in esecuzione

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

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

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

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

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

INGEGNERIA DEL WEB. VinX

INGEGNERIA DEL WEB. VinX INGEGNERIA DEL WEB VinX Indice 1 Programmazione di applicazioni di rete 1 1.1 Applicazioni di rete........................................ 1 1.2 Modello Client/Server......................................

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

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

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

Basi di network programming sotto Unix/Linux (draft version) Claudio Piciarelli

Basi di network programming sotto Unix/Linux (draft version) Claudio Piciarelli Basi di network programming sotto Unix/Linux (draft version) Claudio Piciarelli 20 dicembre 2004 ii Indice 1 Introduzione 1 1.1 Notazioni e terminologia..................................... 1 2 Un po 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

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

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

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

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 6

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 6 UNIVERSITÀ DEGLI STUDI DI PARMA Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica, Elettronica e delle Telecomunicazioni a.a. 2005-2006 CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 6 1 Socket

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

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

Opzioni del Socket. Socket Options. Opzioni di Livello Socket. Livello delle Opzioni

Opzioni del Socket. Socket Options. Opzioni di Livello Socket. Livello delle Opzioni a.a. 2003/04 Opzioni del Socket Socket Options Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in Informatica 1 Ogni socket

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

Architettura e servizi Internet

Architettura e servizi Internet Architettura e servizi Internet Laboratorio di Sistemi Operativi Corso di Laurea in Informatica Università degli Studi dell'aquila A.A. 2011/2012 Romina Eramo materiale tratto da: Fazio Vincenzo e-mail:

Dettagli

I/O su Socket TCP: read()

I/O su Socket TCP: read() I/O su Socket TCP: read() I socket TCP, una volta che la connessione TCP sia stata instaurata, sono accedibili come se fossero dei file, mediante un descrittore di file (un intero) ottenuto tramite una

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

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

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

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

Le Opzioni per i Socket

Le Opzioni per i Socket Advanced TCP Socket Le Opzioni per i Socket Le opzioni per i socket sono controllate mediante tre tipi di primitive: 1) le funzioni getsockopt() e setsockopt(), che permettono di configurare alcune caratteristiche

Dettagli

programmazione distribuita Introduzione Introduzione alla programmazione distribuita

programmazione distribuita Introduzione Introduzione alla programmazione distribuita Reti Informatiche Introduzione alla programmazione distribuita Introduzione Richiami di Programmazione C Differenze principali C/C++ 2 1 Definizioni di variabili Le variabili possono essere definite solo

Dettagli

Acknowledgment: Prof Vincenzo Auletta, Università di Salerno. Approfondimento alla programmazione distribuita

Acknowledgment: Prof Vincenzo Auletta, Università di Salerno. Approfondimento alla programmazione distribuita Reti Informatiche Approfondimento alla programmazione distribuita Acknowledgment: Prof Vincenzo Auletta, Università di Salerno Introduzione API send e receive bloccanti e non API select Socket UDP Esempio

Dettagli

Laboratorio di Programmazione in Rete

Laboratorio di Programmazione in Rete Laboratorio di Programmazione 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

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

Inizializzazione degli Host. BOOTP e DHCP

Inizializzazione degli Host. BOOTP e DHCP BOOTP e DHCP a.a. 2002/03 Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/~auletta/ Università degli studi di Salerno Laurea e Diploma in Informatica 1 Inizializzazione degli Host Un

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

I Socket in PHP. Introduzione. Gestione degli errori nei socket. Funzioni socket di PHP. (manuale PHP)

I Socket in PHP. Introduzione. Gestione degli errori nei socket. Funzioni socket di PHP. (manuale PHP) I Socket in PHP (manuale PHP) Introduzione Questa estensione implementa una interfaccia a basso livello verso i socket, fornendo la possibilità di agire sia come server sia come client. Per l'utilizzo

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

Inter-process communication: socket

Inter-process communication: socket Le Socket Inter-process communication: socket Abbiamo visti alcune tipologie di Inter-process communication: Anonymous pipes FIFOs o named pipes Le socket di comunicazione si pongono nell'ipc per realizzare:

Dettagli

Applicazione Client-Server con Server Concorrente Specifiche

Applicazione Client-Server con Server Concorrente Specifiche Applicazione Client-Server con Server Concorrente Specifiche Il progetto consiste nello sviluppo di un'applicazione client/server. Client e server devono comunicare tramite socket TCP.. Il server deve

Dettagli

Opzioni per le Socket

Opzioni per le Socket Opzioni per le Socket A.A. 2005/06 Opzioni per le Socket Ogni socket aperto ha delle proprietà che ne determinano alcuni comportamenti Le opzioni del socket consentono di modificare tali proprietà Ogni

Dettagli

20. DNS: Il Domain Name System

20. DNS: Il Domain Name System 20. DNS: Il Domain Name System 20.1 Introduzione È un database distribuito usato dalle applicazioni TCP/IP che: Mappa hostname su IP address Mappa IP address su hostname Fornisce informazione di routing

Dettagli

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress. ESERCIZIARIO Risposte ai quesiti: 10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress. 10.2. Un numero intero in Java è compreso nell'intervallo ( 2 31 ) e (2 31

Dettagli

LIBRERIA SOCKET EFUNZIONI DI NETWORKING. Versione 1.0

LIBRERIA SOCKET EFUNZIONI DI NETWORKING. Versione 1.0 LIBRERIA SOCKET EFUNZIONI DI NETWORKING Versione 1.0 Vito Asta, febbraio 2000 N.B. La presente dispensa accenna solo brevemente agli argomenti trattati e alle funzioni viste nel corso delle esercitazioni;

Dettagli

Parte II: Reti di calcolatori Lezione 10

Parte II: Reti di calcolatori Lezione 10 Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Parte II: Reti di calcolatori Lezione 10 Giovedì 3-04-2014 1 Reti per la distribuzione

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

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

Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012. - Comunicazione Tra Processi (IPC)- - 1 Parte - Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012 - Comunicazione Tra Processi (IPC)- - 1 Parte - 1 Sommario Comunicazione tra processi sulla stessa macchina: fifo (qualunque insieme di processi)

Dettagli

M. Guarracino - File di Sistema 1

M. Guarracino - File di Sistema 1 M. Guarracino - File di Sistema 1 Introduzione Il sistema operativo ha bisogno di conservare numerose informazioni relative ai servizi che mette a disposizione. Ad esempio, ogni volta che si richiede di

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

Progetto fine al superamento del corso di Sistemi Operativi. Http server proxy Http web monitor

Progetto fine al superamento del corso di Sistemi Operativi. Http server proxy Http web monitor Progetto fine al superamento del corso di Sistemi Operativi Http server proxy Http web monitor Sviluppato da: Santoro Carlo Maurizio Sviluppo terminato in Luglio/2006 Obiettivo: Progettare ed implementare

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

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema AXO Architetture dei Calcolatori e Sistema Operativo programmazione di sistema Il sistema operativo Il Sistema Operativo è un insieme di programmi (moduli software) che svolgono funzioni di servizio nel

Dettagli

Sicurezza delle reti. Monga. Ricognizione. Scanning Breve ripasso socket Network mapping Port Scanning NMAP. Le tecniche di scanning

Sicurezza delle reti. Monga. Ricognizione. Scanning Breve ripasso socket Network mapping Port Scanning NMAP. Le tecniche di scanning Sicurezza dei sistemi e delle 1 Mattia Dip. di Informatica Università degli Studi di Milano, Italia mattia.monga@unimi.it Port Lezione V: Scansioni Port a.a. 2015/16 1 cba 2011 15 M.. Creative Commons

Dettagli

Parte II: Reti di calcolatori Lezione 12

Parte II: Reti di calcolatori Lezione 12 Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Parte II: Reti di calcolatori Lezione 12 Giovedì 16-04-2015 1 Confronto architetture C/S e

Dettagli

Reti di Calcolatori - Laboratorio. Lezione 7. Gennaro Oliva

Reti di Calcolatori - Laboratorio. Lezione 7. Gennaro Oliva Reti di Calcolatori - Laboratorio Lezione 7 Gennaro Oliva Opzioni di socket Ogni socket aperto ha un insieme di opzioni associate che ne determinano il comportamento Distinguiamo due tipi: opzioni binarie

Dettagli

Socket. [Pagina intenzionalmente vuota] 2: Socket (10 3 2003) slide 2:1/50 (p.24)

Socket. [Pagina intenzionalmente vuota] 2: Socket (10 3 2003) slide 2:1/50 (p.24) Socket [Pagina intenzionalmente vuota] (10 3 2003) slide 2:1/50 (p.24) Concetto di socket Disponibili su tutti i sistemi odierni Endpoint di canale (logico) di comunicazione tra processi, anche remoti

Dettagli

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3. 1 strace : visualizzazione delle system call invocate da un processo

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3. 1 strace : visualizzazione delle system call invocate da un processo UNIVERSITÀ DEGLI STUDI DI PARMA Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica a.a. 2005-2006 CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3 1 strace : visualizzazione delle system call

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi Operativi (M. Cesati) Sistemi Operativi (M. Cesati) Compito scritto del 16 luglio 2015 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare

Dettagli

Esercitazione [5] Input/Output su Socket

Esercitazione [5] Input/Output su Socket Esercitazione [5] Input/Output su 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 Calcolo

Dettagli

HTTP adaptation layer per generico protocollo di scambio dati

HTTP adaptation layer per generico protocollo di scambio dati HTTP adaptation layer per generico protocollo di scambio dati Sandro Cavalieri Foschini 101786 Emanuele Richiardone 101790 Programmazione in Ambienti Distribuiti I - 01FQT prof. Antonio Lioy A.A. 2002-2003

Dettagli

SIMULAZIONE PROVA SCRITTA ESAME DI STATO. PER LA DISCIPLINA di SISTEMI

SIMULAZIONE PROVA SCRITTA ESAME DI STATO. PER LA DISCIPLINA di SISTEMI SIMULAZIONE PROVA SCRITTA ESAME DI STATO PER LA DISCIPLINA di SISTEMI In un azienda, costituita da due edifici, uno per gli uffici e l altro per l area produttiva con annesso magazzino, si vuole realizzare

Dettagli

Networking. Apertura di uno stream sulla rete: URL

Networking. Apertura di uno stream sulla rete: URL Networking Il networking in java è supportato nel package java.net, che permette, mediante classi e metodi opportuni, di trasferire informazioni attraverso la rete utilizzando: protocolli derivati dal

Dettagli

Una prima applicazione in C per l utilizzo delle socket

Una prima applicazione in C per l utilizzo delle socket Una prima applicazione in C per l utilizzo delle socket Richiamo sulle socket Socket in Windows (WinSock) Differenze tra sistemi operativi D. Gendarmi Socket API API: Application Programming Interface

Dettagli

Chiamate di sistema per la Inter Process Communication (IPC) in POSIX. E.Mumolo, DEEI mumolo@units.it

Chiamate di sistema per la Inter Process Communication (IPC) in POSIX. E.Mumolo, DEEI mumolo@units.it Chiamate di sistema per la Inter Process Communication (IPC) in POSIX E.Mumolo, DEEI mumolo@units.it Pipe Cos'è un pipe? E' un canale di comunicazione che unisce due processi Caratteristiche: La più vecchia

Dettagli

Il DNS e la gestione degli indirizzi IP. Appunti a cura del prof. ing. Mario Catalano

Il DNS e la gestione degli indirizzi IP. Appunti a cura del prof. ing. Mario Catalano Il DNS e la gestione degli indirizzi IP Appunti a cura del prof. ing. Mario Catalano Indirizzi fisici e indirizzi astratti Ogni macchina all interno di una rete è identificata da un indirizzo hardware

Dettagli

CREAZIONE PROCESSI IN UNIX 20

CREAZIONE PROCESSI IN UNIX 20 CREAZIONE PROCESSI IN UNIX 20 STRUTTURE DATI PER PROCESSI Un processo puo' essere in escuzione in 2 modi: kernel e utente. Un processo ha almeno 3 regioni: codice, dati e stack Lo stack è allocato dinamicamente.

Dettagli

IPC System V. Code di messaggi

IPC System V. Code di messaggi IPC System V Code di messaggi Panoramica coda di messaggi una lista concatenata di messaggi, FIFO semaforo un contatore condiviso, atomicamente modificabile memoria condivisa uno spazio di memoria accessibile

Dettagli

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client Versione 25.4.05 Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/server: applicazioni client 1 Architetture client/server: un esempio World wide web è un

Dettagli

I puntatori e l allocazione dinamica di memoria

I puntatori e l allocazione dinamica di memoria I puntatori e l allocazione dinamica di memoria L allocazione delle variabili Allocazione e rilascio espliciti di memoria Le funzioni malloc e free 2 2006 Politecnico di Torino 1 Allocare = collocare in

Dettagli

Sistemi Operativi: Programmazione di Sistema

Sistemi Operativi: Programmazione di Sistema Corso di Sistemi Operativi: Programmazione di Sistema Corso di Laurea in Informatica, Università di Firenze Anno accademico 2011/2012 Prof. Luca Ferrari e-mail: ferrari@dsi.unifi.it telefono: 055 4237454

Dettagli

Berkeley Socket La programmazione dei Berkeley Socket per esempi.

Berkeley Socket La programmazione dei Berkeley Socket per esempi. Berkeley Socket La programmazione dei Berkeley Socket per esempi Ing Alessio Palma Note legali e licenza d'uso Questo documento non è assolutamente da considerarsi di pubblico dominio, viene concessa la

Dettagli

Inidirizzi IP e Nomi di Dominio. Domain Name System. Spazio dei Nomi Piatto. Gestione dello Spazio dei Nomi

Inidirizzi IP e Nomi di Dominio. Domain Name System. Spazio dei Nomi Piatto. Gestione dello Spazio dei Nomi I semestre 03/04 Inidirizzi IP e Nomi di Dominio Domain Name System Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in Informatica

Dettagli

Programmazione dei socket di rete in GNU/Linux

Programmazione dei socket di rete in GNU/Linux Programmazione dei socket di rete in GNU/Linux Fulvio Ferroni fulvioferroni@teletu.it 2006.09.21 Copyright Fulvio Ferroni fulvioferroni@teletu.it Via Longarone, 6-31030 - Casier (TV) Le informazioni contenute

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 22 Martedì 7-1-2014 1 System Call per l'uso dei segnali Un processo che

Dettagli

Ret e i Inf n o f rm r a m t a ich c e Terza esercitazione

Ret e i Inf n o f rm r a m t a ich c e Terza esercitazione Reti Informatiche Terza esercitazione Introduzione Richiami di Programmazione C Differenze principali C/C++ 2 Definizioni di variabili Le variabili possono essere definite solo all inizio di un blocco

Dettagli

Socket API per il Multicast

Socket API per il Multicast Socket API per il Multicast Massimo Bernaschi Istituto per le Applicazioni del Calcolo Mauro Picone Consiglio Nazionale delle Ricerche Viale del Policlinico, 137-00161 Rome - Italy http://www.iac.cnr.it/

Dettagli

Programmazione di rete: 1. Architettura di Internet 2. Richiami di TCP/IP 3. Sockets in sistemi UNIX/Windows

Programmazione di rete: 1. Architettura di Internet 2. Richiami di TCP/IP 3. Sockets in sistemi UNIX/Windows Sistemi Operativi II Corso di Laurea in Ingegneria Informatica Facolta di Ingegneria, Universita La Sapienza Docente: Francesco Quaglia Programmazione di rete: 1. Architettura di Internet 2. Richiami di

Dettagli

Esercitazione [8] Pipe e FIFO

Esercitazione [8] Pipe e FIFO Esercitazione [8] Pipe e FIFO Leonardo Aniello - aniello@dis.uniroma1.it Daniele Cono D'Elia - delia@dis.uniroma1.it Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di Calcolo Multi-Nodo

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli

Allocazione dinamica della memoria - riepilogo

Allocazione dinamica della memoria - riepilogo Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della

Dettagli

Laboratorio di Programmazione in rete

Laboratorio di Programmazione in rete Laboratorio di rogrammazione in rete Introduzione alla programmazione C di socket A.A. 2005/06 Comunicazione tra computer Come far comunicare più computer su una rete? Una collezione di protocolli: TC/I

Dettagli

Processi e Sincronizzazione. Laboratorio Software 2008-2009 C. Brandolese M. Grotto

Processi e Sincronizzazione. Laboratorio Software 2008-2009 C. Brandolese M. Grotto Processi e Sincronizzazione C. Brandolese M. Grotto Sommario 1. Processi Concetti fondamentali Stati in GNU/Linux 2. Creazione Descrizione Creazione con system() Creazione con fork() Effetto di fork()

Dettagli

Introduzione al Linguaggio C

Introduzione al Linguaggio C Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C

Dettagli

I name server DNS. DNS: Domain Name System. Esempio di DNS. DNS: Root name server. DNS: queries ripetute

I name server DNS. DNS: Domain Name System. Esempio di DNS. DNS: Root name server. DNS: queries ripetute DNS: Domain Name System I name DNS Persone: identificatori: CF, nome, Numero di Passaporto Host e router Internet: Indirizzo IP ( bit) - usato per instradare i pacchetti nome, per es., massimotto.diiie.unisa.it

Dettagli

Lezione 5. Processi e thread. Sistemi operativi. Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata

Lezione 5. Processi e thread. Sistemi operativi. Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata Lezione 5 Sistemi operativi 24 marzo 2015 System Programming Research Group Università degli Studi di Roma Tor Vergata SO 15 5.1 Di cosa parliamo in questa lezione? Relazione tra processi e thread, e relative

Dettagli

UDP. Livello di Trasporto. Demultiplexing dei Messaggi. Esempio di Demultiplexing

UDP. Livello di Trasporto. Demultiplexing dei Messaggi. Esempio di Demultiplexing a.a. 2002/03 Livello di Trasporto UDP Descrive la comunicazione tra due dispositivi Fornisce un meccanismo per il trasferimento di dati tra sistemi terminali (end user) Prof. Vincenzo Auletta auletta@dia.unisa.it

Dettagli

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3 UNIVERSITÀ DEGLI STUDI DI PARMA Facoltà di Ingegneria Corso di Laurea in Ingegneria Elettronica-Informatica-Telecomunicazioni a.a. 2001-2002 CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3 1 Trasferimento

Dettagli

ESEMPI DI APPLICAZIONI ONC-RPC

ESEMPI DI APPLICAZIONI ONC-RPC ESEMPI DI APPLICAZIONI ONC-RPC Applicazione 1: Procedura remota per la somma di due numeri Applicazione 2: Procedura remota per la realizzazione di una chat Annarita Fierro matricola: 628404 Applicazione

Dettagli

2. I THREAD. 2.1 Introduzione

2. I THREAD. 2.1 Introduzione 2. I THREAD 2.1 Introduzione Il tipo di parallelismo che è opportuno avere a disposizione nelle applicazioni varia in base al grado di cooperazione necessaria tra le diverse attività svolte in parallelo:

Dettagli