Scrittura dei programmi applicativi di rete

Documenti analoghi
Scrittura dei programmi applicativi di rete

Codifica dei numeri interi positivi e negativi

RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE

Linguaggio C I puntatori

L interfaccia socket

Architettura del processore. Modello di calcolatore. Caratteristiche del processore. Caratteristiche del processore. Fondamenti di Informatica

FONDAMENTI DI INFORMATICA. Prof. PIER LUCA MONTESSORO. Facoltà di Ingegneria Università degli Studi di Udine. Codifica del video

Linguaggio C e sistema operativo

Programma sorgente, compilatore, file oggetto, file eseguibile. Traduzione effettuata dal compilatore. Dichiarazione di variabili (esempi)

Linguaggio C Struct e union

Codifica dei segnali audio

Input/output in C e in C++

Controllo e correzione degli errori

Reti (già Reti di Calcolatori )

Argomenti della lezione

Linguaggio C Debugging

RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE

Introduzione alla programmazione strutturata

Scrivere il software. Scrivere il software. Interprete. Compilatore e linker. Fondamenti di Informatica

Laboratorio di Sistemi Operativi Cognome Nome Mat.

Tecniche di compressione senza perdita

IL CABLAGGIO STRUTTURATO DI CATEGORIA 6

FONDAMENTI DI INFORMATICA. Prof. PIER LUCA MONTESSORO. Facoltà di Ingegneria Università degli Studi di Udine. Compressione audio

La voce di Elvis Presley, la chitarra di David Gilmour e le funzioni di callback in linguaggio C

Cenni sull architettura protocollare TCP/IP

Cenni sull architettura protocollare TCP/IP

Socket per TCP: Fondamenti

Il cablaggio strutturato degli edifici: cosa c e` ` di nuovo?

Gestione della memoria di massa e file system

Metro VLAN Switch e standard 802.1ad

RETI DI CALCOLATORI. Prof. PIER LUCA MONTESSORO. Facoltà di Ingegneria Università degli Studi di Udine

Esercitazione Laboratorio di Sistemi Operativi Cognome Nome Mat.

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

Memoria cache. Memoria cache. Miss e Hit. Problemi. Fondamenti di Informatica

Interazione (TCP) Client-Server con le socket

Nota di Copyright. Interfaccia audio. Libreria portaudio. Callback function. Un piccolo problema. Fondamenti di Informatica

Mobile IP Mobilità nelle reti IP Mario Baldi Politecnico di Torino

RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE

1999 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 1

Trasmissione bilanciata e amplificatore differenziale

Socket TCP. seconda parte

Gestione della memoria per sistemi multiprogrammati. Obiettivi. Partizioni fisse. Partizioni fisse. Fondamenti di Informatica

Libreria in linguaggio C per elaborazione audio in real time

Shielding. E.M.I. Shield e Grounding: analisi applicata ai sistemi di cablaggio strutturato. Pier Luca Montessoro.

Esercitazione [6] Client/Server con Socket

2001 Pier Luca Montessoro, Davide Pierattoni (si veda la nota di copyright alla slide n. 2) Fondamenti di Informatica.

COMUNICAZIONE TRA PROCESSI REMOTI IN UNIX

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

IPC: InterProcess Communication

Guida all' uso dei sockets nella programmazione in C

RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE

I Socket di Berkeley

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

Progettazione delle dorsali in fibra ottica

Esercizi di Addressing. Fulvio Risso Guido Marchetto

La programmazione di rete

Progettazione di reti locali con switch di livello 3

Internet and Intranet Access

Creare una applicazione Winsock di base

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

Interconnessione di reti IP

Paradigma client-server

IPC Inter Process Communication

INTERNET DOMAIN SOCKETS (Cap.59)

RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE

Gestione dei processi

Socket TCP. prima parte

DATAGRAM SOCKET. Angelastro Sergio Diomede Antonio Viterbo Tommaso

La programmazione in linguaggio C

2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 1

LABORATORIO di Reti di Calcolatori

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

