Connessioni di rete. Progetto di reti di Calcolatori e Sistemi Informatici - Stefano Millozzi. PdR_09010 - Stefano Millozzi



Documenti analoghi
Datagrammi. NOTA: MulticastSocket estende DatagramSocket

Telematica II 12. Esercitazione/Laboratorio 4

Corso di Reti di Calcolatori

Corso di Reti di Calcolatori. Datagrammi

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

Socket & RMI Ingegneria del Software - San Pietro

Parte II: Reti di calcolatori Lezione 10

Programmare con le Socket TCP in java. 2: Application Layer 1

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

Networking. Mauro Migliardi Ph. D.

Applicazioni distribuite

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI

Architettura Client-Server

Parte II: Reti di calcolatori Lezione 12

Altri tipi di connessione

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

appunti delle lezioni Architetture client/server: applicazioni client

Cenni di programmazione distribuita in C++ Mauro Piccolo

Programmare con le Socket

Programmare con le Socket TCP

Il modello client/server consente a due processi di condividere risorse e di cooperare per il raggiungimento di un obiettivo.

Introduzione alle applicazioni di rete

Programmazione dei socket con TCP #2

HTTP adaptation layer per generico protocollo di scambio dati

Modello client-server

Reti di Telecomunicazione Lezione 8

Il client deve stampare tutti gli eventuali errori che si possono verificare durante l esecuzione.

Inizializzazione degli Host. BOOTP e DHCP

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

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

ProgettAzione tecnologie in movimento - V anno Unità 4 - Realizzare applicazioni per la comunicazione in rete

Transmission Control Protocol

J+... J+3 J+2 J+1 K+1 K+2 K+3 K+...

Java Socket LSO 2008

Reti di Calcolatori:

Applicazioni web. Parte 5 Socket

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

Informatica per la comunicazione" - lezione 8 -

Controllo Winsock di Visual Basic

Tesina esame Programmazione di Sistemi Mobile realizzata da Roberto Giuliani matricola Sockets e DatagramSocket

Sockets in Java. Lorenzo Gallucci

Reti di Telecomunicazione Lezione 6

I Socket. Laboratorio Software M. Grotto R. Farina

1. RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2013/ Lato client

Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete

Corso sul linguaggio Java

Reti di Telecomunicazione Lezione 7

Protocolli Internet. Canale di comunicazione. canale di comunicazione

Reti di Calcolatori. Il software

PARTE 1 richiami. SUITE PROTOCOLLI TCP/IP ( I protocolli di Internet )

Esercizi (1-2): da: TCP/IP Sockets in C (Donahoo-Calvert)

Laboratorio di reti I: Il pacchetto java.net

Prova in itinere - Rete Internet (ing. Giovanni Neglia) Mercoledì 23 Maggio 2007, ore 15.00

Esercitazione. Formato di compitini e compiti: domande ed esercizi "closed book" G. Ferrari - Reti di calcolatori.

Standard di comunicazione

Operazioni di input/output. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Parte II Lezione 5

P2-11: BOOTP e DHCP (Capitolo 23)

Multicast e IGMP. Pietro Nicoletti

Protocolli di Comunicazione

Dal protocollo IP ai livelli superiori

Firewall e Abilitazioni porte (Port Forwarding)

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRGDWDJUDP

Sicurezza nelle reti

Chat. Si ha un server in ascolto sulla porta Quando un client richiede la connessione, il server risponde con: Connessione accettata.

Reti e Sistemi per l Automazione MODBUS. Stefano Panzieri Modbus - 1

Tecnologie Web L-A. Java e HTTP. Dario Bottazzi Tel , dario.bottazzi@unibo.it, SkypeID: dariobottazzi. Java e TCP/IP in a Nutshell

Corsi di Reti di Calcolatori (Docente Luca Becchetti)

12.5 UDP (User Datagram Protocol)

Socket in Java. Modelli di comunicazione

InterNet: rete di reti

