Reti di calcolatori

A.A. 2024/2025
12
Crediti massimi
120
Ore totali
SSD
INF/01
Lingua
Italiano
Obiettivi formativi
L'insegnamento ha l'obiettivo di analizzare le tecnologie, i modelli, i principi di funzionamento e i principali protocolli alla base delle reti di calcolatori. Verranno inoltre analizzati i principali protocolli applicativi, e relativi servizi, della rete IP e presentate alcune tecniche di programmazione distribuita.
Risultati apprendimento attesi
Al termine dell'insegnamento lo studente dovrà conoscere le tecnologie, i modelli, i principi di funzionamento e i principali protocolli (compresi quelli applicativi) alla base delle reti di calcolatori IP. Inoltre, attraverso prove di laboratorio, lo studente dovrà aver acquisito, da un lato, la capacità di gestire e configurare una rete IP e, dall'altro, la capacità sviluppare il client e il server di una applicazione distribuita.
Corso singolo

Questo insegnamento può essere seguito come corso singolo.

Programma e organizzazione didattica

Edizione unica

Responsabile
Periodo
Secondo semestre

Programma
L'insegnamento, composto da tre parti, presenterà le tecnologie e i protocolli alla base del funzionamento delle reti di calcolatori. Nella prima parte verranno discussi i fondamenti dei sistemi e delle reti di calcolatori, tra cui le le reti locali e la rete Internet, con particolare riferimento ai protocolli di rete mobile e cablate e ai protocolli di trasporto (TCP/IP).

1. Introduzione. Struttura e tipologie dei sistemi di elaborazione dell'informazione. Infrastrutture di calcolo e di servizi. Standard multilivello: l'esempio di ISO/OSI.
2. Introduzione alle reti locali. Motivazioni. Reti private e pubbliche; storia e filosofia di progetto. Tipi e architetture di reti private: LAN, MAN, WAN. Comunicazione: i concetti di instradamento, connessione, contesa. Il livello 1: cablaggi e proprietà fisiche della comunicazione in guida. Il livello 2: MAC e LLC. Reti cablate. Switching. Reti mobile e basate su tecnologie in fibra ottica. Standard IEEE. Convergenza e servizi per Software Defined Network.
3. Protocolli. Generalità. Il livello 3: Protocolli e caratteristiche di progetto. Organizzazione interna. Il livello 4: servizi offerti al livello trasporto. Confronto tra reti basate su circuito virtuale e reti basate su datagrammi.
4. Caso di studio: Internet Protocol. Il livello rete di IPv4. Indirizzi IP. Subnetting e Supernetting. Protocolli di controllo. ICMP. ARP, RARP. IPv6. Il preambolo IPv6 principale. Preamboli di estensione.
5. Algoritmi di Routing. Routing lungo il cammino minimo. Flooding. Routing basato sui flussi. Routing basato su vettori di distanza. Routing basato sullo stato dei canali. Broadcast routing. Multicast routing. Routing IP: OSPF. BGP. Internet multicasting.
6. Internetworking IP. Circuiti virtuali concatenati. Internetworking senza connessioni. Tunneling e gestione della frammentazione. Firewall. NAT.
7. Il servizio di trasporto. Elementi del protocollo di trasporto. Trasporto TCP/IP: Il modello di servizio TCP. Il protocollo TCP. Il protocollo UDP. Il preambolo del segmento TCP. Il preambolo UDP. Qualità del servizio. Primitive del servizio di trasporto.

La seconda parte seconda parte dell'insegnamento analizzerà i livelli superiori del modello ISO/OSI, discutendo i principali protocolli applicativi e servizi per la rete Internet, e le tecniche per la programmazione distribuita.

1. Protocolli e sistemi applicativi client-server. Struttura dei servizi applicativi basati su TCP e UDP.
2. Protocolli applicativi per il funzionamento della rete IP. Protocolli BOOTP, DHCP. Modalità di assegnamento degli indirizzi IP. DNS. Naming. Concetto di dominio. Risoluzione dei nomi di dominio.
3. Applicazioni e servizi Internet. WWW, Electronic Mail, File Transfer, Remote Login. Descrizione e analisi dei protocolli HTTP, FTP, Telnet, SMTP, POP3.
4. Amministrazione di rete. Descrizione del protocollo SMNP per la gestione della rete.
5. Programmazione distribuita. Socket. Interfacce standard a livello socket e stream per Unix e Windows. Socket TCP e UDP. Socket concorrenti.

Nella terza parte dell'insegnamento si svolgeranno prove in laboratorio che verteranno principalmente (i) sull'analisi sperimentale e configurazione dei principali protocolli e servizi per la rete Internet, (ii) sui concetti di programmazione distribuita appresi utilizzando il linguaggio di programmazione C.
Prerequisiti
Conoscenza dei fondamenti delle architetture degli elaboratori.
Metodi didattici
L'insegnamento viene erogato mediante lezioni di teoria frontali e lezioni in laboratorio. Le lezioni di teoria mirano all'apprendimento dei concetti teorici più rilevanti. Le lezioni in laboratorio si compongono di esercitazioni e attività pratiche che mirano ad approfondire i concetti appresi in teoria.
Materiale di riferimento
Dispense e slide disponibili alla pagina web dell'insegnamento (https://myariel.unimi.it/course/view.php?id=2135).

Testo di riferimento:
- D.E. Comer, "Internetworking with TCP/IP: Principles, protocols, and architectures", Volume I, Prentice Hall. Disponibile anche in edizione italiana (edizioni Pearson Education)

Ulteriori riferimenti consigliati:
- J. Kurose, K. Ross, "Computer Networking: A Top down Approach featuring the Internet", 3rd ed. Addison Wesley
- C. Huitema, "Ipv6: New Internet Protocol", Prentice-Hall
Modalità di verifica dell’apprendimento e criteri di valutazione
L'esame consiste in due prove scritte e nella presentazione facoltativa di un progetto svolto individualmente o in gruppo (massimo tre persone). Le prove scritte, della durata di un'ora e mezza ognuna, puntano ad accertare, tramite una serie di domande a risposta aperta, le conoscenze dello studente su tutti gli argomenti trattati nell'insegnamento. Il progetto, proposto dal docente o dallo studente, mira ad approfondire gli aspetti pratici di uno degli argomenti trattati nell'insegnamento.

Una volta superate tutte le prove e presentato l'eventuale progetto, viene formulata la valutazione complessiva, espressa in trentesimi, tenendo conto dei seguenti parametri: grado di conoscenza degli argomenti, capacità di applicare le conoscenze alla risoluzione di un progetto concreto, qualità del progetto sviluppato, capacità di ragionamento critico, chiarezza espositiva e proprietà di linguaggio.
INF/01 - INFORMATICA - CFU: 12
Laboratori: 48 ore
Lezioni: 72 ore
Turni:
Docente/i
Ricevimento:
Su appuntamento
Ufficio docente presso il Dipartimento di Informatica in Via Celoria 18, Milano (MI)
Ricevimento:
Solo su appuntamento: contattare il Dott. Fulvio Frati ([email protected])
ufficio presso il Dipartimento di Informatica - via Celoria 18, 20133 Milano