Memoria cache, interrupt e DMA

I Socket. Laboratorio Software M. Grotto R. Farina

Programmazione di applicazioni di rete

Esempio 1: stampa locale di file remoto

Socket per TCP: Fondamenti

Esempio 1: stampa locale di file remoto

Architettura e servizi Internet

Una semplice applicazione client/server 1

Progettazione di reti locali basate su switch - Switched LAN

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

Introduzione alla programmazione C di socket

RETI DI CALCOLATORI II

Furto Identità Digitale

Le reti basate su TCP/IP

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

Applicazione distribuita

RETI DI CALCOLATORI. Nota di Copyright. Passi progettuali necessari. Esercitazione 1. Progetto di un sistema di cablaggio strutturato

Il collegamento delle reti aziendali: DHCP, DSL, PPPoE

Program m azione di Sistem a 6a

L uso di Socket UDP. TCP vs. UDP UDP

Linguaggio C Struttura dei programmi

Progettazione di un client TCP. Progettazione di un server TCP. Esempio: daytime TCP. Client TCP daytime

Priorità di traffico - IEEE 802.1p

rsystem Maximiliano Marchesi

Elementi di programmazione con interfaccia Socket

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

Linguaggio C Espressioni e operatori

FONDAMENTI DI INFORMATICA. Prof. PIER LUCA MONTESSORO. Facoltà di Ingegneria Università degli Studi di Udine. Reti logiche

Transcript:

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 dalle leggi sul copyright e dalle disposizioni dei trattati internazionali. Il titolo ed i copyright relativi alle slides (ivi inclusi, ma non limitatamente, ogni immagine, fotografia, animazione, video, audio, musica e testo) sono di proprietà degli autori prof. Pier Luca Montessoro e ing. Davide Pierattoni, Università degli Studi di Udine. Le slide possono essere riprodotte ed utilizzate liberamente dagli istituti di ricerca, scolastici ed universitari afferenti al Ministero della Pubblica Istruzione e al Ministero dell Università e Ricerca Scientifica e Tecnologica, per scopi istituzionali, non a fine di lucro. In tal caso non è richiesta alcuna autorizzazione. Ogni altro utilizzo o riproduzione (ivi incluse, ma non limitatamente, le riproduzioni su supporti magnetici, su reti di calcolatori e stampe) in toto o in parte è vietata, se non esplicitamente autorizzata per iscritto, a priori, da parte degli autori. L informazione contenuta in queste slide è ritenuta essere accurata alla data della pubblicazione. Essa è fornita per scopi meramente didattici e non per essere utilizzata in progetti di impianti, prodotti, reti, ecc. In ogni caso essa è soggetta a cambiamenti senza preavviso. L autore non assume alcuna responsabilità per il contenuto di queste slide (ivi incluse, ma non limitatamente, la correttezza, completezza, applicabilità, aggiornamento dell informazione). In ogni caso non può essere dichiarata conformità all informazione contenuta in queste slide. In ogni caso questa nota di copyright e il suo richiamo in calce ad ogni slide non devono mai essere rimossi e devono essere riportati anche in utilizzi parziali. 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 1 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 2 Argomenti della lezione L interfaccia Socket Scrittura dei programmi applicativi di rete e server e Esempi 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 3 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 4 Interfaccia Socket Tipi di dato Originariamente sviluppata per i sistemi Unix Consente al livello delle applicazioni di richiedere/ottenere servizi del livello di trasporto (/) u_char u_short u_long unsigned char (8 bit) unsigned short int (16 bit) unsigned long int (32 bit) 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 5 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 6 1

