04. Livello Application

Livello di applicazione (Application)

Corrisponde ai livelli 5,6 e 7 della pila OSI.

Questo livello definisce, per specifici servizi operanti sulla rete, quali sono i paradigmi di comunicazione e i protocolli che le applicazioni devono utilizzare.

Ad esempio per implementare il servizio di posta elettronica in modo che sia interoperabile sulla rete, un'applicazione deve utilizzare il protocollo SMTP.

I pacchetti dei protocolli del livello applicativo sono detti genericamente messaggi.

I protocolli specificati da IETF per questo livello sono numerosi ed includono:

    • DNS

    • DHCP

    • FTP

    • HTTP

    • HTTPS

    • IMAP

    • POP3

    • SMTP

    • SNMP

    • NTP

Nota:

Il termine paradigma di comunicazione si riferisce al modello utilizzato da due entità che interagiscono. Da un punto di vista concettuale i due modelli principali sono: client-server e peer to peer.

    • Client-server: la metafora che si utilizza per illustrare questo modello è l'ufficio postale dove una persona (client) si reca per richiedere un servizio allo sportello (server).

    • Peer to peer: un esempio per questo modello è offerto dal modo di interagire di due persone che comunicano telefonicamente dove la comunicazione avviene tra pari e non è possibile individuare ruoli specifici.

I protocolli di questo livello sono implementati a partire dai servizi offerti dal livello di trasporto, con l'ausilio delle interfacce programmative di TCP e di UDP.

Molto spesso i protocolli applicativi sono implementati in modo asimmetrico secondo il paradigma client/server ed è usuale riferirsi con i termini client e server alle rispettive applicazioni che implementano il protocollo.

Ad esempio, il protocollo HTTP, utilizzato per la navigazione su Internet, ha un client che coincide con il browser (ad esempio Chrome) e un server che risiede sugli host e ospita i siti web (ad esempio IIS o Apache).

Le porte associate in modo standard ai protocolli applicativi sono definite nel file services disponibile sui sistemi Windows nella cartella

C:\Windows\System32\drivers\etc

DHCP

DHCP (Dynamic Host Configuration Protocol) permette ad un computer che si connette su una LAN di ottenere in modo dinamico la configurazione di rete, acquisendo automaticamente l'indirizzo IP, il gateway di default, la subnet mask e il DNS.

Il protocollo prevede che vi sia un unico server DHCP sulla LAN.

Un host che ha bisogno di ottenere un indirizzo IP compatibile con la LAN su cui è connesso, invia in broadcast un messaggio di richiesta tramite UDP (quando effettua la richiesta come indirizzo del mittente specifica 0.0.0.0, che ha il significato di un "generico host sulla rete", e come indirizzo di broadcast 255.255.255.255).

La risposta giunge dal server DHCP ancora in broadcast via UDP e porta con se le informazioni richieste.

Nelle reti domestiche il servizio DHCP è solitamente allocato sul router, è chiaro, tuttavia, che questo servizio non partecipa alla funzione di routing.

Il parametro lease time che appare in figura indica il periodo di validità di un indirizzo IP rilasciato dal server DHCP. Quando questo periodo scade, se l'host è ancora connesso alla rete, deve richiedere una estensione del periodo. Se invece l'host non è più connesso, l'indirizzo sarà considerato libero dal server DHCP e potrà essere assegnato ad un nuovo host.

Il protocollo DHCP è anche utilizzato dal router quando si connette alla WAN (Internet) tramite il protocollo PPP: in questo caso è il provider a inviare al router la configurazione da impostare sull'interfaccia di rete.

DNS

Un utente della rete può richiedere la registrazione di un nome di dominio, che ha una forma del tipo mionome.it.

L’organizzazione responsabile dell'assegnazione e gestione di domini e della relativa infrastruttura tecnica, sotto una determinata estensione (.it, .eu, .com, ecc.) è il Registro (o Registry). Le regole della rete sono fissate da un'organizzazione internazionale, ICANN (Internet Corporation for Assigned Names and Numbers) che ha anche il compito di incaricare alcuni soggetti a svolgere la funzione di Registro (tecnicamente si dice che il Registro è "delegato" da ICANN) per la gestione delle varie estensioni (.it, .fr, .com, ect). Nel 1987, ICANN ha incaricato il Cnr (Consiglio Nazionale delle Ricerche) di gestire i domini Internet a targa .it. E’ nato cosi il Registro .it, che ha sede all’Istituto di Informatica e Telematica del Cnr di Pisa.

