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.
Introduzione alle reti di calcolatori
Livello applicativo
Livello di trasporto
Livello di rete
Livello di collegamento
Principi di reti wireless e mobili, di sicurezza, e dei protocolli per la multimedialità
Richiami di programmazione JAVA: classi, interfacce ereditarieta'.
Thread Programming in JAVA
Gestione di indirizzi IP
JAVA streams
Sockets UDP
Sockets TCP
Remote Method Invocation
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