IL LIVELLO APPLICAZIONE
Il livello Applicazione del modello TCP/IP è il livello più vicino all’utente e ha il compito di rendere possibile l’interazione tra i programmi (come browser, app o client di posta) e la rete. Questo livello raggruppa le funzioni degli ultimi tre livelli del modello OSI (Sessione, Presentazione e Applicazione), unificando tutte le operazioni necessarie per preparare e gestire i dati prima della trasmissione.
In questo livello vengono svolte diverse operazioni fondamentali:
Il messaggio viene convertito in un formato compatibile con il dispositivo del destinatario e, se necessario, compresso per ridurre la quantità di dati da trasmettere.
Il messaggio può essere cifrato, cioè protetto tramite tecniche di sicurezza per garantire la riservatezza delle informazioni.
Viene gestita la comunicazione tra mittente e destinatario, cioè l’apertura della connessione, il suo mantenimento attivo, l’eventuale ripristino in caso di interruzioni e la chiusura finale.
Il livello Applicazione è anche responsabile della definizione del formato delle richieste e delle risposte tra client e server. Ad esempio, quando un server invia una pagina web, deve assicurarsi che i contenuti (immagini, video, testi) siano in formati supportati dal dispositivo del client, come JPG o PNG per le immagini e MKV o MOV per i video.
Per quanto riguarda lo scambio di dati:
si parla di upload quando i dati vengono inviati dal client al server;
si parla di download quando i dati vengono trasferiti dal server al client.
I protocolli di questo livello sono fondamentali perché fanno da interfaccia tra l’utente e la rete e stabiliscono le regole con cui le applicazioni comunicano. Tra i principali protocolli del livello Applicazione troviamo HTTP (per il web), DNS (per la risoluzione dei nomi), DHCP (per la configurazione degli indirizzi), FTP (per il trasferimento di file) e SMTP (per l’invio delle email).
IL PROTOCOLLO HTTP
Il protocollo HTTP è un protocollo del livello Applicazione utilizzato per la navigazione sul web, cioè per permettere al browser di comunicare con i server e ottenere le pagine richieste. Quando navighiamo, non utilizziamo solo HTTP, ma anche altri componenti e protocolli che collaborano tra loro.
Ad esempio, digitando un URL come http://www.rizzolieducation.it/index.html, il browser interpreta le diverse parti dell’indirizzo e avvia una serie di operazioni:
riconosce che il protocollo da utilizzare è HTTP;
individua il server da contattare (www.rizzolieducation.it);
identifica la risorsa richiesta, cioè il file index.html.
A questo punto avviene il processo di comunicazione:
il browser utilizza il DNS per tradurre il nome del server nel corrispondente indirizzo IP;
il client invia una richiesta al server;
il server risponde inviando il codice HTML della pagina richiesta;
il browser decodifica e visualizza la pagina all’utente.
Il protocollo HTTP ha quindi il compito di definire il formato dei messaggi e le modalità con cui si accede alle risorse web, senza preoccuparsi del tipo di contenuto (testo, immagini, video, ecc.). Oggi, però, la versione più utilizzata è HTTPS, che è una versione sicura di HTTP e garantisce una comunicazione protetta.
IL PROTOCOLLO DNS
Il DNS (Domain Name System) è un protocollo del livello Applicazione che ha il compito di mettere in corrispondenza i nomi di dominio (facili da ricordare per l’uomo) con gli indirizzi IP (numerici e utilizzati dai dispositivi). Poiché ricordare indirizzi numerici sarebbe difficile e questi possono anche cambiare nel tempo, si utilizzano gli URL (come https://www.miur.gov.it/...), in cui la parte centrale (ad esempio www.miur.gov.it) rappresenta il nome di dominio. Quando l’utente inserisce un URL nel browser, il DNS interviene per tradurre quel nome nel corrispondente indirizzo IP: questo processo si chiama risoluzione dei nomi.
La risoluzione avviene tramite un server DNS: inizialmente il client interroga il proprio server DNS predefinito, che controlla se possiede già l’informazione. Se non la trova, contatta altri server DNS fino a ottenere la corrispondenza tra nome e indirizzo IP; una volta trovata, la risposta viene restituita al client, che può così comunicare con il server desiderato. Inoltre, il risultato viene temporaneamente memorizzato per velocizzare eventuali richieste future.
Il DNS è organizzato come un sistema gerarchico ad albero rovesciato. Al vertice si trovano i root server, che rappresentano la radice e gestiscono l’intero spazio dei nomi, delegando però le richieste ai livelli inferiori. Subito sotto si trovano i domini di primo livello (TLD), che possono essere:
nazionali (come .it, .uk, .eu);
generici (come .com, .edu, .gov).
Da questi derivano i domini di secondo livello (ad esempio google, miur, uniroma1) e infine i livelli più specifici come www. La porzione di nomi gestita da un server DNS prende il nome di zona di autorità. Per garantire efficienza e affidabilità, i root server non sono unici ma replicati (13 nel mondo), così da evitare sovraccarichi o guasti.
La risoluzione dei nomi può avvenire in due modi:
ricorsivo: i server DNS contattati si occupano direttamente di interrogare altri server fino a trovare quello autorevole che conosce la risposta, che poi torna indietro fino al client;
iterativo: ogni server, se non conosce la risposta, indica al client un altro server da contattare, e il client prosegue la ricerca fino a ottenere la soluzione.
Per migliorare le prestazioni, i server DNS utilizzano una memoria cache, in cui salvano temporaneamente le risposte già ottenute. Se una risposta proviene dalla cache e non direttamente da un server autorevole, viene detta non autorevole (unauthoritative). Tuttavia, queste informazioni non possono essere conservate indefinitamente: a ciascuna risposta è associato un valore chiamato TTL (Time To Live), che indica per quanto tempo può restare in cache prima di essere eliminata o aggiornata, evitando così l’uso di dati non più validi.