L'utente titolare del dominio può avvalersi di un ulteriore servizio, il servizio di gestione DNS (Domain Name System), per accoppiare un indirizzo IP pubblico al nome di dominio registrato, in modo analogo a come si accoppia un numero telefonico ad una voce della rubrica telefonica.

In questo modo, per indirizzare l'host, invece di utilizzare l'indirizzo IP sarà possibile avvalersi del nome di dominio accoppiato all'indirizzo.

Un esempio molto comune di applicazione che fa uso dei nomi di dominio è il web browser: l'applicazione, quando rileva che la navigazione è diretta verso un host identificato tramite il proprio nome di dominio, si avvale dei servizi offerti dal DNS per ottenere l'indirizzo IP dell'host e indirizzare correttamente la navigazione.

Il protocollo DNS è implementato tramite applicazioni distribuite organizzate in modo gerarchico.

Sui computer Windows, quando si definisce una interfaccia di rete, è richiesto di specificare anche l'indirizzo del server DNS. Questo servizio è reso disponibile dall'internet provider ma è anche possibile avvalersi di servizi pubblici, come quello offerto da Google agli indirizzi 8.8.8.8 e 4.4.4.4.

Avvalersi di un DNS affidabile è di fondamentale importanza per evitare attacchi informatici molto semplici da implementare (DNS spoofing e sue varianti).

Un meccanismo che si sovrappone al DNS è quello che prevede l'uso del file hosts nel quale accoppiare manualmente l'indirizzo IP dell'host al nome di dominio.

Su computer Windows il file hosts è presente nella cartella

C:\Windows\System32\drivers\etc

Questo meccanismo ha la priorità rispetto alla risoluzione fatta tramite DNS.

E' possibile visualizzare l'elenco dei nomi già risolti dal proprio host Windows tramite il comando

ipconfig /displaydns

Per rimuovere tale elenco (che, in ogni caso, si azzera ad ogni ripartenza del computer) si usa il comando

ipconfig /flushdns

Un comando che consente di controllare il comportamento di un server DNS è

nslookup nome-di-dominio

NTP

NTP (Network Time Protocol) è un protocollo che permette di sincronizzare gli orologi dei computer all'interno di una rete con tempi di latenza variabili e imprevedibili.

In una rete, il tempo di latenza è definito come il tempo che intercorre tra l'invio di una richiesta e la ricezione della risposta.

NTP è un protocollo client-server basato su UDP e prevede che il server sia in ascolto sulla porta 123.

Il client, scambiando più pacchetti con il server, stima quale sia il tempo di latenza in modo da poter correggere l'orario di riferimento fornito dal server.

I server NTP sono organizzati in una struttura gerarchica nella quale il livello superiore è sincronizzato con una fonte temporale esterna, detta masterclock, quale può essere un orologio atomico, il GPS o un orologio radiocontrollato.

In un computer Windows la sincronizzazione degli orologi si basa su questo protocollo.

HTTP

Questo protocollo si basa su TCP e prevede che il server sia in ascolto sul port 80.

Il client (come ad esempio Chrome o Mozilla) è denominato web browser e il server (come ad esempio IIS o Apache) web server.

Lo schema del protocollo è molto semplice e prevede che il client sottoponga delle richieste espresse in modalità testo e che il server risponda prelevando le risorse richieste da un sito web.

Le richieste del client vengono fatte tramite un indirizzamento delle risorse (tipicamente file) denominato URL (Uniform Resource Locator).

Un URL è una stringa strutturata che identifica univocamente una risorsa sulla rete TCP/IP, specificando anche il modo per raggiungerla. Un URL è così strutturato:

protocollo://<username:password@>nomehost<:porta></percorso><?querystring><#fragment identifier>

La sola parte in blu è obbligatoria.

Il nomehost può essere espresso sotto forma di indirizzo IP o di nome di dominio da risolvere con il DNS.

Il protocollo, detto anche schema dell'URL, indica il nome del protocollo di livello applicativo con cui prelevare quella risorsa (ad esempio http, https, ftp ecc.).

Il protocollo HTTP prevede che la connessione TCP sia chiusa subito dopo aver ricevuto la risposta dal server. Per questo motivo il protocollo HTTP è detto stateless (senza stato).