RETI DI CALCOLATORI M - Z

Anno accademico 2022/2023 - Docente: Salvatore Antonio RICCOBENE

Risultati di apprendimento attesi

Il corso fornisce un'introduzione al mondo delle reti di computer e all'interconnessione tra sistemi.
Vengono presentate le problematiche relative all'interconnessione fisica, mettendo in evidenza le limitazioni del mondo reale e le tecniche per superare tali limiti.
Successivamente viene descritta la suite dei protocolli TCP/IP, nelle tre componenti base: livello IP, livello di trasporto e livello applicativo.
Per ultimo vengono dati alcuni cenni sulle problematiche relative alla sicurezza.

Obiettivi formativi generali dell'insegnamento in termini di risultati di apprendimento attesi.

  1. Conoscenza e capacità  di comprensione (knowledge and understanding): l'obiettivo del corso è quello di far acquisire conoscenze che consentano allo studente di comprendere i meccanismi teorici e fisici che stanno alla base di un sistema di comunicazione; in particolare lo studente acquisirà le conoscenze dei principali protocolli che sono alla base di una rete di calcolatori
  2. Capacità  di applicare conoscenza e comprensione (applying knowledge and understanding): lo studente acquisirà le competenze necessarie per configurare interamente una rete aziendale di medie dimensioni, scegliendo gli apparati più opportuni, realizzando i cablaggi e ottimizzando le risorse disponibili. A tale riguardo una parte del corso consisterà di lezioni in laboratorio, con esempi pratici di configurazione e collegamento di host.
  3. Autonomia di giudizio (making judgements): Attraverso esempi concreti di errori derivanti da configurazioni non corrette, lo studente sarà in grado di elaborare autonomamente soluzioni in grado di risolvere i principali problemi che un amministratore di rete potrà trovare nel suo lavoro.
  4. Abilità comunicative (communication skills): lo studente acquisirà le necessarie abilità comunicative e di appropriatezza espressiva nell'impiego del linguaggio tecnico nell'ambito generale dei sistemi informativi e delle reti di computer in particolare.
  5. Capacità  di apprendimento (learning skills): il corso si propone, come obiettivo, di fornire allo studente le necessarie metodologie teoriche e pratiche per poter affrontare e risolvere autonomamente nuove problematiche che dovessero sorgere durante una attività lavorativa. A tale scopo diversi argomenti saranno trattati a lezione coinvolgendo lo studente nella ricerca di possibili soluzioni a problemi reali.

Modalità di svolgimento dell'insegnamento

Le lezioni sono tenute in aula con l'ausilio di slide, messe a disposizione degli studenti sul portale Studium. Le slide non sostituiscono i testi di riferimento, ma, oltre che agevolare la comprensione della lezione, forniscono un dettaglio puntuale sul programma svolto.

Le lezioni frontali teoriche sono intervallate da esercitazioni pratiche in ambiente virtuale, svolte nella stessa aula di lezione. Gli studenti sono invitati a formare piccoli gruppi di lavoro (massimo 4-5 persone) per lo svolgimento delle esercitazioni proposte.

In caso di necessità, a seguito di apposite indicazioni da parte degli organi di Ateneo, l'insegnamento potrà essere impartito in modalità mista o a distanza, con le necessarie variazioni rispetto a quanto dichiarato in precedenza, al fine di rispettare il programma previsto qui riportato.

Prerequisiti richiesti

Per la piena comprensione dei contenuti del corso sono necessari i seguenti prerequisiti:

  • Basi di Programmazione in C e C++
  • Elementi di Architettura degli elaboratori
  • Nozioni basilari di Sistemi Operativi

Frequenza lezioni

La frequenza delle lezioni non è obbligatoria ma è fortemente consigliata. In particolare si consiglia la frequenza alle ore di esercitazione di gruppo.

Contenuti del corso

Introduzione alle Reti di Calcolatori
Architettura di una rete.
Il sistema a livelli nell'architettura di una rete.
Servizi e funzionalità dei vari livelli
L'architettura del protocollo OSI. I livelli del TCP/IP.
Confronto architetturale tra OSI e TCP/IP.
Comunicazioni affidabili e non affidabili.
Servizi con connessione e senza connessione
Primitive di servizio
Reti broadcast, multicast, punto-punto
PAN, LAN, MAN e WAN.
Commutazione di circuito e commutazione di pacchetto.
Reti a circuito virtuale.

Application Layer
Comunicazione tra processi
Lo schema Client - Server
Affidabilità delle comunicazioni e coerenza dei dati end-to end
Requisiti temporali e di affidabilità delle applicazioni
Indirizzamento dei processi.
Well Known Ports, Registered Ports e User Ports
Il protocollo HTTP
Formato dei pacchetti HTTP
Il protocollo FTP
Confronto tra HTTP e FTP
Il protocollo SMTP
POP e IMAP
Il protocollo DNS - I record DNS
Cenni sul protocollo SNMP

Transport Layer
Il modello Client-Server
Indirizzamento a livello di trasporto (Mux -demux)
I Server multipli
Il livello di Trasporto in IP: UDP e TCP.
Formato delle frame UDP
Protocolli di trasferimento affidabile su canali inaffidabili
Velocità di trasferimento dati di un canale
Tempo di latenza
Velocità di trasferimento end-to-end - Banda disponibile ai livelli superiori
Protocolli Stop and wait, Go back N, Ripetizione selettiva
Il protocollo TCP. Formato dei pacchetti TCP
Tempi di Round Trip. Gestione dei Timer. Fast Retransmit
Finestra di ricezione e gestione ACK in TCP
Servizi orientati alla connessione.
Apertura e chiusura delle connessioni: problemi teorici e soluzioni implementative
La congestione nelle reti di comunicazione: aspetti teorici e possibili soluzioni
Controllo del Flusso e controllo della Congestione
Il controllo della congestione in TCP: varianti Tahoe e Reno.
Fairness tra connessioni TCP concorrenti: dimostrazione grafica.

