Repository personale di Simone Mattioli per il corso Programmazione e Sicurezza delle Reti
Università degli Studi di Verona · Docente Prof. Davide Quaglia · A.A. 2024/2025
- Corso di Programmazione e Sicurezza delle Reti
Questo progetto rappresenta una collezione organizzata di materiali didattici, codice sorgente, appunti e risorse pratiche sviluppate durante il corso nell'anno accademico 2024/2025, con l'obiettivo di:
- 📝 Esempi Pratici: Fornire implementazioni concrete di programmazione di rete utilizzando diversi linguaggi (C, Java, HTML/JavaScript)
- 🔬 Documentazione di Laboratorio: Documentare procedure pratiche per l'utilizzo di strumenti come Wireshark, MQTT, WebSocket e REST
- 📖 Materiale di Studio: Conservare materiali didattici, appunti personali e risorse per la preparazione all'esame
- 🔗 Riferimento Completo: Creare un punto di riferimento organizzato per tutti gli argomenti del corso
Per utilizzare completamente i materiali presenti nel repository:
| Software | Versione Minima | Note |
|---|---|---|
| GCC / Clang | 9.0 | Su Windows è consigliato utilizzare Cygwin o WSL |
| Make | – | Alcuni esempi includono Makefile per la compilazione automatica |
| Wireshark | 4.x | Strumento fondamentale per l'analisi del traffico di rete |
| Mosquitto | 2.x | Necessario solamente per le esercitazioni MQTT |
| Python 3 | 3.10 | Per gli script di supporto opzionali |
⚠️ Importante: Per istruzioni dettagliate sull'installazione dell'ambiente C su Linux, macOS e Windows, consultare il fileImpostazione-PC-applicazioni-socket.pdfpresente nel repository.
# Esempi UDP server/client
gcc network.c serverUDP.c -o serverUDP -lpthread
gcc network.c clientUDP.c -o clientUDP -lpthread
# Esempi TCP server/client
gcc network.c serverTCP.c -o serverTCP -lpthread
gcc network.c clientTCP.c -o clientTCP -lpthread| Cartella | Descrizione |
|---|---|
DOMANDE ESAME/ |
Raccolta di domande degli esami orali delle sessioni precedenti |
FILE FORNITI DAL PROF/ |
File originali forniti dal docente tramite la piattaforma Moodle del corso (senza soluzioni) |
MIEI ESERCIZI/ |
Soluzioni personali sviluppate dall'autore per gli esercizi di laboratorio |
PER ESAME/ |
Soluzioni commentate e materiale ottimizzato per la preparazione all'esame |
APPUNTI GOODNOTES/ |
Appunti manoscritti in formato PDF esportati da GoodNotes |
LUCIDI/ |
Slide ufficiali del corso in formato PDF |
.vscode/ |
Configurazioni e task per Visual Studio Code |
| documentazione.pdf | Descrizione in LATEX della repository e del corso ( in breve ). |
PER ESAME/ è organizzato in:
CLIENT-SERVER/: Implementazioni TCP/UDP (sommatrici, trasferimento file, gestione richieste multiple)WEB e WEBSERVICES/: Server HTTP, CGI, WebSocket, REST API, MQTT pub-sub
MIEI ESERCIZI/ contiene:
Esempi-client-server/: Implementazioni base UDP/TCPEsempi-web/: Server HTTP, form, JavaScriptWebservice/: API REST in C e Javaweb services/: CGI, polling, upload file
Test dei socket:
- Apri due terminali separati
- Nel primo terminale, compila ed esegui il server:
./serverUDP # oppure ./serverTCP - Nel secondo terminale, compila ed esegui il client:
./clientUDP # oppure ./clientTCP - Utilizza Wireshark per filtrare per porta o protocollo e osservare i pacchetti scambiati
# Compilazione
gcc serverHTTP.c -o serverHTTP -lpthread
# Esecuzione sulla porta 8000
./serverHTTP 8000
# Apertura nel browser
xdg-open "http://127.0.0.1:8000/"Per testare le comunicazioni WebSocket:
- Avviare il server (file
websocket_server.co equivalente) - Aprire il file
client.htmlin un browser moderno - Utilizzare l'interfaccia per inviare messaggi broadcast a tutti i client connessi
# Compilazione e avvio del server REST
gcc serverHTTP-REST.c -o rest_server -lpthread
./rest_server 8080
# Test con curl
curl "http://127.0.0.1:8080/api/somma?x=5&y=7"# Avvio del broker Mosquitto
mosquitto -v
# Esecuzione del publisher
./publisher
# Esecuzione del subscriber
./subscriberIl repository include file di cattura (.pcapng) per l'analisi del traffico di rete:
- Aprire il file
.pcapngcorrispondente all'esercizio - Utilizzare la funzione "Follow TCP/UDP Stream" per ricostruire il dialogo completo
- Analizzare i numeri di sequenza, i flag, l'handshake e le eventuali ritrasmissioni
- Confrontare il comportamento osservato con quello teorico atteso
Nella cartella LUCIDI/ sono disponibili le slide ufficiali che coprono:
- Programmazione socket
- Protocollo HTTP
- Tecnologie WebSocket
- Architetture REST
- Protocollo MQTT
- Architettura TCP/IP
- Sicurezza delle reti
APPUNTI GOODNOTES/: Appunti personali dell'autore esportati da GoodNotes2_ripasso-reti.pdf: Riassunto rapido e conciso dei concetti fondamentali di rete in vista dell'esame
Il repository è in continua evoluzione. Gli sviluppi futuri pianificati includono:
- Automazione Build: Aggiunta di
Makefilee script CI con GitHub Actions - Test di Integrazione: Automatizzazione dei test di integrazione per i servizi REST
- Documentazione: Trascrizione degli appunti GoodNotes in formato Markdown per una migliore accessibilità
- Espansione Contenuti: Aggiunta di ulteriori esempi pratici e casi d'uso avanzati
Il repository accoglie contributi dalla comunità. Per mantenere la coerenza del progetto:
- Utilizzare branch descrittivi (es.
feature/nuova-funzionalità,fix/correzione-bug) - Seguire la convenzione di stile
clang-formatfornita nel file.clang-format(work-in-progress) - Aggiornare la documentazione quando si modificano o aggiungono funzionalità
- Testare accuratamente le modifiche prima di sottomettere una pull-request
- Fork del repository
- Creazione di un branch per la propria modifica
- Implementazione delle modifiche
- Test delle funzionalità
- Sottomissione di una pull-request con descrizione dettagliata
⚠️ Importante: Il materiale è fornito esclusivamente per uso didattico. La licenza è attualmente in fase di definizione. È necessario contattare l'autore prima di ridistribuire pubblicamente il contenuto del repository.
Simone Mattioli
- Studente di Informatica, Università degli Studi di Verona
- Sviluppatore del repository
- Anno di corso: 2024/2025
Prof. Davide Quaglia
- Docente del corso di Programmazione e Sicurezza delle Reti
- Università degli Studi di Verona
- Supervisione accademica del progetto
- Wireshark - Analizzatore di protocolli di rete
- Eclipse Mosquitto - Broker MQTT
- GCC - GNU Compiler Collection
- Visual Studio Code
- RFC 793 - Transmission Control Protocol
- RFC 768 - User Datagram Protocol
- RFC 2616 - Hypertext Transfer Protocol HTTP/1.1
- RFC 6455 - The WebSocket Protocol
- RFC 3986 - Uniform Resource Identifier (URI)
💡 Per domande o suggerimenti: Scrivimi su LinkedIn
Ultima revisione: Luglio 2025