ESERCITAZIONI DI LABORATORIO 1

DNS-Tunneling. Reference to. Ettore di Giacinto Luca Montunato

Corso di Reti di Calcolatori T

INTERNET e RETI di CALCOLATORI A.A. 2011/2012 Capitolo 4 DHCP Dynamic Host Configuration Protocol Fausto Marcantoni fausto.marcantoni@unicam.

appunti delle lezioni Architetture client/server: applicazioni server

R.Focardi Laboratorio di Ingegneria del Software 6. 1

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Martedì 15 Novembre 2005

Esercizio 2. Client e server comunicano attraverso socket TCP

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Esercizi su UDP. Esercitazione di Laboratorio di Programmazione di Rete A. Daniele Sgandurra 22/10/2008. Università di Pisa

Reti. Reti. IPv4: concetti fondamentali. arp (address resolution protocol) Architettura a livelli (modello OSI)

Lo scenario: la definizione di Internet

CORSO DI RETI SSIS. Lezione n.2. 2 Novembre 2005 Laura Ricci

Registratori di Cassa

Progetto di RHS MicroAODV per Reti di Sensori A.A. 2007/2008

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento

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

Elementi di Informatica e Programmazione

Firewall e NAT A.A. 2005/2006. Walter Cerroni. Protezione di host: personal firewall

Dettaglio attività e pianificazione. snamretegas.it. San Donato Milanese Aprile 2014

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

Progettare un Firewall

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

I/O su Socket TCP: read()

MANUALE CONFIGURAZIONE ED UTILIZZO GATEWAY MBUS-MODBUS (RTU/TCP) MODELLO PiiGAB M900

Interconnessione di reti

Rete Internet Prova in Itinere Mercoledì 23 Aprile 2008

Transcript:

Connessioni di rete Progetto di reti di Calcolatori e Sistemi Informatici - Stefano Millozzi 1

Socket orientato alla connessione o non orientato alla connessione 2

Socket in astratto 3

Socket modalità di funzionamento Orientata alla connessione (recapito sicuro) Controllo totale da parte del socket Telefono (apertura/chiusura connessione) Flussi di dati (Stream) TCP (Transport Control Protocol) Senza Connessione (recapito non sicuro) Assenza di controllo da parte del socket Posta (spedizione e consegna scorrelate) Datagrammi UDP (User Data Protocol) 4

Classi di base Linguaggio Java in tre punti: Presentazione: packages di GUI (AWT e Swing), packages di input/output, package di rete Logica: package di rete, packages di input/output, packages di linguaggio ed utilità Dati: packages di input/output (files), predisposizione all accettazione di connessione ai dati (drivers per DB) Le basi del networking in Java: package di rete (java.net) package di input/output (java.io) 5

Socket: modalità orientata alla connessione Socket & Server Socket 6

Socket Socket legato ad un indirizzo IP e ad una porta il layer TCP può identificare l'applicazione che comunica e scambia dati sulla rete I Pacchetti su una connessione TCP sono identificati da: indirizzo sorgente porta sorgente indirizzo destinazione porta destinazione Connessione TCP su socket utilizza i 4 parametri sopra Handshake Fase 1: richiesta connessione Fase 2: connessione Fase 3: comunicazione Fase 4: chiusura 7

Esempio: Indirizzo e numero di porta Creare una connessione tcp verso un server ssh e sftp e visualizzare le informazioni relativi alla connessione stabilita Uso del comando netstat Creare due connessioni differenti e con netstat determinare i parametri caratteristici ci ciascuna connessione 8

Fase 1: richiesta connessione Lato server socket in ascolto sulla porta di un indirizzo locale Es. indirizzo 192.168.0.1, porta 4444 attesa di richieste di connessione dal client Lato client effettua il binding sulla porta di un indirizzo locale Es. indirizzo 192.168.0.2, porta 32167 (solitamente assegnata dal sistema) richiede una connessione su indirizzo e porta del server 9