Indirizzo IP /* internet address */ struct in_addr u_long s_addr; Indirizzo /* aggiunge all indirizzo IP la porta e la famiglia a cui appartiene il protocollo */ struct sockaddr_in u_char sin_len; u_short sin_family; u_short sin_port; struct in_addr sin_addr; u_long s_addr; char sin_zero[8]; 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 7 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 8 Indirizzo /* aggiunge all indirizzo IP la porta normalmente e la famiglia a cui appartiene il protocollo */ non utilizzati! struct sockaddr_in u_char sin_len; u_short sin_family; u_short sin_port; struct in_addr sin_addr; u_long s_addr; char sin_zero[8]; Struttura famiglia tipo protocollo sin_len sin_family sin_port sin_addr sin_zero indirizzo remoto sin_len sin_family sin_port sin_addr sin_zero indirizzo locale 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 9 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 10 Tipi di stream applicazione datagram IP livello data-link e livello fisico raw Compatibilità dei formati Sistema big-endian 00001101 10111101 00000001 11100001 MSB LSB A 00001101 A+1 10111101 A+2 00000001 A+3 11100001 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 11 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 12 2

Compatibilità dei formati Sistema little-endian 00001101 10111101 00000001 11100001 MSB LSB A 11100001 A+1 00000001 A+2 10111101 A+3 00001101 Compatibilità dei formati I protocolli della famiglia /IP usano il formato big-endian 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 13 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 14 Funzioni di conversione di formato u_short htons (u_short host_short); u_short ntohs (u_short network_short); u_long htonl (u_long host_long); u_long ntohl (u_long network_long); Convertono un intero (signed, long) dal formato host al formato network e viceversa Funzioni di conversione di indirizzo unsigned long inet_addr (const char *); int inet_aton (const char *, struct in_addr *); char *inet_ntoa (struct in_addr); Convertono la rappresentazione decimale (stringa ASCII) di un indirizzo IP nella rappresentazione numerica interna e viceversa 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 15 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 16 Chiamata al DNS struct hostent char *hname; char *haliases[]; int h_addrtype; int h_length; char *h_addr_list[]; struct hostent *gethostbyname (const char *hostname); Chiamata al DNS struct hostent char *hname; char *haliases[]; int h_addrtype; int h_length; char *h_addr_list[]; nome e lista degli alias struct hostent *gethostbyname (const char *hostname); 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 17 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 18 3

Chiamata al DNS per IPv4: h_addrtype = AF_INET char h_length *hname; = 4 (byte) struct hostent char int int char *haliases[]; h_addrtype; h_length; *h_addr_list[]; struct hostent *gethostbyname (const char *hostname); Chiamata al DNS struct hostent puntatori agli indirizzi char dell host *hname; (può essere char multihomed ) *haliases[]; int h_addrtype; int h_length; char *h_addr_list[]; struct hostent *gethostbyname (const char *hostname); 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 19 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 20 bind connect listen accept sendto recvfrom read write int (int family, int type, int protocol); AF_INET AF_INET AF_INET SOCK_DGRAM SOCK_STREAM SOCK_RAW 0 0 prot. Crea un descrittore Restituisce un intero che sarà usato per i riferimenti al 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 21 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 22 int bind const struct sockaddr_in *localaddr, int localaddrlen); int bind const struct sockaddr_in *localaddr, int localaddrlen); Aggiunge un indirizzo ad già creato Viene utilizzata dai server per dichiarare la porta su cui ascoltano 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 23 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 24 4

int connect const struct sockaddr_in *serveraddr, int serveraddrlen); Permette ad un processo (tipicamente il client) di aprire una connessione int listen int backlog); Usata dai server Informa il sistema operativo che il server è pronto ad accettare connessioni (creazione di un passivo ) 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 25 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 26 int accept const struct sockaddr_in *clientaddr, int *clientaddrlen); Usata dai server Rimuove la prima richiesta di connessione dalla coda delle connessioni in attesa int accept const struct sockaddr_in *clientaddr, int *clientaddrlen); Restituisce (in clientaddr e in clientaddrlen) l indirizzo del client 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 27 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 28 int accept const struct sockaddr_in *clientaddr, int *clientaddrlen); Restituisce il descrittore da usare per questa connessione int sendto const struct sockaddr_in *toaddr, int toaddrlen); Invia un messaggio 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 29 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 30 5

