mag 29 2009

Modello ISO/OSI, Internet Protocol Suite, IPv4 e IPv6

Categoria: Retialessandro @ 22:07

Cosa è il modello ISO/OSI?

Una rete di calcolatori è definita come un insieme di calcolatori interconnessi tra loro e autonomi, tutti allo stesso grado di importanza.
Il modello ISO/OSI ci permette di descrivere tali calcolatori (i nostri computer) come un insieme di 7 livelli sovrapposti. Questa astrazione è utile poichè ci permette di scomporre il difficile problema della comunicazione tra calcolatori in più sotto problemi, ognuno risolto da un livello osi differente. Questo principio è molto usato anche in programmazione sotto il nome di Divide et Impera.

Lo strato 1 “fisico” si occupa della cruda trasmissione di bit su un canale fisico (il cavo ethernet che arriva all’HAG nel nostro caso), lo strato 2 “Datalink” ci permette di dividere il flusso dei nostri bit trasmessi in trame e di controllare eventuali errori di trasmissione svolti dallo strato 1, lo strato 3 “Network” ci permette di poter scegliere tra servizi con connessione o connectionless, si occupa del routing e di suddividere le informazioni in pacchetti, lo strato 4 “Transport” divide le informazioni in frammenti, ripropone servizi connection oriented o connectionless affidabili o non affidabili e rieffettua un controllo di errore, lo strato 5 “Session” che permette di gestire le connessioni create a strato sottostante, lo strato 6 “Presentation” che gestisce il formato delle informazioni processate e lo strato 7 “Application” con le applicazioni utente.

Il modello ISO/OSI definisce solo i compiti di ogni strato, ovvero le interfacce, ovvero i comandi o primitive (o servizi) che questi dovrebbero offrire a strato superiore ma non indica esattamente QUALI protocolli e quali implementazioni utilizzare. Questo per mantenere la massima compatibilità ad ogni cambiamento possibile. Ogni strato dal quarto livello in su del calcolatore A dialoga con lo strato corrispondente del calcolatore B attraverso l’interfaccia (ovvero l’insieme dei servizi) fornita dallo strato sottostante. I primi 3 strati invece dialogano con i rispettivi strati di una serie di nodi appartenenti al percorso che porterà a B.

Modello ISO/OSI

Questo modello ha una valenza teorica fondamentale, ma nella pratica lo standard che si è diffuso differisce in alcuni punti dal modello  e mi riferisco all’Internet Protocol Suite (IPS).

L’IPS è basato su TCP/IP ed è in insieme di protocolli che vengono usati dai nostri calcolatori tutti i giorni. Similmente al modello ISO/OSI rappresenta la macchina come un insieme di livelli sovrapposti, ma solo 4 questa volta.

  • - Il livello Host-to-network, che non viene definito esattamente proprio per permettere di far lavorare gli strati superiori in maniera indipendente dal tipo di connessione fisica usata e si occupa della trasmissione e della correzione di errori.
  • - il livello Internet che si occupa del routing, utilizza protocollo IP e associa un indirizzo IP alla sua interfaccia e offre servizi solo connectionless (diversamente dal Network del modello OSI)
  • - il livello Transport che si basa su TCP (connection oriented e affidabile) e su UDP (connectionless e non affidabile) e interfacce identificate da socket
  • - il livello Application in cui vengono definiti una serie di protocolli a livello utente come ad esempio l’HTTP o l’SMTP che a loro volta eseguiranno i loro compiti basandosi su TCP o UDP che a loro volta si baseranno su IP.


