Telematica II
Transcript
Telematica II
I socket Il Server e il Client si scambiano messaggi attraverso la rete mediante un socket dell’API (Application Programming Interface) ports Clients user space Server Telematica II 10. Esercitazione/Laboratorio 3 TCP/UDP TCP/UDP kernel space Socket API Corso di Laurea in Ingegneria Informatica A.A. 2009-2010 2° Semestre Prof. Giovanni Pascoschi 2 Creazione di un socket 3 – Numero di porta locale – Indirizzo IP host locale – Numero di porta remoto – Indirizzo IP host remoto – Protocollo di Trasporto – Opzioni aggiuntive Telematica II – A.A. 2009-2010 IP Ethernet Adapter Ethernet Adapter Telematica II – A.A. 2009-2010 hardware a cura di Pascoschi Giovanni Utilizzo dei numeri di porta TCP i numeri di porta sono usati per identificare entita’ diverse su un host i numeri di porta possono essere well-known (porte 0-1023) dinamiche o private (porte 1024-65535) i servizi/daemons usano di solito le porte well-known ogni client puo’ identificare il server o i servizi HTTP = 80, FTP = 21, Telnet = 23, ... il file presente nel percorso windows/system32/drivers/etc/services contiene le porte well-known i client di solito usano porte dinamiche che sono assegnate dal kernel a run-time Le applicazioni (client & server) devono specificare: associazione IP Semiassociazione Semiassociazione a cura di Pascoschi Giovanni 4 Telematica II – A.A. 2009-2010 NTP Web daemon service port 7777 port 80 TCP/UDP IP Ethernet Adapter a cura di Pascoschi Giovanni Programmazione dei socket con TCP #2 Programmazione dei socket con TCP #1 1. il client deve contattare il server Æ il processo server deve essere gia’ nello stato running 2. il server deve aver creato il socket che accettera’ i contatti dal client 3. il client contatta il server mediante: ¾ la creazione di un socket TCP locale ¾ specificando l’indirizzo IP, il numero di porta del processo server 4. dopo aver creato il socket, il client instaura una connessione al server TCP TCP Æ trasferimento affidabile di byte da un processo ad un altro residente tipicamente su un altro host controllato a livello applicativo controllato a livello di S.O. processo processo socket TCP con buffers, variabili socket TCP con buffers, variabili internet controllato a livello di S.O. host o server host o server 5 controllato a livello applicativo Telematica II – A.A. 2009-2010 a cura di Pascoschi Giovanni 6 Server TCP con un unico thread (serve un solo client per volta) TCP richiesta di lettura from link invia risposta al link chiude il link 7 Telematica II – A.A. 2009-2010 a cura di Pascoschi Giovanni Per utilizzare le classi JAVA utili alla gestione dei socket: import java.net.*; Client creazione di un socket, port=7777, per richieste entranti: servSocket=serverSocket( ) in attesa di una richiesta di connessione: link = servSocket.accept( ); N.B.: nei primi esempi useremo una connessione client/server 1:1 Esercitazione su socket TCP – lato server #1 Interazione con socket client/server TCP Server (hostid) Telematica II – A.A. 2009-2010 5. in generale, quando e’ contattato da un client, il server TCP crea un nuovo socket per comunicare con il client Æ permette la connessione con client multipli Æ il numero di porta servira’ per distinguere i vari client setup della connessione creazione di un socket, connessione all’ hostid, port=7777 link = Socket( ) 1. Creare un ServerSocket indicando il numero di porta 2. Mettersi in attesa di connessione da parte del client; a connessione stabilita si ottiene un oggetto di classe Socket (link) 3. Ottenere gli stream di input e output associati al Socket 4. Comunicare con il client usando gli stream di I/O per leggere (=ricevere) e scrivere (=inviare) dati 5. Chiudere il Socket (eventualmente tornare al passo 2 per servire un altro client) 6. Chiudere il ServerSocket invia una richiesta usando link legge risposta dal link chiude il link a cura di Pascoschi Giovanni 8 Telematica II – A.A. 2009-2010 a cura di Pascoschi Giovanni Esercitazione 3 – TCP Echo Server Esercitazione su socket TCP – lato server #2 richiesta di connessione Viene illustrato un esercizio TCP Echo Server sulla gestione dei socket TCP sul server (esercitazione 7FS) client server Socket internet socket server socket connessione stabilita 9 Telematica II – A.A. 2009-2010 a cura di Pascoschi Giovanni 10 Telematica II – A.A. 2009-2010 a cura di Pascoschi Giovanni Esercitazione 4 – TCP Echo Client Esercitazione su socket TCP – lato client Client TCP 1. Connettersi creando un Socket (link) e specificando indirizzo del server e porta TCP del servizio 2. Ottenere gli stream di input e output associati al Socket (come per il server) 3. Comunicare con il server usando gli stream di I/O per scrivere (=inviare) e leggere (=ricevere) dati 4. Chiudere il Socket 11 Telematica II – A.A. 2009-2010 a cura di Pascoschi Giovanni Viene illustrato un esercizio TCP Echo Client sulla gestione dei socket TCP sul client (esercitazione 8FS) 12 Telematica II – A.A. 2009-2010 a cura di Pascoschi Giovanni Esercitazione 5 – TCP Server generico Esercitazione su socket TCP – altra versione server Server TCP generico / EchoServer2 ¾ La classe astratta TCPServer implementa un generico server TCP, svolgendo le funzionalità comuni di gestione delle connessioni ¾ Un metodo astratto (chiamato processRequest nell'esempio) isola la logica di livello applicativo ¾ Ridefinendo questo metodo in una classe derivata si implementa uno specifico protocollo applicativo su TCP ¾ Una soluzione analoga è adottata per la creazione di Java servlet, applicazioni Java (lato server) eseguite per generare pagine Web dinamiche ¾ Occorrono sia un webserver per gestire la comunicazione HTTP (ad esempio Apache Httpd ) sia un Java servlet container per eseguire le servlet (ad esempio Apache Tomcat) 13 Telematica II – A.A. 2009-2010 a cura di Pascoschi Giovanni Viene illustrato un esercizio TCP Server generico sulla gestione dei socket TCP sul server (esercitazione BONUSFS) 14 Riepilogo della lezione Telematica II – A.A. 2009-2010 a cura di Pascoschi Giovanni Fine della lezione Esercitazione/Laboratorio 3 Gestione socket TCP su server & client Esercitazioni sulla gestione socket TCP lato server & client Analisi esercizi assegnati n. 4, 5, 6 e 7 15 Telematica II – A.A. 2009-2010 a cura di Pascoschi Giovanni Domande? 16 Telematica II – A.A. 2009-2010 a cura di Pascoschi Giovanni Esercizio n.9 Realizzare un’ applicazione client/server (1:1) che implementa il seguente servizio: 1. Invio da parte del client di una frase testuale, di un campo chiave “Cesare” di tipo intero e di un flag booleano “tipo” (0 per codifica chiaroÆCodCesare; 1 per codifica CodCesareÆchiaro) 2. Codifica/decodifica da parte del server della frase con crittografia di Cesare utilizzando il campo Cesare (negativo/positivo) e il flag per codifica diretta / inversa, al fine di ottenere la frase risultante 3. Invio al client dellla frase crittografata/decrittografata 17 Telematica II – A.A. 2009-2010 a cura di Pascoschi Giovanni