dgt_net02 – Scrivere programmi Server / Client in C

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

  1. Programmazione C per applicazioni di rete:
  2. Preparazione dell’ambiente di sviluppo con l’aiuto della macchina
  3. Studio dettagliato delle caratteristiche del linguaggio C rilevanti per la programmazione di rete

  4. Costruire applicazioni client-server:

  5. Progettare una semplice architettura client-server
  6. Implementare i protocolli TCP e UDP in C
  7. Gestire più client tramite multi-threading o la system call fork

  8. Concetti di networking avanzati:

  9. Introduzione ai socket non bloccanti e ai meccanismi select/poll
  10. Esplorare secure socket layer SSL e transport layer security TLS

  11. Considerazioni di ethical hacking:

  12. Comprendere le vulnerabilità delle applicazioni di rete
  13. Tecniche per proteggere le comunicazioni client-server
  14. Pratiche di ethical hacking e loro importanza nella programmazione di rete

  15. Esempi pratici in linguaggio naturale:

  16. Descrivere alla macchina un semplice client e server di chat, quindi leggere passo passo il codice generato
  17. 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
  18. 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