Fase2: connessione Lato server se tutto ok, server accetta connessione un nuovo socket è creato su stesso indirizzo e porta locale e su indirizzo e porta remota del client richiedente (connessione TCP) Lato client se tutto ok, il socket è creato su stesso indirizzo e porta locale e su indirizzo e porta remota del server (connessione TCP) Connessione TCP (socket) identificata dai quattro parametri: indirizzo e porta client, indirizzo e porta server 10

Fase3: comunicazione Client e server possono comunicare leggendo e scrivendo attraverso il socket (connessione TCP) La comunicazione effettiva avviene attraverso canali di comunicazione unidirezionali (stream) costruiti sul socket Stream specifici di lettura specifici di scrittura Fase4: chiusura Chiusura della connessione da ambo le parti Chiusura dei socket Chiusura degli stream dati 11

Socket vs ServerSocket CLIENT Client che vuole connettersi Socket Classi Java di riferimento per socket in modalità orientata alla connessione (TCP): ServerSocket Socket Server che vuole accettare connessioni ServerSocket SERVER 12

Socket 13

Socket 14

Socket 15

Socket 16

public Socket(String host, int port) throws UnknownHostExcetion, IOException Crea un Socket e richiede la sua connessione ad un ServerSocket in ascolto sull'indirizzo host alla porta port public Socket(String host, int port, InetAddress localaddress, int localport) throws UnknownHostExcetion, IOException Come sopra facendo un binding su localaddress e localport public InputStream getinputstream() throws IOException Restituisce un InputStream per questo Socket public OutputStream getoutputstream() throws IOException Restituisce un OutputStream per questo Socket Socket Permette di creare un socket (canale bidirezionale) remoto verso un host in ascolto su una particolare porta 17

ServerSocket 18

public ServerSocket(int port) throws IOException ServerSocket creato su una porta specifica; il valore 0 determina la scelta della prima porta libera disponibile public Socket accept () throws IOException Ascolta le richeste di connessione fatte a questo ServerSocket; il metodo si blocca finchè una connessione non viene impostata ServerSocket Attesa di connessioni esterne dirette alla macchina locale, su una specifica porta. Il metodo accept() ritorna un Socket (già aperto) verso l host remoto che ha effettuato la connessione 19

Richiami A cosa serve la classe Socket? Di quali parametri ha bisogno A cosa serve ServerSocket? Di quali parametri ha bisogno In che modo si gestisce la connessione verso il client? In che modo, una volta stabilita la connessione, è possibile inviare e ricevere dati? 20

Connessione Client / Server Socket s=new Socket( server,port) Connessione via Socket e ServerSocket HOST Input Stream Output Stream Output Stream Input Stream 21 SERVER ServerSocket ss = new ServerSocket(port) Socket s=ss.accept()

Esercizi 1) Implementare un Server in ascolto sulla porta 8080 che riceve richieste da un client (HTTP) e risponde con una semplice pagina HTML che contiene il testo ciao 2) Implementare un client HTTP molto semplice che effettua una richiesta sulla porta 8080 verso un server http (es: apache) Stringa java da inviare come richiesta: "GET / HTTP/1.0\n" + "Host: localhost:8080\n" + "Connection: keepalive\n\n Implementare un sistema client server che permetta di inviare al server un file semplicemente digitando il nome del file (completo di percorso) Il server salverà il file in una cartella predefinita Realizzare un programma Java che stampa la lista delle porte di un sistema occupate da un programma in ascolto per connessioni TCP/IP Il programma dovrà prevedere una modalità per impostare host da controllare e intervallo di porte da scandire 22

Datagram: modalità non orientata alla connessione DatagramSocket e DatagramPacket 23

Datagrammi Pacchetti di informazione (NON flusso continuo ed ordinato) Unità indipendenti con tutte le informazioni necessarie alla consegna Velocità ed efficienza, ma non sicurezza di consegna Classi Java di riferimento da utilizzare DatagramSocket socket, sia client che server DatagramPacket pacchetti da spedire 24

