Archivi per la categoria ‘Basi’

Gli strati di Internet

domenica, 24 agosto 2008

Abbiamo già parlato del modello ISO/OSI e dei vantaggi della stratificazione e dell’incapsulamento. Internet non adotta il modello OSI, ma è comunque basata su un modello a strati, comunemente detto TCP/IP. Le ragioni per cui Internet usa un diverso modello di riferimento sono innazitutto storiche: Internet è nata prima che venisse formalizzato il modello OSI e sarebbe quindi più corretto dire che è l’OSI a non modellizzare adeguatamente il TCP/IP.

Dal punto di vista pratico ci sono due differenze principali tra ISO/OSI e TCP/IP. La prima è che OSI è un modello di riferimento astratto, mentre il secondo è un’architettura di rete orientata ai protocolli. E’ emblematico che il modello prenda il nome proprio dai suoi protocolli principali: Transmission Control Protocol (TCP) a livello trasporto, e Internet Protocol (IP) a livello rete o internetworking.

La seconda differenza è che Internet ha un numero minore di strati. Volendo allineare gli strati ISO/OSI con gli strati TCP/IP si nota l’accorpamento del livello fisico e data link in un unico livello (detto semplicemente link, o anche host to network), e l’assenza dei livelli sessione e presentazione. L’accorpamento dei primi due livelli è dovuta al fondamentale disinteresse del modello TCP/IP verso tutto cio’ che sta sotto al livello di rete, a cui si richiede di offrire un canale adeguato alla trasmissione di pacchetti IP senza porre vincoli all’eventuale ulteriore stratificazone dei protocolli che lo implementano. I livelli 5 e 6 sono invece assenti perchè ritenuti inessenziali.

La numerazione degli strati comunemente adottata è comunque quella del modello OSI, cosicchè i protocolli di rete sono detti “di livello 3″, quelli di trasporto “di livello 4″, quelli applicazione “di livello 7″ (piu’ raramente di livello 5) e quelli link “di livello 2″ (fatte salve le eventuali sotto-stratificazioni proprie dei protocolli adottati).

Il ruolo dei 4 livelli dello stack TCP/IP puo’ essere sommariamente descritto con riferimento alla comunicazione tra due computer (host) collegati ad una rete i cui nodi intermedi sono detti router. I due host non sono direttamente connessi, e per comunicare devono inviarsi dati lungo cammini che attraversano uno o più router. Chiamiamo A l’host che trasmette e B l’host che spedisce. La rete composta dai soli router è detta subnet.

L’applicazione che gira su A produce i dati e li invia a B lungo un canale virtuale creato dai protocolli di livello inferiore. L’applicazione che gira su B riceve i dati.

Il protocollo di trasporto che gira su A suddivide i dati in pacchetti adatti alla trasmissione in internet e li affida al livello inferiore, mentre quello che gira su B riceve i pacchetti e li riassembla.

Il protocollo di internetworking che gira su A prende ogni pacchetto di dati e decide a quale router inoltrarlo per poterlo alla fine consegnare a B. Il protocollo che gira su B riceve i pacchetti, ne verifica la correttezza e li passa allo strato di trasporto. I protocolli di internetworking che girano sui router intermedi ricevono i pacchetti, ne verificano la correttezza e decidono a quale altro router inviarli per raggiungere la destinazione. In pratica il livello internetworking ha due funzioni principali: routing (o instradamento) e verifica di integrità.

I protocolli di link si incaricano di gestire il collegamento diretto tra nodi adiacenti della rete, garantendo per quanto possibile la corretta trasmissione dei pacchetti. Come già detto il modello TCP/IP è prevalentemente focalizzato sui livelli internet e trasporto, e affida il livello link (o host to network) a qualsiasi protocollo in grado di garantire il collegamento degli host alla rete e l’inivio di pacchetti IP. Tipicamente i protocolli che realizzano lo strato link sono ulteriormente tratificati in due o più livelli: data link logico, MAC, fisico.

