Scheda programma d'esame
NETWORKS AND LABORATORY III
FEDERICA PAGANELLI
Academic year2022/23
CourseCOMPUTER SCIENCE
Code736AA
Credits9
PeriodSemester 1
LanguageItalian

ModulesAreaTypeHoursTeacher(s)
RETI INF/01LEZIONI48
FEDERICA PAGANELLI unimap
LAURA EMILIA MARIA RICCI unimap
Obiettivi di apprendimento
Learning outcomes
Conoscenze

Il corso si propone di fornire le nozioni teoriche e metodologiche di base per la comprensione dei modelli di riferimento e protocolli delle reti di calcolatori e conoscenze pratiche per la programmazione di applicazioni distribuite in reti di computer.

Knowledge

The aim of the course is to introduce the main aspects of computer networks including reference models and protocols in computer networks as well as practical knowledge for network programming.

Modalità di verifica delle conoscenze
  • Prova orale per verificare le conoscenze acquisite nel modulo di Reti di Calcolatori
  • Progetto software e discussione orale del progetto e dei contenuti del programma di Laboratorio

 

Assessment criteria of knowledge
  • Oral exam 
  • Software project and discussion on the software project and content of the Laboratory program

.

Capacità

Al termine del corso lo studente avrà acquisito i fondamenti su modelli architetturali e protocolli di rete e sarà in grado di progettare e sviluppare servizi e applicazioni di rete in linguaggio JAVA.

Skills

The student will acquire foundations of architectural models and network protocols and he/she will also able to design and implement network services and applications in Java.

Modalità di verifica delle capacità

Al termine del corso dovrà sviluppare un programma Java che risolve un problema assegnato dai docenti  e sostenere una prova orale sulle nozioni teoriche.

Assessment criteria of skills

The student will design and develop a Java program that implements a solution of a problem assigned by teachers and pass an oral exam on network foundations.

Comportamenti

Lo studente acquisirà conoscenza dei fondamenti dei modelli e protocolli di rete e dei principali strumenti offerti da java per la programmazione multi-threading e di rete.

Behaviors

The student will acquire knowledge on foundations of network models and protocols and the main tools offered by Java for multi-threading and network programming.

Modalità di verifica dei comportamenti

Realizzazione di un programma funzionante e verifica mediante prova orale delle conoscenze teoriche acquisite.

Assessment criteria of behaviors

Oral exam to assess acquired knowledge of network protocols and architectures and development of a Java network program.

Prerequisiti (conoscenze iniziali)

Fondamenti di programmazione in linguaggio Java

Prerequisites

Foundations of Java programming.

Indicazioni metodologiche

Lezioni frontali

Attività di apprendimento:

  • frequenza delle lezioni
  • studio individuale
  • lavoro di laboratorio

Frequenza: consigliata

Metodi di insegnamento:

  • Lezioni
  • Laboratorio
Teaching methods

Delivery: face to face lectures

Learning activities:

  • attending lectures
  • individual study
  • Laboratory work

Attendance: Advised

Teaching methods:

  • Lectures
  • laboratory