DatagramSocket e DatagramPacket CLIENT Client che vuole connettersi DatagramSocket DatagramPacket DatagramPacket SERVER Server che vuole accettare connessioni DatagramSocket 25

Datagram DatagramSocket Connessione non dedicata Cambiamento destinazione Invio datagrammi ad host diversi Simmetria d uso Ascolto di datagrammi in ingresso Produzione di datagrammi in uscita Utilizzo (in invio ed in ricezione) di DatagramPacket DatagramPacket Informazioni di business (Dati) Sequenza di byte (bufferizzazione: datagramma = sequenza di byte trasmessi/ricevuti a pacchetti di lunghezza stabilita) Lunghezza Informazioni di routing (Connessione) Indirizzo Porta 26

DatagramSocket Metodi di interesse Costruttori Receive Send 27

DatagramPacket Metodi di interesse Costruttori setdata setport setaddress( ) 28

Datagram DatagramSocket DatagramSocket() throws SocketException DatagramSocket creato su una porta libera scelta casualmente DatagramSocket(int port) throws SocketException DatagramSocket creato su una porta specifica; il valore 0 determina il comportamento del costruttore precedente DatagramPacket DatagramPacket(byte buffer[], int length) Usato per ricevere datagrammi buffer è l array di bytes preallocato che contiene l informazione del pacchetto quando arriva; length è il max numero di bytes letto in buffer DatagramPacket(byte buffer[], int length, InetAddress address, int port) Usato per inviare datagrammi i dati di business del pacchetto consistono nei primi length bytes dell array di bytes buffer; il pacchetto viene spedito alla porta port dell indirizzo address 29

Esercizio per casa Realizzare una coppia di classi DGClientTest.java invia 1000 pacchetti di 1000 byte ciascuno verso il server senza attendere la risposta Conteggia il tempo impiegato a trasmettere i dati, il numero di byte totali, il numero di pacchetti spediti DGServerTest.java Legge indefinitamente pacchetti Datagram e conteggia il numero totale di byte di dati ricevuti e lo stampa Effettuare un run e contare quanti byte sono partiti dal client e quanti arrivati nel server e il tempo impiegato e il numero di pacchetti spediti Realizzare poi una coppia di classi SKClientTest.java SKServerTest.java che effettuano le stesse operazioni delle classi datagram ma usando i socket Confrontare i tempi di spedizione e i pacchetti spediti nei due approcci Cambiare il numero di pacchetti da inviare per adattarlo alla velocità della macchina, aggiungendo anche dei tempi di ritardo 30

Datagram e multicast 31

Caso d impiego dei datagrammi: il multicast Trasmissione senza controllo simultanea ad un gruppo di ascoltatori Basato su Internet Group Management Protocol (IGMP) Gruppo multicast: indirizzo IP in classe D nell intervallo [224.0.0.1, 239.255.255.255] Host aderisce ad un gruppo di multicast utilizzando un pacchetto IGMP (informa i router di effettuare il relay dei pacchetti multicast alla rete dell'host) Primitive per aderire (join) ed uscire (leave) da un gruppo di multicast Per trasmettere si seguono le regole classiche del datagram 32

MulticastSocket Classe Java usata per spedire/ricevere pacchetti multicast Estende il DatagramSocket con primitive per l'adesione e l'uscita da gruppi di multicast public void joingroup(inetaddress mcastaddr) public void leavegroup(inetaddress mcastaddr) Veicola DatagramPacket 33

Esempio Realizzare client/server in cui il server trasmette in multicast un testo e vari client stampano i testi ricevuti MulticastServer.java MulticastClient.java 34

Chat Costruire un semplice sistema di chat multiplo con interfaccia testuale basato su multicast e verificarlo in un ambiente di rete (almeno due host tra loro interconnessi). 35

Socket un recapt 36