Riferimenti:

Astrazione e incapsulamento: la rete a strati

lunedì, 14 luglio 2008

Il modello di riferimento delle architetture di rete è il modello ISO/OSI. OSI sta per Open Systems Interconnection, ed è il modello standard, mentre ISO sta per International Ogranization for Standardization, ed è l’organizzazione che lo ha emanato. Il modello è stato formalizzato nell’83, come esito dei lavori di un comitato istituito nel 1977, ed è a tutt’oggi un riferimento prezioso, benchè ad esso non siano direttamente ispirate le reti che comunemente utilizziamo, Internet compresa.

Il maggior merito del modello ISO/OSI è quello di aver introdotto alcuni concetti fondamentali dell’architettura delle reti legati alla stratificazione dei servizi. Il modello identifica 7 strati (o livelli) che nascondono il mezzo fisico che mette in comunicazione due computer (host). Ogni livello svolge determinate funzioni e offre servizi al livello superiore, creando un canale virtuale sempre più astratto e affidabile. Il componente (hardware o software) che implementa un determinato livello comunica con il componente di livello omologo dell’altro host (detto peer) utilizzando un protocollo comune e avvalendosi del canale virtuale di livello inferiore, di cui conosce solo l’interfaccia.

Modello ISO OSI

Il modello specifica i servizi svolti da ogni livello e la loro interfaccia, ma non specifica i protocolli che i peer devono utilizzare per comunicare tra loro, nè il modo in cui i protocolli devono essere implementati sugli host.

Come funziona il modello a strati?

I dati da trasmettere sono una sequenza di bit che l’utente affida ad un’applicazione di rete (web browser, mailer, ftp, …) che implementa un protocollo di livello “applicazione” per gestire la comunicazione. Lo strato applicazione incapsula i dati in un pachetto a cui aggiunge l’indirizzo di destinazione e dei bit di controllo (specifici del protocollo di livello applicazione) che verranno inetrpretati dal suo strato omologo (peer) sul computer di destinazione. Il pacchetto cosi’ formato è passato allo strato inferiore, che lo incapsula a sua volta in un pacchetto a cui aggiunge bit di controllo propri del suo protocollo (detti header se aggiunti in testa, tail se aggiunti in coda) e destinati al suo omologo.

In pratica è come se ogni strato inserisse il messaggio in una busta via via più grande, con la finestrella trasparente per mostrare l’indirizzo, o con l’indirizzo trascritto sopra. Sulla busta srive informazioni di controllo utili alla gestione della comunicazione e indipendenti dal contenuto e la passa allo strato inferiore, che si comporta allo stesso modo. Arrivati al livello più basso la busta viene finalmente inoltrata e recapitata al destinatario specificato nell’indirizzo (eventualmente passando attarverso nodi di smistamento intermedi, router). Sul computer di destinazione la busta attraversa gli strati dal basso verso l’alto. Ogni strato legge le informazioni di controllo scritte sulla busta e si comporta di conseguenza, quindi apre la busta e consegna il contenuto (una busta più piccola) allo strato superiore. L’ultimo strato consegna i dati all’utente. Questa descrizione è semplicistica, ma per le considerazioni che seguono puo’ bastare.

Quali sono i punti di forza del modello?

1. La stratificazione dei servizi di rete (ogni livello gestisce uno specifico aspetto della comunicazione)

2. L’astrazione (ad ogni livello sono nascosti tutti i dettagli implementativi di livello inferiore, fino ad arrivare al livello più alto, “applicazione”, dove il canale è completamente astratto)

3. La standardizzazione dell’interfaccia tra i livelli (se si rispettano gli standard all’interfaccia l’implementazione di ogni livello può essere modificata in modo indipendente dagli altri)

4. L’indipendenza dai protocolli tra peer (il modello OSI è un’architettura di riferimento indipendente dai protocolli, che non sono altro che accordi tra i peer necessari per implementare i servizi di rete di un determinato strato)

