Andrea Beggi

Runners don’t quit. We fade, we “hit the wall”, we’re sometimes reduced to a walk. But we keep on.

Il modello a strati TCP/IP

A T T E N Z I O N E ! Questo post ha piu' di sei mesi. Le informazioni contenute potrebbero non essere aggiornate.

I dati, per transitare su di una rete, devono essere divisi in piccoli pezzi, ognuno dei quali viene inviato separatamente.
Su di una rete IP, questi pezzetti sono chiamati “pacchetti”; tutti i trasferimenti di dati avvengono sotto forma di pacchetti.
Il protocollo TCP/IP è costruito con un modello a strati, in cui le informazioni si fanno strada da un’applicazione su un host ad un’applicazione su un altro host.

Mentre le informazioni discendono attraverso gli strati di rete sull’host mittente, cambiano il proprio formato ed i dati che provengono dagli stati superiori sono incapsulati con informazioni di intestazione dallo strato immediatamente inferiore. Quando i dati raggiungono l’host destinatario, risalgono gli strati, e, a ciascun livello, vengono staccate le informazioni di intestazione dello strato precedente, in modo che i dati abbiano di nuovo lo stesso formato che avevano al momento della trasmissione dallo strato corrispondente dell’host mittente.
Le informazioni di intestazione servono per definire dove e come trattare i dati in modo che raggiungano l’applicazione desiderata sull’host destinatario.

Lo stack (pila) del protocollo TCP/IP è composto di quattro strati:

  • Livello dell’applicazione (es: http, telnet, ssh, SMTP)
  • Livello del trasporto (TCP o UDP)
  • Livello Internet (IP)
  • Livello della rete (es: ethernet, ATM, FDDI)

Il pacchetto viene costruito durante la “discesa” dei dati lungo gli strati dello stack. Ciascuno strato accetta il pacchetto (body) dal livello superiore e vi aggiunge un’intestazione (header), e passa il tutto (header+body) al layer (strato) sottostante, che a sua volta considera come dati quanto ricevuto, e vi aggiunge la propria intestazione. Pacchetto TCP
Vediamo l’esempio di come è fatto concettualmente un pacchetto TCP/IP in transito su di una rete Ethernet, e consideriamo il contenuto di alcuni campi dell’intestazione a livello dei diversi strati. Per semplicità assumiamo che il pacchetto non sia frammentato.

  • Strato della rete (Ethernet). A questo livello le informazioni basilari dell’intestazione sono:
    • Il tipo di pacchetto, in questo caso IP. Alcune possibilità sono AppleTalk, Novell, DECNET, ed altre.
    • L’indirizzo Ethernet di provenienza del pacchetto su quel particolare segmento di rete, cioè il MAC address dell’host che lo ha generato se locale, o il MAC address del router che lo ha immesso sul segmento, se remoto.
    • L’indirizzo Ethernet di destinazione, che può essere il MAC di un host locale, se la destinazione è sullo stesso segmento di rete, oppure il MAC del gateway più vicino, se la destinazione è remota. A volte la destinazione potrebbe essere un indirizzo broadcast, se il pacchetto deve essere ricevuto da tutte gli host della rete, oppure un indirizzo multicast, se il pacchetto è riservato ad un gruppo di host.

    Dato che il nostro esempio considera un pacchetto TCP/IP, il corpo dei dati è costituito da un pacchetto IP.

  • Strato Internet (IP). Alcune delle informazioni più interessanti sono:
    • Indirizzo IP di origine.
    • Indirizzo IP di destinazione.
    • Tipo di protocollo IP, in questo caso TCP. Potrebbe essere UDP, ICMP o qualche altro tipo di pacchetto.

    Il corpo dei dati è un pacchetto TCP, sempre per aderire al nostro esempio.

  • Strato del trasporto (TCP). Anche qui alcuni dei campi dell’intestazione sono:
    • Porta TCP di origine
    • Porta TCP di destinazione
    • Campo flag di stato: contiene un byte che assume diversi valori durante l’instaurarsi di una comunicazione TCP/IP a due vie.

    Il corpo dei dati rappresenta in questo caso l’informazione vera e propria che si voleva trasmettere all’host destinatario.

  • Strato dell’applicazione, riceve i dati dallo strato TCP e li inoltra all’applicazione destinata a riceverli.

Di questi quattro strati, il livello superiore (applicazione) è di competenza del software applicativo (es: telnet, PuTTy, Firefox, Thunderbird ecc. ecc.). I due livelli intermedi (trasporto, internet) sono gestiti dal sistema operativo, mentre il livello più basso (rete) è gestito dall’hardware della scheda di rete.

Riassumendo, ciascuno strato riceve i dati dal suo superiore, e li incapsula in un altro pacchetto, aggiungendo la propria intestazione e passando il tutto allo strato successivo che a sua volta fa la stessa cosa. Alla ricezione del pacchetto avviene il processo inverso, e le intestazioni vengono di volta in volta eliminate fino a riottenere i dati originali prodotti dall’host mittente.

5 Commenti

Nicola | #

Bravo. Sei in gamba e hai una dialettica capibile anche ai meno esperti. Continua così.

nonhovoglia | #

Complimenti. Chiaro e conciso. Mo incomincio a capirci qualcosa. 🙂

Maturando | #

GRAZIE PER LA RSORSA FORNITA IN QUANTO SCRITTA IN UN LINGUAGGIO TOTALMENTE COMPRENSIBILE. INFATTI LA STO USANDO PER PREPARARMI PER L’esame di maturità che avrò il 5 luglio. TI FARò SAPERE SE FUNZIONA!!!!!

Gildo Uappo | #

Ciao,

i miei complimenti per la chiarezza del materiale. In rete ne ho trovato dell’altro ma con un linguaggio più complesso. Grazie a te ho finalmente capito il discorso degli strati del TCP-IP.

Continua così.
Gildo Uappo

mirco | #

grazie ho capito tutto molto bene. Linguaggio chiaro e semplice