processo di incapsulamento e deincapsulamento

This commit is contained in:
dado 2025-04-20 14:31:28 +02:00
parent 15979f14a5
commit 3db783f83f
9 changed files with 64 additions and 1 deletions

View File

@ -57,3 +57,66 @@ Ad esempio, l'utilizzo del protocollo HTTPS implica la necessità di una trasmis
Larchitettura a strati facilita linteroperabilità tra differenti sistemi e protocolli, poiché ogni layer opera in modo indipendente. Larchitettura a strati facilita linteroperabilità tra differenti sistemi e protocolli, poiché ogni layer opera in modo indipendente.
Non tutti gli host implementano tutto lo stack protocollare. Ad esempio, un dispositivo embedded potrebbe avere solo le funzionalità base per comunicare via rete (come il livello di rete e di trasporto) senza implementare un layer applicativo complesso. Non tutti gli host implementano tutto lo stack protocollare. Ad esempio, un dispositivo embedded potrebbe avere solo le funzionalità base per comunicare via rete (come il livello di rete e di trasporto) senza implementare un layer applicativo complesso.
### Esempio pratico di incapsulamento e deincapsulamento
Vediamo un esempio pratico di incapsulamento e decapsulamento in una richiesta DNS per il caricamento di una pagina web.
Il pacchetto in uscita é composto da vari strati:
![dns-request](/asset/img/dns-request.png)
A *livello applicativo*, il client genera una richiesta DNS per risolvere l'indirizzo IP del sito web.
![dns-query](/asset/img/dns-query.png)
Il pacchetto DNS viene poi incapsulato nel *livello trasporto* (transport layer). Dopo aver generato la query DNS a livello applicativo, il payload viene incapsulato in un segmento UDP. Durante questo processo, viene aggiunto un header, che contiene informazioni fondamentali quali:
- la porta sorgente (determinata dal client)
- la porta di destinazione (la *well-known port 53*, utilizzata dal protocollo DNS)
![udp-header](/asset/img/udp-header.png)
Il segmento UDP così formato diventa, nel network layer, il payload del *pacchetto IP*. In questo livello, viene aggiunto l'header IP che include:
- l'indirizzo IP sorgente, ovvero quello del client che ha inoltrato la richiesta
- l'indirizzo IP di destinazione, corrispondente al server DNS
- altre informazioni di gestione come la versione del protocollo (IPv4 o IPv6), la lunghezza totale del pacchetto, il TTL (Time To Live), ecc.
![network-header](/asset/img/network-header.png)
Al livello 2, il data link layer, avviene l'indirizzamento tramite MAC address:
- il datagramma IP (contenente il segmento UDP con la query DNS) viene incapsulato in un *frame*. Qui interviene il *protocollo ARP* (Address Resolution Protocol), che permette di mappare l'indirizzo IP del server di destinazione all'indirizzo MAC fisico del dispositivo
- il frame, ora completo di header del livello 2 che include il MAC address sorgente e quello di destinazione, viene inviato allo switch
![packet-to-switch](/asset/img/packet-to-switch.png)
- lo switch riceve un frame in input
![frame-ethernet](/asset/img/frame-ethernet.png)
- lo switch, grazie alla sua MAC address table, sa quale porta utilizzare per inviare il frame al dispositivo corretto (in questo caso, il DNS server). Le informazioni vengono quindi trasferite tramite il cavo
![deincapsulamento-switch](/asset/img/deincapsulamento-switch.png)
Lo switch, per poter svolgere il proprio compito, deve analizzare le informazioni fino al livello 2, in particolare il MAC address di destinazione, per poter effettuare l'instradamento corretto.
*Analisi del frame*:
- Lo switch riceve il frame e ne esamina l'header per recuperare il MAC address di destinazione. A questo punto, il frame viene *deincapsulato* parzialmente: lo switch estrae l'informazione necessaria dal frame per capire su quale porta inoltrare il pacchetto.
*Instradamento del frame*:
- Se il MAC address di destinazione è già presente nella MAC address table dello switch e associato a una porta, il frame viene *reincapsulato* e inviato attraverso il cavo (porta) corrispondente, garantendo così la consegna al dispositivo di destinazione
*Ricezione dal server DNS*:
- Il server DNS riceve il pacchetto e procede con il completo deincapsulamento: viene rimosso l'header del livello Data Link, lasciando il pacchetto IP. A sua volta, si rimuove l'header del livello di rete e quindi quello del livello trasporto (UDP), fino a ricostruire la query DNS originale.
- Dall'informazione contenuta nella query, il server DNS elabora la richiesta e incapsula la relativa risposta:
- Nella risposta, il server DNS diventa il mittente e il client il destinatario.
- Lo stesso processo di incapsulamento viene applicato in senso inverso, in modo che il pacchetto risalga fino al client di origine.
![dns-response](/asset/img/dns-response.png)
Adesso il processo di incapsulamento si ripete per la generazione di una richiesta HTTP verso il sito web, di cui ora si conosce l'indirizzo IP.

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

BIN
asset/img/dns-query.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB

BIN
asset/img/dns-request.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 KiB

BIN
asset/img/dns-response.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

BIN
asset/img/udp-header.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 KiB