int sendto const struct sockaddr_in *toaddr, int toaddrlen); I flag normalmente sono a zero int sendto const struct sockaddr_in *toaddr, int toaddrlen); Restituisce il numero di byte inviati 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 31 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 32 int recvfrom const struct sockaddr_in *fromaddr, int *fromaddrlen); Riceve un messaggio int recvfrom const struct sockaddr_in *fromaddr, int *fromaddrlen); I flag normalmente sono a zero 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 33 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 34 int recvfrom const struct sockaddr_in *fromaddr, int *fromaddrlen); Restituisce il numero di byte ricevuti int recvfrom const struct sockaddr_in *fromaddr, int *fromaddrlen); Restituisce (in fromaddr e in fromaddrlen) l indirizzo del mittente 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 35 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 36 6

int read const void *buf, int buflen); int write const void *buf, int buflen); Leggono/scrivono sulla connessione int read const void *buf, int buflen); int write const void *buf, int buflen); Restituiscono il numero di byte letti/scritti 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 37 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 38 int (int sockfd); Chiude un e interrompe una connessione Tipi di server Il server non deve essere monopolizzato da un singolo client: Sequenziale senza connessioni (, singolo processo, viene servito un client alla volta) Parallelo con connessioni (, un processo per ogni client) 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 39 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 40 sequenziale senza connessioni Un client alla volta nota sequenziale n processi client processo server sendto (TSAP server, comando e dati) receive (risposta) bind (TSAP server) while (recvfrom (comando e dati, TSAP client)) sendto (TSAP client, risposta) } 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 41 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 42 7

sequenziale (bloccante!) processo server n processi client connect (TSAP server) while (comandi utente) write (comando e dati) read (risposta) } bind (TSAP server) listen while (TRUE) accept (connessione) while (comandi utente) read (comando e dati) write (risposta) } (connessione) } 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 43 parallelo con connessioni child child child Porte effimere nota usata solo per l apertura della connessione 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 44 ( ) Ripetuto in base alle necessità sendto ( ) recvfrom ( ) ( ) Richieste Risposte ( ) bind ( ) Ripetuto infinite volte recvfrom ( ) Process sendto ( ) 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 45 ( ) connect ( ) Ripetuto in base alle necessità write ( ) read ( ) ( ) Richiesta (listening) Richiesta di connessione Ripetuto in base alle necessita read ( ) Processo Risposta write ( ) (accepting) child ( ) bind ( ) listen ( ) Ripetuto all infinito accept ( ) fork ( ) (accepting) parent 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 46 Librerie semplificate Libreria tcplib Sviluppate dal prof. Montessoro per agevolare la scrittura di semplici esempi didattici di applicazioni client-server Per : tcplib Per : udplib Per datagram IP senza intestazione di livello di trasporto: rawlib 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 47 int create_tcp_client_connection (char *ip_address, int port); int create_tcp_server (char *ip_address, int port); int _tcp_connection (int sk); int server_handler (int sk); 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 48 8

Libreria tcplib Libreria udplib int tcp_send (int sk, char *buffer); int tcp_receive (int sk, char *buffer); void tcp_putchar (int sk, int ch); int tcp_getchar (int sk); int create_udp_client (void); int create_udp_server (char *ip_address, int port); int _udp_ (int sk); 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 49 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 50 Libreria udplib int udp_send (int sk, char *buffer, char *ip_address, int port); int udp_receive (int sk, char *buffer); int udp_receive_and_get_sender_info (int sk, char *buffer, char *ip_address, int *pport); int udp_reply (int sk, char *buffer); 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 51 Libreria rawlib int create_raw_ (char *ip_address, int protocol); int _raw_ (int sk); int raw_send (int sk, char *buffer, char *ip_address); int raw_receive_and_get_sender_info (int sk, char *buffer, char *ip_address); int raw_reply (int sk, char *buffer); 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 52 Acknowledgements/ bibliografia Behroutz A. Forouzan I protocolli /IP McGraw-Hill 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 53 9