Interazione con il DNS Conversioni di Nomi ed Indirizzi
|
|
- Rocco Esposito
- 2 anni fa
- Visualizzazioni
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
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
Progettazione di un client TCP. Progettazione di un server TCP. Esempio: daytime TCP. Client TCP daytime
Progettazione di un client TCP Progettazione di un server TCP Passi per la progettazione di un client TCP 1. Creazione di un endpoint Richiesta al sistema operativo 2. Creazione della connessione Implementazione
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
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
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(...)
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
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
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
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
SERVER CLIENT. Struttura di un Applicazione UDP. Socket UDP. Parametri di sendto. Funzioni di Input/Output. Prof. Vincenzo Auletta
I semestre 03/04 Struttura di un Applicazione UDP Socket UDP socket() bind() Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ CLIENT socket() sendto() Dati (richiesta)
(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,
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
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
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
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
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
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
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
*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,
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
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
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..................................................................................
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
Socket TCP. prima parte
Socket TCP prima parte Cosa cambia: socket int fd = socket(pf_inet, SOCK_STREAM, 0); if (fd
Esempi di Client e Server
Esempi di Client e Server Corso di laurea in Informatica Laboratorio di Reti di Calcolatori A.A. 0-0 Simone Bassis bassis@di.unimi.it #include #include #include #include
Timeout. Socket Avanzati. Funzione alarm() Client echo UDP con alarm
I semestre 02/03 Socket Avanzati Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/~auletta/ Università degli studi di Salerno Laurea e Diploma in Informatica 1 Timeout Abbiamo visto
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
Server Ricorsivii i. Dott. Delfina Malandrino.
A.A. 2007/2008 Rcorsv delmal@da.unsa.t http://ss.da.unsa.t/~delmal Dpartmento d Informatca ed Applcazon R.M. Capocell Unverstà degl Stud d Salerno Iteratv Un server teratvo gestsce una sngola connessone
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
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
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
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......................................
Scrittura dei programmi applicativi di rete
Scrittura dei programmi applicativi di rete Contenuti del corso La progettazione delle reti Il routing nelle reti IP Il collegamento agli Internet Service Provider e problematiche di sicurezza Analisi
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
Programmazione di applicazioni di rete con socket - parte 1
Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Programmazione di applicazioni di rete con socket - parte 1 Corso di Sistemi Distribuiti Valeria Cardellini Anno accademico 2008/09 Applicazioni
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
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
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
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
Domain Name Service. Mapping nomi/indirizzi con Socket API in C
Domain Name Service Mapping nomi/indirizzi con Socket API in C 1 Risoluzione di nomi simbolici TCP/IP ha bisogno di rappresentazioni numeriche per gli indirizzi (es. 193.204.187.189) e per le porte (es.
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
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
Funzioni bloccanti e soluzioni. Funzioni bloccanti e soluzioni (2) Parametri della funzione select() Funzione select()
Funzioni bloccanti e soluzioni La funzione accept() e le funzioni per la gestione dell I/O (ad es., read() e write()) sono bloccanti Ad es., le funzioni read() e recv() rimangono in attesa finché non vi
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
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
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
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
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
Introduzione ai socket
Introduzione ai socket Socket locali Contiene lucidi tratti da: 2006-2007 Marco Faella, Clemente Galdi, Giovanni Schmid (Università di Napoli Federico II), 2004-2005 Walter Crescenzi(Universita di Roma
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=
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
funzione fork() La funzione fork è usata per duplicare un processo. #include pid_t fork (void);
La funzione fork è usata per duplicare un processo. #include pid_t fork (void); funzione fork() restituisce -1 in caso di errore. Se tutto va a buon fine restituisce 0 nel processo figlio ed
Scrittura dei programmi applicativi di rete
Nota di Copyright RETI DI CALCOLATORI Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Questo insieme di trasparenze (detto nel seguito slide) è protetto
Timeout. Socket Avanzati. Client echo UDP con alarm. Funzione alarm()
Università degli studi di Salerno Laurea in Informatica a.a. 2003/04 Socket Avanzati Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ 1 Timeout Abbiamo visto molte
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
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
Socket I MIDLAB. Sirio Scipioni. M I D L A B
scipioni@dis.uniroma1.it http://www.dis.uniroma1.it/~scipioni MIDLAB http://www.dis.uniroma1.it/~midlab Sommario Strutture dati Funzioni Echo client/server Echo server TCP Echo client TCP Echo server UDP
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
Laboratorio di. Reti Informatiche. Corso di Laurea Triennale in Ingegneria Informatica A.A. 2016/2017. Ing. Carlo Vallati
Laboratorio di Reti Informatiche Corso di Laurea Triennale in Ingegneria Informatica A.A. 2016/2017 Ing. Carlo Vallati carlo.vallati@unipi.it 1 Esercitazione 5 Programmazione con i socket Parte 2 2 Programma
Programmazione di sistema
Programmazione di sistema Prof. Gerardo Pelosi & Ing. Michele Scandale Il materiale illustrato a lezione e in queste note contiene anche esempi di Fabrizio Castro, Luca Fossati, Vittorio Zaccaria. Esercizio
Parametri valore-risultatorisultato
Formato dei dati Programmazione di applicazioni di rete con socket - parte 2 La comunicazione deve tener conto della diversa rappresentazione dei dati Rappresentazione in Big Endian e Little Endian Soluzione
P3-04: I/O multiplexing
Autunno 2002 Prof. Roberto De Prisco -04: I/O multiplexing Università degli studi di alerno Laurea e Diploma in Informatica Problema 04.2 Un programma deve gestire due input simultaneamente tandard input
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
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
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
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
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
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
funzione close() La funzione close è utilizzata normalmente per chiudere un descrittore di file, è utilizzata per chiudere un socket e terminare una
funzione close() La funzione close è utilizzata normalmente per chiudere un descrittore di file, è utilizzata per chiudere un socket e terminare una connessione TCP. int close (int socketfd); restituisce
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.
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
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:
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
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
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
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
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
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
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
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
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
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,
Esercitazione sulle Socket
Esercitazione sulle Socket Sommario Echo Server Specifica Descrizione programma (TCP Socket) Client UNIX/WIN Server UNIX/WIN Server multithread UNIX/WIN Descrizione programma (UDP Socket) 2 Interazione
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
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
Socket II MIDLAB. Sirio Scipioni. M I D L A B.
Socket II Sirio Scipioni scipioni@dis.uniroma1.it http://www.dis.uniroma1.it/~scipioni MIDLAB http://www.dis.uniroma1.it/~midlab Sommario Richiami sui processi Echo server TCP (multi processo) Richiami
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
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
Inizializzazione, Assegnamento e Distruzione di Classi
Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della
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
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
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
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
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
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
IPC: InterProcess Communication
IPC: InterProcess Communication Uso di segnali Uso di file processo invia limitata quantità info (solo un tipo di segnale) e manca il mittente del segnale solo tra processi che condividono un file system
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:
getsockname() e getpeername() Formato dei dati - server Esempio getsockname() server (2)
Formato dei dati La comunicazione deve tener conto della diversa rappresentazione dei dati Rappresentazione in Big Endian e Little Endian Soluzione usata dai socket: network byte order (Big Endian) Due
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
P2-11: BOOTP e DHCP (Capitolo 23)
Autunno 2002 Prof. Roberto De Prisco -11: BOOTP e DHCP (Capitolo 23) Università degli studi di Salerno Laurea e Diploma in Informatica Indirizzi IP dinamici 11.2 Un indirizzo IP statico è assegnato ad