Programma (contenuti dell'insegnamento)

Il modulo “reti di calcolatori” introduce i fondamenti delle reti di calcolatori illustrando applicazioni e protocolli dell'architettura di rete TCP/IP.

In particolare i contenuti trattati sono:

  • Introduzione alle reti di computer e Internet. Concetti di base: packet switching, circuit switching, Internet e organismi di standardizzazione, reti di accesso, metriche (latenza in reti a commutazione di pacchetto, throughput, prodotto rate ritardo)
  • Modelli stratificati. Modello ISO/OSI. Flusso dell'informazione, incapsulamento/decapsulamento. Stack TCP/IP.
  • Livello applicazione (paradigma client-server, applicazioni web, HTTP, FTP, protocolli per servizio di email, Telnet, SSH e port forwarding, DNS).
  • Livello di trasporto. Servizi livello di trasporto, UDP, TCP (gestione connessione, trasferimento dati affidabile, controllo di flusso, controllo di congestione).
  • Livello di rete. Introduzione allo strato di rete. Protocollo IP. Instradamento, forwarding, indirizzamento, modello datagram. Frammentazione. Indirizzamento IP. Forwarding diretto e indiretto. ICMP, programma ping e traceroute. Funzioni e architettura di un Router. Algoritmi (distance vector e link state) e protocolli di routing (RIP e OSPF). Sistemi autonomi e routing inter-AS, BGP. Cenni di IPv6, da IPv4 a IPv6: dual stack e tunneling.
  • Livello data link: cenni su servizi del livello link, ARP, Ethernet, dispositivi di interconnessione, switch (autoapprendimento), VLAN.
  • Applicazioni peer to peer, reti p2p centralizzate e decentralizzate, strutturate e non strutturate, esempio BitTorrent.
  • Cenni su sicurezza nelle reti: concetti di base, cifratura simmetrica e asimmetrica, firma digitale, protocollo IPSec.

Il modulo “Laboratorio di Programmazione di Rete” si pone l’obiettivo di fornire le conoscenze necessarie per lo sviluppo di applicazioni di rete tramite l'utilizzo di socket (indirizzi IP, modello connection-oriented e connectionless, comunicazioni punto a punto, multicast, modello client/server, server concorrente e/o multiplexed). Gli argomenti affrontati sono:

  • Costrutti JAVA ad alto livello per la gestione della concorrenza: thread pool, concurrent collections
  • Stream e filtri: richiami
  • JSON: libreria per la serializzazione e la deserializzazione
  • JAVA API per socket TCP: stream socket e JAVA NIO
  • JAVA API per protocollo UDP: Datagram Packet e Socket
Syllabus

The “reti di calcolatori” module introduces the foundations of computer networks by illustrating applications and protocols of the TCP/IP network architecture. 

  • Introduction to computer networks and Internet. Basics of: packet switching, circuit switching, Internet and standard institutions, access networks, metrics (latency, throughput, rate delay product)
  • Layered models. ISO/OSI reference model. Information flow, encapsulation. Stack TCP/IP.
  • Application layer (client-server paradigm, web, HTTP, FTP, email protocols, Telnet, SSH and port forwarding, DNS).
  • Transport layer. Services, UDP, TCP (connection management, reliable data transerf, flow control, congestion control).
  • Network layer. Main concepts about network layer. IP protocol. Datagram model. Fragmentation. IP addressing. Direct and indirect forwarding. ICMP, ping and traceroute. Router. Routing algorithms (distance vector e link state) and protocols (RIP e OSPF). Autonomous systems and inter-AS routing, BGP. Introduction to IPv6, from IPv4 to IPv6: dual-stack and tunneling.
  • Data link layer: introduction to services of link layer, ARP, Ethernet, interconnection devices (switch), VLAN.
  • Peer to peer applications, centralized and decentralized p2p networks, structured and unstructured, example: BitTorrent.
  • Introduction to network security: symmetric and asymmetric cryptography, digital signature,  IPSec.

The goal of the  “Laboratorio di Programmazione di Rete” module is to give the basic knowledge to develop network applications  (IP addresses, connection-oriented e connectionless models, point to point connections, multicast, the client/server model, concurrent and/or multiplexed server model). Main topic of the module are the following ones:

  • High level thread management in JAVA: thread pool, concurrent collections
  • Stream and filters
  • JSON:serialization and deserialization
  • JAVA API for  TCP sockets: stream socket e JAVA NIO
  • JAVA API for UDP protocol: Datagram Packet e Socket

 

Bibliografia e materiale didattico
  • James F. Kurose - Keith W. Ross, Reti di calcolatori e Internet: Un approccio top-down, 8/Ed.,  Pearson
  • B.A. Forouzan & F. Mosharraf – Computer Networks: A Top Down Approach  McGraw-Hill
  • Materiale didattico (diapositive) fornite dai docenti
Bibliography
  • James F. Kurose - Keith W. Ross, Reti di calcolatori e Internet: Un approccio top-down, 8/Ed.,  Pearson
  • B.A. Forouzan & F. Mosharraf – Computer Networks: A Top Down Approach  McGraw-Hill
  • Slides provided by teachers
Modalità d'esame
  • Prova orale per verificare le conoscenze acquisite nel modulo di Reti di Calcolatori
  • Progetto software e discussione orale del progetto software e dei contenuti del programma di Laboratorio
Assessment methods
  • Oral exam 
  • Software project and discussion on the software project and content of the Laboratory program
Altri riferimenti web

Le lezioni si svolgeranno in presenza

Teams 736AA 22/23 - RETI E LABORATORIO III - per avvisi, ricevimento, lezioni registrate

Moodle (Materiale del corso, es. slides, quiz, annunci) 

Additional web pages

Lessons will take place in person

Teams 736AA 22/23 - RETI E LABORATORIO III - for notices, office hours, recorded lessons

Moodle (teaching material: slides, quizzes, etc...) 

Updated: 12/09/2022 09:29