La suite di protocolli TCP/IP
La suite di protocolli TCP/IP nasce verso la fine degli anni ’60 come progetto di ricerca finanziato dal governo americano fino a trasformarsi in quello che è diventato oggi, ovvero, il protocollo più diffuso al mondo per permettere la comunicazione tra computer. La suite è indipendente dalla piattaforma software utilizzata e, pertanto, funziona su tutti i sistemi operativi che ne implementano lo standard (Unix, Linux, OS X, Windows, Symbian, Android, iOS, etc.).
La suite di di protocolli TCP/IP può essere divisa in quattro parti chiamati livelli. Essi sono:
livello Applicativo –> Telnet, FTP, POP3, HTTP, etc.
livello Trasporto –> TCP, UDP
livello network –> IP, ICMP, IGMP
livello data-link –> Ethernet, Token Ring, FDDI
Ogni livello si occupa di un aspetto specifico della comunicazione tra due postazioni.
Livello Applicativo
Il livello Applicativo si occupa di definire gli standard dei protocolli di comunicazione delle applicazioni (programmi). Come si evince dal nome, questo livello è gestito dal programma che ha necessità di trasmettere dati. E’ a questo livello che troviamo la definizione dei protocolli FTP, HTTP, etc.. Ai dati da trasmettere, preparati nella maniera opportuna, viene aggiunta un’intestazione che li precede. L’intestazione dipende specificamente dall’applicativo che sta inviando i dati. Come esempio possiamo citare la navigazione sui siti web, essa utilizza il protocollo HTTP e, quindi, le informazioni passate al livello successivo della pila (livello Trasporto) si presenteranno in questo modo:
__________________________ ! HTTP header ! dati !
I dati vengono passati al livello Trasporto.
Livello Trasporto
Il livello Trasporto riceve i dati dal livello Applicativo e si occupa di gestire il flusso di dati tra due apparati. Per portare a termine il proprio compito si avvale dei protocolli TCP e UDP. La differenza principale tra i due è l’affidabilità della comunicazione. Il protocollo TCP, quando instaura una connessione tra due host (postazioni), si preoccupa che ogni pacchetto giunga a destinazione. Il protocollo UDP, invece, invia i pacchetti sulla rete senza preoccuparsi che essi arrivino necessariamente a destinazione, lasciando questo compito, se richiesto, al livello applicativo (in pratica se ne deve occupare il programma che trasmette i dati). Anche il livello Trasporto aggiunge un’intestazione ai dati che gli vengono forniti dal livello Applicativo. Riprendendo il nostro esempio sulla navigazione internet avremo:
____________________________________________ ! TCP header ! HTTP header ! dati !
oppure
____________________________________________ ! UDP header ! HTTP header ! dati !
Una volta transitati per questo livello i dati prendono il nome di “pacchetto TCP” o “pacchetto UDP” è vengono trasmessi al livello Network.
Livello Network
Il livello network riceve i dati dal livello Trasporto e si occupa del “viaggio” dei pacchetti sulla rete. Il routing (instradamento) dei pacchetti attraverso i router avviene a questo livello. Il protocollo utilizzato per svolgere tale compito è Internet Protocol (IP). L’IP è un protocollo non affidabile così come visto per il protocollo UDP del livello Trasporto e, pertanto, non garantisce la consegna dei pacchetti. Esso utilizza il protocollo ICMP per notificare alcuni errori occorsi ai pacchetti durante il tragitto ma dell’eventuale ripetizione del invio dei pacchetti andati persi se ne dovrà occupare un livello superiore (normalmente provvede il protocollo TCP). Così come visto per gli altri livelli anche il livello network aggiunge un’intestazione ai pacchetti. Continuando con l’esempio della navigazione internet avremo:
____________________________________________________ ! IP header ! TCP header ! HTTP header ! dati !
Una volta transitati per questo livello i pacchetti prendono il nome di IP Datagram e vengono trasmessi al livello data-link.
Livello data-link
Al livello più basso della pila TCP/IP troviamo il livello data-link che riceve i dati dal livello Network. Questo livello si occupa della comunicazione tra le schede di rete e dell’impiego ottimale delle connessioni fisiche. A questo livello troviamo la definizione dei protocolli Ethernet, Point To Point Protocol (PTPP), etc. Normalmente è implementato come driver del sistema operativo ma ci sono anche dei casi in cui è implementato nel kernel del sistema operativo. Il livello data-link, in alcune versioni, oltre ad aggiungere un’intestazione agli IPDatagram aggiunge anche delle informazioni in coda (trailer). Iltrailer, chiamato Frame Control Sequence, contiene un CRC che serve per verificare l’integrità del frame (questo è il nome che assumono i dati quando transitano per questo livello). Completando l’esempio della navigazione web e considerando l’utilizzo di una rete Ethernet avremo:
_________________________________________________________________________ ! Ehternet header ! IP header ! TCP header ! HTTP header ! dati ! FCS !
“Incapsulamento”
Lo stack TCP/IP lavora con una tecnica denominata ad “incapsulamento” o “imbustamento”, ovvero come se le informazioni da trasmettere ad ogni livello venissero inserite in una busta sigillata. Pertanto, ogni livello tratta come “dati grezzi” le informazioni ricevuto dal livello superiore non distinguendo tra i dati originari forniti dall’applicativo e gli header (intestazioni) aggiunte dai livelli che essi hanno già attraversato.