- Docente: Claudio Salati
- Crediti formativi: 6
- SSD: ING-INF/05
- Lingua di insegnamento: Italiano
- Modalità didattica: Convenzionale - Lezioni in presenza
- Campus: Cesena
- Corso: Laurea in Ingegneria informatica (cod. 0206)
Conoscenze e abilità da conseguire
Modelli, protocolli e strumenti per applicazioni di rete e sistemi distribuiti.
Completare la panoramica sulle architetture di rete (Layer 4, 5, 6, 7) e in particolare sull'architettura e i protocolli Internet.
Introdurre i concetti e le tecnologie utilizzati per la programmazione di rete.
Introdurre i servizi applicativi necessari per il supporto di un ambiente di programmazione distribuito.
Introdurre le problematiche di sicurezza delle reti e le tecniche utilizzate per affrontarle.
Contenuti
Generalità e nozioni introduttive
- Struttura di una rete di calcolatori: End-System vs. Intermediate System.
- Il modello di riferimento ISO OSI: architettura gerarchica, servizi, service access point, protocolli, entita'.
- Descrizione funzionale di un servizio e interfacce programmatiche (API): la portabilita' delle applicazioni di rete.
- Funzioni dei diversi layer del modello di riferimento.
- Allocazione delle entita' di protocollo sui nodi della rete e funzionalita' end-to-end.
Il livello di trasporto: servizio connection oriented
- Relazioni tra layer di trasporto e layer di rete.
- Caratteristiche funzionali del servizio fornito dal protocollo TCP.
- Procedure per la rilevazione e il recupero degli errori.
- La tecnica della sliding window in TCP ai fini dell'utilizzo ottimo della banda di rete e dell' “end-to-end flow control”.
- TSAP nell'architettura Internet. Porte e connessioni.
- Apertura e chiusura di una connessione.
- Il ruolo del TCP nel controllo della congestione di rete: algoritmi e implementazioni.
- Problemi di performance.
Il livello di trasporto: servizio connectionless
- Caratteristiche funzionali del servizio fornito dal protocollo UDP.
- Indirizzamento di un modulo di programma distribuito.
API Unix per l'accesso al servizio di trasporto.
- Interfaccia socket.
- Interfaccia TLI.
- Portabilita' vs. interoperabilita'.
Il livello di presentazione.
- Rappresentazione delle informazioni in reti eterogenee.
- Trasferimento di dati (byte) vs. trasferimento di informazioni.
- L'approccio OSI: Sintassi astratta, sintassi concreta (locale), sintassi di trasferimento. ASN.1 e BER.
- Il livello di presentazione nel mondo Internet: XDR.
- Rilevanza funzionale del layer. Altri esempi: Corba, XML schema, Java.
La struttura del livello applicativo secondo il modello OSI
- Servizi applicativi generici: chiamata di procedura remota (RPC).
- Possibili semantiche per RPC.
- Sun RPC: definizione di una interfaccia remota, sua implementazione, protocollo, livelli di accesso. Strumenti di programmazione distribuita.
Applicazioni di rete a protocolli applicativi.
- Name Service (DNS).
- HTTP e il Web.
Sicurezza e integrità delle informazioni nelle reti di calcolatori.
- Identificazione, autenticazione, autorizzazione, confidenzialita', integrita'.
- Minacce alla sicurezza delle operazioni.
- Principi di crittografia a chiave segreta.
- Crittografia a chiave pubblica.
- Il problema della distribuzione delle chiavi.
- Protocolli di autenticazione.
- Firme digitali.
- Sicurezza su Internet: SSL e HTTPS.
Testi/Bibliografia
Il corso si appoggia su due testi principali:
- A.S. Tanenbaum, Computer Networks, 4th ed., Prentice Hall.
- D. Comer, Internetworking con TCP/IP - Principi, protocolli e architetture, vol. 1, Addison-Wesley.
Per la parte su RPC e in generale per la parte di programmazione di rete sono stati utilizzati i seguenti testi:
- W.R. Stevens, Unix Network Programming, Prentice Hall.
- SunSoft, Network Interfaces Programmer's Guide (disponibile in copia elettronica nel sito del corso).
Gli altri riferimenti principali di cui si e' fatto uso sono i seguenti:
- RFC 1014, External Data Representation Standard, 1987.
- RFC 1057, RPC: Remote Procedure Call Protocol Specification,
1988.
- M.T. Rose, The open book, Prentice Hall.
- ISO, IS 8072 - OSI Transport Service Definition.
- ITU-T, Rec. X.219 - Remote Operations: Model, Notation and Service Definition (a.k.a. ISO IS 9072-1).
Metodi didattici
Il corso e' strutturato in lezioni teoriche ed esercitazioni. Le esercitazioni consistono nella realizzazione di programmi in C e Java che fanno uso di API che consentono di accedere ai servizi di rete discussi a lezione.
Le esercitazioni di laboratorio giocano un ruolo fondamentale dell'economia del corso.
Se tutte svolte e consegnate nei modi specificati, consentono di evitare la parte scritta dell'esame finale.
Modalita' di esecuzione:
- in gruppi di 2
- eccezioni motivate: gruppi di 1 o 3
- gruppi dichiarati all'inizio del corso
- e' ammessa la discussione tra diversi gruppi ma e' assolutamente proibito copiare e scambiarsi il codice
Durante l'esame orale: verifica individuale che lo studente sia effettivamente padrone del contenuto dell'esercitazione.
Modalità di verifica e valutazione dell'apprendimento
La valutazione si basera' su ogni elemento possibile:
- interazioni in aula
- esercitazioni
- esami.
Gli esami consistono di
- una prova scritta preliminare e di
- una prova orale.
La prova scritta viene svolta in laboratorio.
E' costituita da alcune parti di progetto, tutte necessarie per dimostrare la preparazione anche pratica.
La seconda prova, orale, parte dallo scritto o dalle esercitazioni e si sviluppa su tutti i temi del corso.
Strumenti a supporto della didattica
I lucidi delle lezioni e delle esercitazioni (in questo momento in versione obsoleta: per una versione aggiornata, vedi sotto) sono disponibili in copia elettronica nell'area di download del corso:
Dal sito e' possibile scaricare anche alcuni dei riferimenti
bibliografici e altro materiale di interesse.
Annunci relativi al corso e un mirror parziale ma aggiornato delle parti significative dell'area di download sono reperibili al seguente indirizzo:
http://dm.unife.it/~salati/cesena/annunci.htm
Link ad altre eventuali informazioni
http://dm.unife.it/~salati/cesena/annunci.htm
Orario di ricevimento
Consulta il sito web di Claudio Salati