Questo modello non è aperto, HTTP funziona solo su TCP che funziona solo tramite IP. Il socket del TCP è la coppia indirizzoip:porta , e questo sottolinea quanto TCP e IP siano vincolati. IP dunque non può essere sostituito, poichè richiederebbe la sostituzione del TCP e questo viola l’indipendenza tra gli strati e la suddivisione elencata prima. Ma nonostante questa incorrettezza formale, l’IPS è la suite di protocolli più usata oggi come ben sapete. Prima di andare avanti definiamo bene cosa è un protocollo, ovvero un insieme di operazioni da eseguire in un determinato ordine per comunicare con un’entità posta sul nostro stesso livello. Ovviamente quindi il protocollo HTTP consisterà in una serie di manipolazioni dati, di richieste di servizio, di primitive che lo porteranno a richiedere ad esempio (tramite l’interfaccia del TCP) una pagina web ad una entità che appartiene al suo stesso livello (ovvero questo accade tra client http come un browser e un server http come HFS). Un browser http come mozilla firefox, è un’applicazione che grazie al protocollo HTTP ottiene dal server HTTP la suddetta pagina da visualizzare poi nella finestra in questione. Ora un servizio connection oriented è un servizio di trasmissione basato sul concetto di controllare (prima di trasmettere) che il nostro interlocutore esista e sia pronto a dialogare. Normalmente quindi le due entità di pari livello (chiamate peers) si scambiano pochi messaggi per instaurare una connessione TCP per poi iniziare la trasmissione vera e propria. Un servizio connectionless come UDP non fa niente di tutto questo, trasmette direttamente e non si cura di nulla. Oltretutto TCP è affidabile, ritrasmettendo automaticamente i frammenti persi , mentre UDP non lo è. UDP è adatto ad esempio a streaming audio/video, in cui non ci interessa veramente ricevere tutti i frammenti, quanto invece avere una buona trasparenza temporale, in modo da sentire/vedere un flusso continuo e costante di informazioni (mentre la singola perdita di frammento non comporterebbe nulla, sarebbe impercettibile all’occhio o orecchio umano, e anche se lo fosse sarebbe una distorsione di bassa entità) mentre il TCP perderebbe tempo a ritrasmettere i frammenti persi. Per gli utilizzatori di Hamachi bisogna precisare che è vero che questo utilizza UDP, ma l’affidabilità e il connection oriented vengono garantiti ad un livello superiore “virtuale” (in pratica ci pensa il programma stesso ad assicurarsi che arrivi tutto ed ad instaurare una connessione ad un livello virtuale).

La versione del protocollo IP attualmente utilizzato è la 4 ed è caratterizzata da questo formato dei pacchetti:

Pacchetto ipv4

Il problema è che avendo solo 32 bit di campo destinazione e sorgente possiamo avere solo (2 alla 32) – 1 indirizzi ip diversi i quali, per un motivo o per un altro, oggi sono in esaurimento (esaurimento in fase terminale fra l’altro).

Pacchetto ipv6

Il protocollo IP versione 6 invece presenta 128 bit di indirizzamento arrivando ad avere svariati miliardi di ip per metro quadro di superficie terrestre. Oltretutto risparmia eliminando il checksum dell’header (controllo d’errore) dell’IPv4 basandosi sul fatto che viene già fatto sia dallo strato superiore che inferiore. Il pacchetto IPv6 presenta anche il campo flowlabel (usato per avere a livello Internet delle pseudo connessioni). Per poter utilizzare tale protocollo dovremmo però cambiare anche il TCP in TCPv6, e lo stesso dicasi per UDPv6 e anche molti protocolli di strato application dovrebbero (purtroppo) essere modificati. é una trasformazione lenta e dolorosa che costa molto e nessuno vuole fare benchè ogni giorno sempre più inevitabile. In svariate parti del mondo esistono già provider che offrono connettività alla rete ipv6.

La rete IPv6 dunque altro non è che una rete di calcolatori che usa una suite di protocolli basati su IPv6, ed è una vera e propria seconda internet. Ovviamente un calcolatore può appartenere sia alla rete IPv4 che alla rete ipv6 ed è su questa lenta trasformazione e su uno stato intermedio “ibrido” che si deve basare la migrazione a IPv6.
Come vedremo questo è ottenibile tramite servizi di tipo tunnel broker che permettono di poter inoltrare delle richieste sulla rete ipv6 anche se il proprio provider non supporta tale tipo di connettività. Questo argomento verrà trattato nella prossima guida. Esempi di tunnel broker sono http://www.sixxs.net e http://www.go6.net

Per qualsiasi richiesta di informazioni, se volete comunicarmi che qualche parte della guida non sia chiara, potete contattarmi tramite commento, mail, o in chat…
…Ciao!

Tags:

Un Commento a “Modello ISO/OSI, Internet Protocol Suite, IPv4 e IPv6”

  1. ivan says:

    Molto interessante!

Scrivi un commento