5. L’incapsulamento dei dati (tutto ciò che uno strato prende in consegna dai livelli superiori è detto payload e viene gestito a scatola chiusa)

Queste caratteristiche, oltre ad essere essenziali per lo sviluppo di una rete globale e delle applicazioni che ci girano sopra, hanno molto a che fare con il principio di neutralità.

Riferimenti:

  • In rete si trova anche l’articolo del 1980 con cui Hubber Zimmermann ha presentato i risultati prodotti dal gruppo di lavoro OSI sotto la sua direzione.

La neutralità di Internet… cercando di essere neutrali

venerdì, 30 maggio 2008

Della neutralità di Internet hanno parlato in molti e alcuni lo hanno fatto molto bene. L’argomento è molto dibattuto in quanto riguarda i principi fondanti di Internet e i suoi sviluppi. Quindi molti hanno opinioni nette al riguardo e le difendono con forza. Anch’io ho le mie, ma vorrei iniziare a parlare di neutralità in modo neutrale…

E siccome di materiale ce n’è anche troppo non aggiungero’ niente, limitandomi a consigliare riferimenti minimi che considero sufficientemente sintetici e neutrali, e a riassumere alcuni punti che ritengo fondamentali per le finalità di questo blog. Tutto il resto (approfondimenti, discussioni e prese di posizione) lo lascio ai commenti e agli articoli che seguiranno.

Un buon punto di partenza è la pagina del sito di Tim Wu, il teorico del principio di neutralità della rete (Tim Wu “Network Neutrality, Broadband Discrimination”, 2003).

Un altro buon inizio è Wikipedia, alla voce “Network neutrality” nella versione inglese, che tratta l’argomento in modo equilibrato ed esauriente, offre molti approfondimenti ed introduce i termini del dibattito tra sostenitori e detrattori del principio di neutralità. Se questa voce ha un difetto, è che dice troppo e offre troppi spunti a chi cerca solo un’introduzione.

La versione italiana di Wikipedia offre al momento pagine molto più scarne, ma per questo forse più efficaci per farsi una prima idea del significato di neutralità della rete: Neutralità della rete e anche Network neutrality (in italiano malgrado il titolo).

In parole povere: la neutralita’ della rete e’ il principio in base al quale ogni utente paga il proprio provider per accedere ad Internet con una certa velocita’ di collegamento (banda) che puo’ utilizzare per comunicare con qualsiasi altro nodo della rete e per usufruire di qualsiasi servizio online, senza alcun tipo di discriminazione e senza dover ulteriormente negoziare il trasporto del traffico attraverso la rete. Lo stesso principio consente a chi offre servizi online o pubblica un sito web di rivolgersi a tutti gli utenti in rete.

Internet e’ neutrale? Il principio di neutralita’ risulta cosi’ intuitivo e naturale che chiunque navighi in Internet tende a darlo per scontato. Ma in realta’ scontato non e’. Per essere garantito ha bisogno di presupposti tecnici (la stratificazione dei protocolli), di ulteriori principi (quali la connettivita’ end-to-end), di condivisione di intenti (tra gestori e operatori) e di regolamentazione adeguata.

La neutralita’ e’ un bene o un male? Se la risposta fosse unanime non se ne discuterebbe e non ci sarebbe bisogno di regolamentazione. In realta’, come per molte cose, dipende dai punti di vista. La neutralita’ e’ stata alla base dello sviluppo di Internet, garantisce il funzionamento della maggior parte delle applicazioni di rete che utilizziamo (web in primis) e soprattutto offre i presupposti per lo sviluppo incondizionato di nuove applicazioni che possono accontentarsi di una rete che fa del suo meglio per trasportare il traffico (best effort). D’altro canto la neutralita’ non ammette discriminazioni, e quindi ostacola lo sviluppo di applicazioni con particolari esigenze di qualita’ del servizio (QoS), rallentando o impedendo la completa convergenza delle reti di comunicazione.