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