PDU: Protocol Data Unit, cioè i messaggi, i segmenti, i datagrammi, i frame e infine i bit.
Invio dall’host sorgente
Livello applicazione
L’applicazione (ad esempio il browser) in esecuzione nel livello applicazione:
- Genera i dati da trasmettere.
- Fa la risoluzione DNS (operando tra i livelli di applicazione e di trasporto):
- Se l’URL non è già risolto in un indirizzo IP (non è in una cache), richiede al client DNS (integrato nel sistema operativo) la traduzione da URL a indirizzo IP (che si riferisce al livello di rete della macchina su cui è hostato il contenuto puntato dall’URL).
- Il client DNS invia una richiesta DNS incapsulata in un segmento UDP al server DNS risponde con l’indirizzo IP corrispondente all’URL richiesto.
- Il server DNS restituisce l’IP al livello applicazione.
- Fa l’incapsulamento: aggiunge un header applicazione (HTTP, SMTP, FTP o DNS) per indicare al livello inferiore di trasporto il protocollo da cui proviene la PDU, formando un messaggio. N.B.: L’indirizzo IP non viene aggiunto né nel messaggio né nel datagramma, ma è necessario per l’header al livello di rete, quindi viene passato come metadato (parametro aggiuntivo) tra i livelli.
- Inoltra il messaggio al livello di trasporto con il protocollo adeguato.
Livello di trasporto
- Fa il multiplexing: riceve in parallelo messaggi provenienti da porte diverse usate per protocolli diversi, ad esempio la 80 per HTTP e la 25 per SMTP. Dalle PDU ricevute estrapola:
- il numero di porta sorgente
- il numero di porta destinazione
- l’Indirizzo IP di destinazione
- Fa l’incapsulamento: aggiunge un header di trasporto (TCP o UDP) con:
- il numero di porta sorgente,
- il numero di porta destinazione,
- la checksum (per UDP) o flag/sequenza (per TCP), formando un segmento. N.B.: Il nome del protocollo è implicito dal tipo di header, non serve un campo apposito.
- Inoltra il segmento al livello di rete con il protocollo adeguato.
Livello di rete
todo inserire il cambiamento del time to leave e checksum
- Fa la risoluzione ARP (operando tra i livelli di rete e di collegamento):
- Controlla la tabella ARP per trovare l’indirizzo MAC associato al prossimo hop del cammino verso l’IP di destinazione.
- Se l’IP non è nella tabella, invia tramite il client ARP una richiesta ARP broadcast sulla rete locale, i cui dispositivi fungono da server ARP: il dispositivo con quell’Indirizzo IP risponde con il proprio indirizzo MAC.
- Il client ARP aggiorna la tabella ARP e ottiene il MAC di destinazione.
- Prende l’IP sorgente configurato sulla scheda di rete dell’host.
- Fa il multiplexing: riceve più flussi di dati da diversi indirizzi IP sorgente da inoltrare a diversi IP destinazione.
- Fa l’incapsulamento: aggiunge un header di rete (IPv4, IPv6, ARP) con:
- l’indirizzo sorgente,
- l’indirizzo destinazione,
- il nome del protocollo per indicare al livello inferiore di collegamento il protocollo da cui proviene la PDU, formando un datagramma. N.B.: L’indirizzo MAC non viene aggiunto al datagramma ma è necessario per l’header al livello di collegamento, quindi gli viene passato come metadato (parametro aggiuntivo).
- Inoltra il datagramma al livello di collegamento con il protocollo adeguato.
Livello di collegamento
- Prende il MAC sorgente configurato sulla scheda di rete dell’host.
- Fa il multiplexing: riceve più frame provenienti da diversi protocolli di rete.
- Fa l’incapsulamento: aggiunge un header di collegamento con:
- indirizzo MAC del prossimo nodo,
- indirizzo MAC sorgente,
- nome del protocollo (ad esempio Ethernet) per indicare al livello fisico il protocollo da cui proviene la PDU, formando un frame.
- Inoltra il frame al livello fisico con il protocollo appropriato.
Livello fisico
- fa il multiplexing: gestisce l’arrivo di frame diversi usando l’hardware, ad esempio con uno switch (ciò non è parte del modello TCP/IP, ma dipende dai produttori dell’hardware)
- fa l’incapsulamento (tecnicamente non è un incapsulamento, ma una codifica): converte il frame in bit per la trasmissione sul mezzo fisico.
Ricezione dall’host destinazione
L’host destinazione:
- Riceve i bit al livello fisico e li inoltra come PDU al livello di collegamento.
- Il livello di collegamento:
- trova un header collegamento, riconoscendo il payload come frame;
- fa il demultiplexing: controlla il suo campo “Ethertype” per identificare il protocollo di rete da usare per l’inoltro della PDU al livello superiore (IPv4, IPv6, ARP);
- fa il decapsulamento: rimuove l’header;
- inoltra il payload al livello di rete con il protocollo appropriato.
- Il livello di rete:
- trova un header rete, riconoscendo il payload come datagramma;
- fa il demultiplexing: controlla il suo campo “Protocol” per identificare il protocollo di trasporto da usare per l’inoltro della PDU al livello superiore (TCP, UDP, ICMP);
- fa il decapsulamento: rimuove l’header;
- inoltra il payload al livello di trasporto con il protocollo appropriato.
- Il livello di trasporto:
- trova un header trasporto, riconoscendo il payload come segmento;
- fa il demultiplexing: controlla il suo campo “Porta di destinazione” per identificare il protocollo applicazione da usare per l’inoltro della PDU al livello superiore (HTTP, FTP, DNS);
- fa il decapsulamento: rimuove l’header e lo inoltra al livello di applicazione.
- Il livello di applicazione:
- trova un header applicazione, riconoscendo la PDU come messaggio;
- fa il decapsulamento: rimuove l’header;
- elabora i dati e li passa all’applicazione utente (ad esempio il browser).
Passaggio di PDU nei router
I router eseguono la ricezione e l’invio di PDU attraverso il livello fisico, il livello di collegamento e il livello di rete + ARP, non astraggono ancora più in alto.
Passaggio di PDU negli switch
Gli switch eseguono la ricezione e l’invio di PDU solo attraverso il livello fisico e il livello di collegamento, senza arrivare al livello di rete.
Passaggio di PDU negli hub
Gli hub inoltrano i bit in reti a stella ai dispositivi terminali collegati solo attraverso il livello fisico.