Indice
Programma
Il corso è strutturato in due moduli: il primo modulo presenta i fondamenti delle reti di calcolatori e il secondo modulo di laboratorio mostra un’applicazione concreta dei concetti teorici presentati nel primo modulo. Il primo modulo introduce i principi ed i concetti su cui si basano le reti e analizza la loro realizzazione nei sistemi reali. In particolare, vengono presentate le problematiche di livello applicativo e i protocolli più comuni a questo livello (quali HTTP, FTP, e-mail etc.), il livello di trasporto e i protocolli TCP e UDP, il livello di rete e i protocolli di routing e il livello di collegamento. Infine verranno presentati i principi di di reti wireless e mobili, di sicurezza nelle reti e dei protocolli per la multimedialità.
Il secondo modulo introduce gli strumenti per la realizzazione di applicazioni di rete in JAVA. In particolare vengono introdotti sia strumenti a basso livello come i socket TCP ed UDP che strumenti a piu' alto livello, come RMI (Remote Method Invocation) e le callbacks. La prima parte del corso introduce inoltre la programmazione concorrente in JAVA: si discute il concetto di thread, la tecnica del thread pooling e i meccanismi offerti da JAVA per la sincronizzazione dei threads.
Programma dettagliato
Modulo di Reti di Calcolatori
Introduzione alle reti di calcolatori
- architettura complessiva di Internet
- protocolli
- Breve storia di Internet
Livello applicativo
- Web e HTTP
- FTP
- E-mail: SMTP, POP3, IMAP
- DNS
- P2P file sharing
- Soket
Livello di trasporto
- Servizi del livello di trasporto
- Multiplexing/demultiplexing
- Affidabilità
- Flusso e congestione
- TCP e servizio orientato alla connessione
- UDP e servizio senza connessione
Livello di rete
- Reti a datagramma e a circuito virtuale
- Protocollo IP
- Protocolli di routing
- Link state
- Distance Vector
- Routing gerarchico
- Routing in Internet
Livello di collegamento
- Correzione di errori di trasmissione
- protocolli di accesso multiplo
- indirizzamento
- Ethernet
Principi di reti wireless e mobili, di sicurezza, e dei protocolli per la multimedialità
Modulo di laboratorio di Reti
Richiami di programmazione JAVA: classi, interfacce ereditarieta'.
- Nella parte introduttiva del corso verranno proposti semplici esercizi per richiamare la programmazione ad oggetti in JAVA introdotta nel corso di Programmazione 2
Thread Programming in JAVA
- Attivazione di threads. La classe Runnable
- Pool di threads: politiche per la gestione dei Pool
- Thread che restituiscono risultati: la classe Callable
- Stati di un thread, metodi join, interrupt
- Sincronizzazione, concetto di monitor
- Metodi Synchronized, sezioni critiche, wait(), notify(), notifyall()
Gestione di indirizzi IP
- Classe InetAddress
JAVA streams
- caratteristiche generali
Sockets UDP
- DatagramSockets, DatagramPackets
- Generazione di pacchetti UDP: Le classi ByteArrayInputStream, ByteArrayOutputStream
- Multicast
Sockets TCP
- Le classi Socket, ServerSocket
- Invio di dati strutturati su stream: framing
- supporto per la gestione di socket TCP
- Implementazione di servers paralleli
Remote Method Invocation
- Attivazione di registry
- Esportazione di oggetti remoti
- RMI callbacks
Libri di testo
Per il modulo di Reti: J. Kurose & K. Ross. Computer Networking: A top-down approach. (fourth edition, Addison Wesley)
Per il modulo di Programmazione di Rete: Esmond Pitt, Fundamental Networking in Java , Springer Verlag, 2005