elenco   
        corso   

Reti di calcolatori e laboratorio B

Codice: 274AACrediti: 12Semestre: 1-2Sigla: RCL 
 
Settore disciplinare: INF/01 - Informatica

Ultima versione disponibile: programma da confermare per l’a.a. 2010/2011
     



Moduli:

Reti di calcolatori B

Docente

Gianluigi Ferrari   giangi@di.unipi.it  Stanza 281  Tel. 0502212766

Ultima versione disponibile: programma da confermare per l’a.a. 2010/2011
     


Laboratorio di programmazione di reti B

Docente

Augusto Ciuffoletti   augusto@di.unipi.it  Stanza 329a  Tel. 0502213125

Prerequisiti

Conoscenza dei componenti di rete TCP/IP/ETH (hub, switch, router ecc.).
Conoscenza del protocollo IP e dello header IP: flag, frammentazione, indirizzamento ecc.
Conoscenza del protocollo TCP e dello header dei pacchetti: porte, flag, segmenti, 3-way handshake, ecc.
Elementi di base di Java, con particolare riferimento ai meccanismi di astrazione object oriented.

Obiettivi di apprendimento

Lo studio dei protocolli di comunicazione e dei componenti che costituiscono Internet non è completo se non si osserva in pratica l'interazione delle parti: Internet non è un protocollo nato a tavolino, ma è cresciuto sotto la spinta di esigenze concrete, anche contrastanti con lo spirito iniziale con cui fu progettato. Il Laboratorio si pone l'obiettivo di mettere gli studenti in condizione di sperimentare ed osservare le complesse interazioni tra i diversi componenti, ed intravvedere l'importanza di consuetudini e "good practices" che semplificano e rendono trattabile la rete globale. Tra queste si sottolinea l'importanza della stratificazione delle funzionalità, anche attraverso la redazione di semplici programmi in Java. Di questo linguaggio lo studente apprezzerà l'approccio object-oriented, che rende naturale la stratificazione delle funzionalità.
Conoscenze. Le conoscenze acquisite sono sopratutto degli "how-to": sono elencate tra le "capacità".
Capacità. Al termine del corso lo studente dovrebbe essere
Comportamenti. Qualsiasi attività che si riconduca alla rete deve utilizzare astrazioni adeguate, per non perdersi in una miriade di dettagli irrilevanti. Al termine del laboratorio lo studente dovrebbe essere portato ad privilegiare l'applicazione di questo semplice principio.

Descrizione

Il corso si sviluppa nel secondo semestre, e si intende essere il completamento dello studio teorico dei protocolli di comunicazione illustrati nel corso del 1o modulo.
Il corso è organizzato in attività settimanali: all'inizio di ogni settimana viene presentato un tema, corredato dall'indicazione di una attività pratica da portare a termine nel termine indicativo della stessa settimana.
L'attività pratica viene svolta utilizzando una rete virtuale moderatamente complessa (due hub, uno switch, 2 router e tre nodi) implementata in modo assolutamente realistico con User Mode Linux sui computer delle aule del polo Fibonacci, oppure sul proprio computer. In quest'ultimo caso l'installazione della rete virtuale si basa su Ubuntu Linux, ed è semplice ed affidabile. Funziona in modo accettabile anche su portatili datati e netbook. La sua installazione viene illustrata nella prima lezione del corso di laboratorio.
Ogni due settimane (con possibili variazioni in relazione al calendario) viene assegnato un esercizio, la cui soluzione va consegnata entro una scadenza di due settimane. La soluzione dell'esercizio viene esaminata dal docente, che può chiederne la riconsegna in caso di errori. La consegna fuori scadenza viene penalizzata, e un ritardo di oltre due settimane in una consegna compromette l'esito finale del corso. Alcuni esercizi possono essere facoltativi, e servire a compensare penalità o come bonus.
Il numero di bonus e penalità accumulate determina la valutazione del corso.
Gli studenti che, per scelta o necessità, decidano di non frequentare il corso, trovano tutto il materiale didattico necessario sul sito riservato agli studenti. Oltre alle trasparenze utilizzate a lezione, anche il codice della rete virtuale e le trasparenze commentate in audio.

English Description

It is a "hands-on" course, designed to give a practical grasp to the concepts learned during the previous module.
We use a virtual network (based on UMLinux) to carry out our experiments in an environment which is hardly distinguishable from a real one. The virtual network is either available at the University labs, or can be installed over Ubuntu/Linux on your own laptop.
The course begins with the configuration of the virtual network (addresses, routing etc.), and proceeds using elementary network applications (we limit to the DAYTIME and ECHO, the "hello world" of networking) to explain and put in practice complex Java networking abstractions like threads, executors, asynchronous servers.
Students have to submit the solution of problems delivered by the teacher every two weeks. The teacher may require a resubmission in case the solution is not satisfactory. Complying solutions are due within a two weeks deadline: non-conformace incurs penalties, that may compromise the final result. One consequence quite strict regulation is that a score is assigned to each student that successfully completes the laboratory within the end of June.

Programma

  1. Presentazione del laboratorio virtuale labreti.
  2. Istruzioni per l'installazione del laboratorio virtuale.
  3. I componenti e lo strato di rete.
  4. Configurazione delle interfacce nel laboratorio virtuale.
  5. Routing statico e dinamico (RIP) e configurazione del routing nella rete virtuale.
  6. Uso di Eclipse nella programmazione di applicazioni di rete in Java.
  7. Realizzazione di server e client TCP di DAYTIME e deploying dei jar nella rete virtuale.
  8. L'uso di tcpdump nel tracciamento dell'esecuzione di applicazioni di rete.
  9. Realizzazione di server e client TCP ECHO.
  10. Realizzazione di server e client UDP ECHO.
  11. Modularizzazione e stratificazione nelle applicazioni di rete: uso di Eclipse Refactoring per la modularizzazione di TCP ECHO.
  12. Applicazione dei thread al server ECHO (Java Threads).
  13. Introduzione all'astrazione Executors ed applicazione a TCP ECHO.
  14. Server asincroni: la libreria Netty per la costruzione di server asincroni complessi.
  15. Realizzazione di server e client TCP ECHO con la libreria Netty.
  16. Seminario: l'astrazione "Web Service" e SOAP
Ore lezione: 10 Ore laboratorio: 32Ore seminari: 2 


Ulteriore pagina web del corso: https://sites.google.com/site/laboratoriodireti/



home


email