Titolo del modulo: dgt_net02 – Scrivere programmi Server / Client in C
Panoramica:
Questo modulo, “dgt_net02 – Scrivere programmi Server / Client in C”, è rivolto a studenti e sviluppatori che vogliono imparare i fondamenti della programmazione di rete in linguaggio C. Il modulo tratta i principi alla base di applicazioni client-server robuste: come funzionano i socket, come lo stack TCP/IP trasporta i dati tra processi e che cosa può andare storto lungo il percorso. Nella parte pratica il codice C lo scrive la macchina, non tu: specifichi in linguaggio naturale che cosa devono fare il server e il client, poi leggi, testi e metti in discussione il codice che produce.
Obiettivi del modulo:
– Comprendere le basi dei protocolli TCP/IP e come consentono la comunicazione tra computer.
– Comprendere come si implementano programmi server e client in C con i socket, abbastanza da descriverli con precisione alla macchina e da rivedere il codice che genera.
– Esplorare esempi e scenari reali in cui queste competenze vengono applicate, incluse considerazioni di ethical hacking.
– Comprendere i principi di sicurezza di rete e verificare che siano effettivamente applicati nel codice della macchina.
Argomenti principali:
1. Introduzione al networking:
– Panoramica dei concetti di networking
– Comprendere il modello e i protocolli TCP/IP
– Basi dei socket e della programmazione con i socket
- Programmazione C per applicazioni di rete:
- Preparazione dell’ambiente di sviluppo con l’aiuto della macchina
-
Studio dettagliato delle caratteristiche del linguaggio C rilevanti per la programmazione di rete
-
Costruire applicazioni client-server:
- Progettare una semplice architettura client-server
- Implementare i protocolli TCP e UDP in C
-
Gestire più client tramite multi-threading o la system call fork
-
Concetti di networking avanzati:
- Introduzione ai socket non bloccanti e ai meccanismi select/poll
-
Esplorare secure socket layer SSL e transport layer security TLS
-
Considerazioni di ethical hacking:
- Comprendere le vulnerabilità delle applicazioni di rete
- Tecniche per proteggere le comunicazioni client-server
-
Pratiche di ethical hacking e loro importanza nella programmazione di rete
-
Esempi pratici in linguaggio naturale:
- Descrivere alla macchina un semplice client e server di chat, quindi leggere passo passo il codice generato
- Scenari applicativi reali, ad es. trasferimento di file ed esecuzione remota di comandi, specificati in linguaggio semplice e verificati alla ricerca di falle di sicurezza
- Diagnosticare i problemi di rete più comuni nei programmi C guidando la macchina nel debugging
Formato del modulo:
Il modulo si svolge attraverso una combinazione di lezioni frontali, laboratori in linguaggio naturale e discussioni di gruppo. Gli studenti hanno accesso ad ambienti in cui un agente AI scrive, compila ed esegue le applicazioni client-server che descrivono; il loro compito è esprimere chiaramente i requisiti (protocollo, porta, numero di client, gestione degli errori), leggere ogni riga prodotta dalla macchina, individuare controlli mancanti o una gestione insicura dei buffer e chiedere le correzioni. Esercitazioni regolari consolidano i concetti teorici trattati in aula.
Modalità di valutazione:
– Partecipazione alle esercitazioni di laboratorio
– Esercitazioni settimanali: specificare programmi alla macchina e rivedere il codice che scrive
– Progetto di metà corso sulla progettazione di un’applicazione client-server
– Esame finale sui contenuti del modulo
Prerequisiti:
Si raccomanda una conoscenza di base del C, sufficiente a leggere il codice, e familiarità con i concetti fondamentali delle reti di computer. Un’esperienza pregressa di programmazione di sistema è utile ma non obbligatoria.
Destinatari:
Questo modulo è rivolto a studenti di informatica, sviluppatori software, professionisti IT e a chi si occupa di cybersecurity e desidera approfondire la programmazione di rete in C. È particolarmente adatto a chi è interessato all’ethical hacking e al miglioramento della sicurezza delle applicazioni di rete.
Risultati attesi:
Al termine del modulo, gli studenti saranno in grado di:
– Guidare la macchina nello sviluppo di programmi client-server in C sicuri ed efficienti, e giudicare se il risultato è corretto.
– Applicare efficacemente i principi di networking in diverse soluzioni software.
– Riconoscere potenziali vulnerabilità nei sistemi in rete, anche nel codice generato dalla macchina, e farle correggere.
– Comunicare con chiarezza concetti tecnici complessi, a persone e a macchine, e collaborare a progetti di programmazione di rete.
Il modulo unisce le conoscenze teoriche al giudizio pratico richiesto per lavorare nel networking e nella cybersecurity.
Gli studenti possono caricare i propri esercizi nel Progetto Git dell’Academy DevOps & SRE. Per questo modulo, crea una cartella con il tuo username come nome nella seguente sottocartella: https://github.com/Garanti-Del-Talento/gdt_academy