Network Layer
Introduzione al livello di Rete.
Servizi Datagram e servizi con circuito virtuale. Confronto delle caratteristiche
Algoritmi di routing: algoritmi centralizzati e distribuiti.
Flooding: metodi di controllo del flooding
Distance Vectors.
Link State Routing
Algoritmo di Dijkstra
Confronto tra DV e LS.
Routing gerarchico.
Implementazioni RIP e OSPF.
Cenni su BGP.
Il protocollo IPv4.
Formato dei pacchetti IPv4.
Indirizzi IPv4. Le Sottoreti.
Tabelle di routing per host e router Indirizzamento IP su LAN ethernet
Indirizzamento intraLAN e interLAN
Frammentazione dei pacchetti IPv4
Protocolli su IP: ICMP, ARP, RARP, BOOTP, DHCP, NAT.
Il protocollo IPv6
Indirizzi IPv6: indirizzamento Anycast, Unicast, Broadcast e Multicast.
Indirizzi di canale
Header opzionali
Cenni sui Firewall.

Data Link Layer
Tecniche di Framing dei dati.
Codifica a due livelli, a tre livelli, a cinque livelli
Codifica 4B/5B, 8B/10B
Aspetti teorici per la rilevazione degli errori.
Uso della ridondanza nelle comunicazioni.
Il CRC. Calcolo del CRC.
Correzione degli errori: aspetti teorici
Distanza di Hamming.
I codici di Hamming.
Il sottolivello MAC
Protocolli del Data Link per il MAC
FDMA, TDMA, CDMA
Aloha puro e slotted.
CSMA
CSMA/CD
Protocolli senza collisioni
Cenni sui protocolli a turno (token)
Le LAN IEEE 802 (.1 .2).
IEEE 802.3.
Ethernet, Fast Ethernet, GigabitEthernet.
Schemi di Trellis e decodifica di Viterbi.
Schemi di interconnessione in Ethernet
Repeater, Hub, Bridge, Switch
Bridge trasparenti.
Schemi di indirizzamento flat.
Confronto tra indirizzamento piatto ed indirizzamento gerarchico: vantaggi e svantaggi
Indirizzi MAC
Le VLAN: Untagged e Tagged - IEEE 802.1Q

Laboratorio di Reti

I sistemi virtualizzati: aspetti teorici e implementazioni
Creazione di una VM linux based
Configurazione di una VM e collegamento in una LAN privata
Configurazione di una interfaccia di rete con IPv4 e IPv6.
Configurazione delle tabelle di routing.
Configurazione di una rete con LAN differenti connesse da router.
Uso dei socket in C.
Socket bloccanti e non bloccanti
Esempio di un sistema Client Server con UDP, con IPv4 e IPv6
Esempio di un sistema multiserver con TCP, con IPv4 e IPv6

Testi di riferimento

  1. J.F. Kurose - K. W. Ross: Internet e Reti di calcolatori
  2. D.E. Comer: Internetworking con TCP/IP - vol.1
  3. A. Tanenbaum: Reti di Computer

Programmazione del corso

 ArgomentiRiferimenti testi
1Introduzione alle reti di calcolatoriKurose Ross
2Il livello applicativoKurose Ross
3Il livello di TrasportoKurose Ross
4Connessioni UDPKurose Ross
5Principi per il trasferimento dati affidabileKurose Ross
6Il protocollo TCPKurose Ross
7Controllo della congestione in TCPKurose Ross
8Il livello di reteKurose Ross
9IPv4Kurose Ross
10IPv6Kurose Ross
11Protocolli di RoutingKurose Ross
12Livello Data LinkKurose Ross
13Rilevazione e correzione degli erroriKurose Ross
14EthernetKurose Ross
15VLanKurose Ross
16Creazione e configurazione di un host Linux based in ambiente virtuale
17Configurazione delle interfacce di rete in ambiente Unix
18Configurazione di un router su VM

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

L'esame finale consiste in una prova scritta, di un colloquio orale ed una prova in Laboratorio.

E' importante sapere che, salvo diversa comunicazione:

  • l'esame scritto si svolge alle ore 9:00
  • la prova orale si svolge lo stesso giorno della prova scritta.
  • la prova di laboratorio si svolge nei giorni subito seguenti la prova scritta.

Per problemi organizzativi, tale schedulazione potrebbe essere modificata.

Note:

  • È vietato l'uso di qualsiasi strumento hardware (calcolatrici, tablet, smartphone, smartwatch, cellulari, auricolari BT etc.), di libri o documenti personali durante le prove scritte e orali. Eventuale documentazione sarà fornita dalla commissione durante l'esame.
  • Per sostenere gli esami è necessario prenotarsi utilizzando l'apposito modulo del portale studenti.
  • Non sono ammesse prenotazioni tardive tramite email. In mancanza di prenotazione, l'esame non può essere nè sostenuto nè verbalizzato.

Prove in Itinere: Non previste

In caso di necessità, a seguito di apposite indicazioni da parte degli organi di Ateneo, la verifica potrà essere effettuata in modalità telematica, con le necessarie variazioni rispetto a quanto dichiarato in precedenza.

Esempi di domande e/o esercizi frequenti

Indirizzamento inter lan e intra lan con IPv4
Header opzionali in IPv6
Protocolli di routing: DV
Protocolli di routing: LSR
Controllo della congestione in TCP
Controllo del flusso in TCP
Apertura e chiusura delle connessioni TCP
Rilevazione e correzione degli errori
Indirizzamento a livello DL
IEEE 802.3
Protocolli di livello applicativo