28024 - RETI DI CALCOLATORI T

Scheda insegnamento

  • Docente Antonio Corradi

  • Crediti formativi 9

  • SSD ING-INF/05

  • Modalità didattica Convenzionale - Lezioni in presenza

  • Lingua di insegnamento Italiano

Anno Accademico 2016/2017

Conoscenze e abilità da conseguire

Conoscenza dei modelli, dei protocolli e degli strumenti per lo sviluppo di applicazioni di rete e sistemi distribuiti. Capacità di progetto e realizzazione di applicazioni in reti di calcolatori.

Programma/Contenuti

1. Generalità e Concetti di Base Generalità dei sistemi distribuiti

  • inquadramento generale e definizioni di base
  • sistemi distribuiti decentralizzati ed eterogenei
  • necessità di standardizzazione delle soluzioni (ISO/OSI ed Internet)

Si presentano alcuni modelli caratteristici, come

  • modelli a memoria condivisa ed a scambio di messaggi
  • modello di interazione cliente/servitore
  • modelli di connessione, di replicazione, ecc.

2. Ambienti Standard

Standardizzazione
Organizzazione a livelli ISO OSI

  • livello di trasporto e di rete
  • livelli applicativi: sessione, presentazione, e applicazione

Alcune applicazioni standard distribuite

3. Protocolli TCP/IP TCP/IP e protocolli

I protocolli della suite TCP/IP: livelli di rete e di trasporto
Applicazioni comuni per:

  • servizi sincroni: terminale remoto virtuale, trasferimento di file,
  • servizi asincroni: mail, news, e altri

Alcuni strumenti a larga diffusione in ambiente UNIX e Windows ai diversi livelli

4. Alcuni strumenti di riferimento

Socket e relative primitive Socket in C (per UNIX) e in Java
Esempi di interazione in sistemi UNIX e collegamenti con TCP/IP
Alcune applicazioni cliente servitore
Chiamate di Procedura Remota o RPC
RMI, operazioni remote in Java

5. Sistemi Operativi Distribuiti e servizi

Sistemi operativi distribuiti
Naming delle risorse
Granularità dei processi e loro interazione
Gestione delle risorse
File system
Alcuni problemi e possibili soluzioni
Sistemi di nomi e DNS
Soluzioni per evitare congestione ed evoluzione dei protocolli.

Testi/Bibliografia

G. Coulouris, J. Dollimore, T. Kindberg: 'Distributed Systems: concepts and Design', quarta edizione, Addison-Wesley, 2005.

M.L. Liu: 'Distributed Computing', Addison-Wesley, 2003.

J.F. Kurose, K.W. Ross: 'Internet e Reti', McGraw-Hill, 2001 (tradotto nel 2001 da 'Computer Networking: a Top-Down Approach Featuring the Internet', 2001).

A.S. Tanenbaum: 'Computer Networks', Prentice-Hall, 1988 (tradotto in 'Reti di Calcolatori', Jackson).

D. Reilly, M. Reilly: 'Java Network Programming and Distributed Computing', Addison-Wesley, 2002.

Metodi didattici

Le esercitazioni durante il corso sono svolte con la stessa modalità del progetto finale (parte in ambiente C e in Java).
In particolare si richiedono competenze per il progetto di piccoli casi cliente/servitore, in diversi ambiti e con diversi strumenti:
- socket da usare in C e Java, per diversi protocolli e diversi casi di uso;
- RPC, per progetto di clienti e servitori ad alto livello, con tecnologie SUN;
- RMI, per progetto in Java di clienti servitori.

Lo studente è responsabile delle proprie risorse di calcolo e del materiale che ha a disposizione per lo svolgimento delle prove:
in particolare si richiede la consegna preliminare durante le esercitazioni degli schemi di programma (template di soluzione) come base per il lavoro sui singoli sottoprogetti.
Qualunque tentativo di copiare verrà perseguito e punito.

URL: lia.disi.unibo.it/Courses/RetiT

Modalità di verifica dell'apprendimento

Gli esami consistono di

  • una prova di conoscenza dei temi del corso, valutata con alcune domande (senza accesso ad alcun materiale),
  • una prova scritta svolta come un progetto in laboratorio con tempo limitato e qualunque materiale di supporto,
  • una prova orale successiva.

Una consegna dei template di progetto (ossia la base sorgente per lo sviluppo dei progetti) è preliminare alla prima prova ed è prerequisito fondamentale da consegnare una volta per anno accademico.

Strumenti a supporto della didattica

In aula si usano lucidi e discussioni di piccoli progetti.
Sito web del corso ad URL: lia.disi.unibo.it/Courses/RetiT

In laboratorio sono presenti strumenti di sviluppo e di supporto alla esecuzione dei progetti.

Gli studenti sono invitati a familiarizzare con questi o altri strumenti di uso personale.
Si suggeriscono strumenti in ambiente UNIX (Linux). La operatività e le capacità di realizzare piccoli progetti sono particolarmente importanti.

Orario di ricevimento

Consulta il sito web di Antonio Corradi