| | | corso | | | | | |
Reti di calcolatori e laboratorio A
Codice: | 274AA | Crediti: | 12 | Semestre: | 1-2 | Sigla: | RCL | |
|
Settore disciplinare: | INF/01 - Informatica |
Descrizione
Il corso consiste di due moduli: "Reti di calcolatori" (primo semestre) e "Laboratorio di reti di calcolatori" (secondo semestre).
Moduli:
Reti di calcolatori A
Docente
Prerequisiti
"Architetture degli Elaboratori" e "Sistemi Operativi e Laboratorio".
Obiettivi di apprendimento
Introdurre gi aspetti fondamentali delle reti di calcolatori illustrando applicazioni e protocolli relativi al modello TCP/IP.
Descrizione
Introduzione alle reti, applicazioni di rete, protocolli (dal livello trasporto al livello link), cenni alla sicurezza nelle reti e ai sistemi P2P.
Programma
Laboratorio di programmazione di reti A
Docente
Laura Ricci
Tel. 0502212768Prerequisiti
- Conoscenza dei componenti di rete TCP/IP/ETH (hub, switch, router ecc.)
- Conoscenza del protocollo IP e dello header IP: flag, frammentazione, indirizzamento ecc.
- Conoscenza del protocollo TCP e dello header dei pacchetti: porte, flag, segmenti, 3-way handshake, ecc.
- Elementi di base di Java, con particolare riferimento ai meccanismi di astrazione object oriented.
Obiettivi di apprendimento
Lo studio dei protocolli di comunicazione e dei componenti che costituiscono Internet non è completo se non si conoscono e non si sperimentano gli strumenti per realizzare applicazioni di rete e per configurare i componenti della rete. L'obiettivo del corso è di considerare questi aspetti con particolare riferimento al linguaggio di programmazione Java.
Conoscenze.
Le conoscenze acquisite sono sopratutto degli "how-to": sono elencate tra le "capacità".
Capacità. Al termine del corso lo studente dovrebbe essere
- in grado di utilizzare le API Java per la programmazione a livello socket
- capace di verificare il funzionamento di applicazioni di rete e configurazioni ispezionando i pacchetti scambiati
- in grado di progettare applicazioni multithreaded
- portato a cercare l'astrazione più adatta per il proprio scopo
- in grado di configurare di una semplice rete locale basata su Ethernet
Descrizione
Il modulo si sviluppa sul secondo semestre, e intende presentare aspetti pratici correlati a quelli teorici presentati durante il modulo presentato nel primo semestre. Il modulo si focalizza sulla acquisizione degli strumenti di programmazione per la redazione di programmi che interagiscono tramite Internet, con riferimento alle modalità di programmazione concorrente. Vengono anche considerati aspetti a livello network, finalizzati a interpretare i pacchetti generati dalle applicazioni e a comprendere la struttura di una LAN.
English Description
It is a "hands-on" course, designed to give a practical grasp to the concepts learned during the module in the first semester, and to develop programming skills in the domain of Internet applications, with special emphasis on threading techniques. Network level aspects are considered when they help debugging networked applications, and to understand basic LAN concepts.
Programma
- Richiami di Java (4 ore)
- Uso del sistema di sviluppo Eclipse
- Tecniche per la redazione di programmazione in Java
- Multithreaded programming in Java (14 ore)
- Attivazione di thread. La classe Runnable.
- Pool di threads: Politiche per la Gestione dei Pool
- Thread che restituiscono risultati: la classe Callable
- Stati di un thread, metodi Join, Interrupt
- Metodi Synchronized, sezioni critiche, wait(), notify(), notifyall()
- Semaphore
- Attività pratica su una rete virtuale (6 ore)
- Presentazione della rete virtuale per il laboratorio
- Configurazione della rete
- Tecniche di debugging per la programmazione di rete
- TCP Sockets in Java (8 ore)
- Indirizzi IP
- Le classi Socket e ServerSocket
- Stream: concetti generali
- Serializzazione e invio di dati strutturati
- Implementazione di socket TCP
- Stati di un Socket
- Demultiplexing
- Proprietà di Socket TCP
- UDP Sockets in Java (6 ore)
- Le classi DatagramSocket e DatagramPacket
- Generazione di pacchetti UDP: Le classi ByteArrayInputStream, ByteArrayOutputStream
- Remote Method Invocation in Java (6 ore)
- Creazione di Registry
- Gerarchie di Registry
- Esportazione di oggetti remoti
- RMI Callbacks
- Presentazione del progetto finale (2 ore)
Ore lezione: | 24 | | Ore laboratorio: | 24 | | |