Internet, i protocolli TCP/IP e le tecnologie di Internet

Internetworking
Internetworking (connessione di reti), o più semplicemente Internet, è un mezzo di comunicazione che opera in modalità multimediale (porta insieme segnali audio, video e dati) e che interconnette milioni di computer in tutto il mondo, utilizzando un linguaggio comune. È qualcosa di simile ad una rete WAN di computers, cioè un insieme di calcolatori connessi tra loro attraverso delle LAN a loro volta interconnesse ad altre con linea dedicata o attraverso collegamenti Modem-Server in modo da avvolgere tutto il mondo. Tutte le reti sono collegate da un insieme comune di protocolli tecnici che consentono agli utenti di ciascuna rete di comunicare o di utilizzare i servizi situati su una qualsiasi delle reti componenti. L'insieme comune di protocolli corrisponde al protocollo TCP/IP, il quale non rappresenta un singolo protocollo, ma in realtà corrisponde ad una suite di protocolli che prende il nome dai due più importanti tra essi: Transmission Control Protocol (TCP) e Internet Protocol (IP).

L'obiettivo più importante raggiunto dal TCP/IP è l'interconnessioni tra reti estremamente eterogenee. Le varie reti appartenenti ad Internet possono essere infatti estremamente diverse tra di loro: per questo Internet è stata sviluppata in modo da essere indipendente dal tipo di computer e di rete locale che si vuole connettere. È possibile collegarsi con qualsiasi tipo di elaboratore, dal supercalcolatore al personal computer, ciascuno con un proprio sistema operativo diverso (MS-DOS, Unix, Linux, Windows, ecc.) e collegato con modalità differenti alla rete. Non esiste un "computer per Internet", sebbene le prestazioni ottenute dipendano dalle capacità del proprio calcolatore e dal mezzo fisico (linea, modem, ecc.) con cui avviene la comunicazione. Internet è quindi formata da diverse tipologie di reti:

La storia di Internet
Negli anni '60, di fronte al successo scientifico rappresentato dal primo Sputnik sovietico (messo in orbita il 4 ottobre 1957) gli USA da una parte lanciarono un programma spaziale che doveva portare l'uomo sulla luna, mentre dall'altra, a livello militare, predisposero un piano di difesa da un eventuale attacco atomico da parte dell'Urss, nell'ambito della cosiddetta Guerra Fredda. Fu così che il Pentagono creò ARPA (Advanced Research Projects Agency), un'agenzia per progetti scientifici a livello avanzato a scopi militari. Uno di questi progetti, presentato da Paul Baran nel 1962, mirava a creare un sistema di comunicazioni in grado di sopravvivere ad un attacco nucleare ed era basato sul sistema della trasmissione mediante commutazione di pacchetto (packet switching). Per raggiungere questo obiettivo era necessario che il sistema di comunicazione non avesse un punto centrale di controllo, colpire il quale avrebbe significato mettere fuori uso l'intero sistema, ma che avesse una struttura che garantisse le comunicazioni anche se parte dei collegamenti fossero stati distrutti. Bisognava che una comunicazione potesse seguire percorsi diversi in alternativa a quelli eventualmente distrutti. Nel 1969 Vinto Cerf creò ARPANET, collegando al nodo dell'Università di Los Angeles le tre Università americane di Santa Barbara (California), di Stanford e dell'Università dello Utah. Questo significo il passaggio dalle LAN ad una WAN fino all'attuale dimensione mondiale. ARPANET, dopo essere uscita dal controllo militare, ebbe come coordinatore la Nationa Science Foundation e prese il nome di NSFN, alla quale cominciarono a collegarsi reti regionali e locali, e successivamente internazionali (da allora prese il nome di Internet). Dal 1989 ebbe il suo maggiore sviluppo, grazie al World Wide Web progettato dallo staff del CERN di Ginevra. Ma solo nel 1993 Internet divenne davvero popolare grazie al primo browser, Mosaic. Nel 1994 venne rilasciato Netscape. Durante gli anni '90 gli utenti di Internet raddoppiarono ogni 6 mesi.

Interconnessione di reti attraverso router Router:dispositivo che è in grado di prendere decisioni di instradamento che determinano il percorso dati più efficiente fra due segmenti di una rete di computer.

Per connettere due reti WAN occorre un router il quale sarà connesso ad entrambe e sarà in grado di trasferire i dati da una rete all'altra. Si chiamano router poiché effettuano un'operazione di routing (instradamento), cioè sceglie il dispositivo intermedio (next-hop) a cui consegnare il pacchetto in modo che questo proceda verso la destinazione finale.
Il forwarding, cioè l'inoltro vero e proprio del pacchetto verso il next-hop o la destinazione finale, è l'altra operazione fondamentale che deve essere svolta da un router.

Gli indirizzi IP
L'IP address è un indirizzo univoco che identifica un host sulla rete. Gli indirizzi IP identificano i computer host della rete e sono costituiti da una sequenza di 4 byte rappresentati in forma decimale. Questo vale per l'indirizzo IPv4 (IP versione 4). Un indirizzo IP è strutturato nel seguente modo:

L'indirizzo di rete (network number) identifica la rete a cui un computer appartiene, l'indirizzo di host (host number) identifica il computer della rete: l'indirizzo IP non identifica un host in quanto tale, ma la connessione di un host alla relativa rete.
Esistono tre indirizzi IP riservati per usi specifici:

La suddivisione dell'indirizzo IP in quattro byte serve per classificare gli indirizzi IP e le reti associate ad essi. Sono utilizzati tre formati principali, detti classi: classe A, classe B e classe C. Inoltre ci sono altre due classi: classe D (che non ha indirizzi IP disponibili) e classe E (per usi futuri e scopi sperimentali). La classe di appartenenza è specificata dai primi bit dell'indirizzo.

Classe A:
utilizzata per reti di grandi dimensioni, per esempio nelle grandi imprese internazionali.
bit 0 = 0
Rete (7 bit) = 128 Network
Indirizzo locale (24 bit) = 16 Mega Host
Indirizzi IP in decimale: da 1.0.0.0 a 126.255.255.255

Classe B:
utilizzata per reti di medie dimensioni, per esempio la rete di un'università oppure per la rete di un'azienda con molti uffici.
bit 0 = 1 bit 1 = 0
Rete (14 bit) = 16 K Network
Indirizzo locale (16 bit) = 64 K Host
Indirizzi IP in decimale: 128.0.0.0 a 191.255.255.255

Classe C:
utilizzata per reti di piccole e medie aziende.
bit 0 = 1 bit 1 = 1 bit 2 = 0
Rete (21 bit) = 2 Mega Network
Indirizzo locale (8 bit) = 256 Host
Indirizzi IP in decimale: 192.0.0.0 a 223.255.255.255

Classe D:
per multicast address, cioè indirizzamenti di un sottoinsieme degli host di una rete.
bit 0 = 1 bit 1 = 1 bit 2 = 1 bit 3 = 0
Gli indirizzi di classe D non sono indirizzi IP disponibili: potrebbero essere utilizzati da un router per fare un multicast su una sottorete.

Classe E:
riservata per scopi sperimentali e per usi futuri.
bit 0 = 1 bit 1 = 1 bit 2 = 1 bit 3 = 1 bit 4 = 0

Le sottoreti
La tecnica di instradamento, basata sulla classificazione degli indirizzi per formato, non è funzionale, perchè molti indirizzi non saranno mai utilizzati. È possibile modificare la struttura dell'indirizzamento utilizzando le sottoreti (subnet). Il campo definito con indirizzo locale può essere suddiviso arbitrariamente in sottoreti e host.

L'operazione di suddivisione di una rete in sottoreti si chiama segmentazione e può rendersi necessaria per vari motivi: per migliorare l'organizzazione della rete, per disporre di accessi diversi ai mezzi fisici di tipo Ethernet o FDDI, ma anche accesso a reti WAN.
Esiste poi il problema della gestione del traffico della rete: in una rete di tipo Ethernet, tutti gli host del segmento fisico vedono, e analizzano, tutti i pacchetti trasmessi da tutti gli altri host di quel segmento. L'uso dei router consente di segmentare le reti per consentire un migliore rendimento generale, perché le reti IP segmentate minimizzano la quantità di traffico che ogni segmento deve gestire.
La creazione delle sottoreti (subnetting) è ottenuta suddividendo la parte host dell'indirizzo IP in due parti: la parte di subnetting e la parte di host.

IP address

Per decidere in modo più veloce la destinazione dei pacchetti verso i computer della rete, si usano le subnet mask (maschera di sottorete), per indicare ai router della rete quali numeri dell'indirizzo IP devono essere controllati e quali no.
La maschera di sottorete è un indirizzo di 32 bit che consente di dividere la parte host da quella di rete. La subnet mask è fondamentale per determinare se un indirizzo IP fa parte della rete locale o va ricercato in una rete remota. In presenza di reti locali non segmentate si utilizza la maschera di default.
La maschera di sottorete è essenzialmente uno schema che specifica quali bit sono da controllare e quali no: la presenza di un bit 1 indica che la cifra è da controllare, il bit 0 indica che non serve controllare. In questo modo il router non deve controllare tutta la sequenza di 32 bit.
Applicando una maschera di sottorete a un indirizzo IP si permette l'identificazione della sottorete d'appartenenza con la semplice comparazione dell'indirizzo e della maschera.
L'operazione è un AND logico tra il numero IP e la sua maschera: il risultato di questa operazione è l'individuazione della rete di appartenenza.
Lo stack TCP/IP di un host esegue, durante l'inizializzazione, un'operazione di AND fra il numero di IP e la sua maschera di sottorete. Quando un pacchetto viene inviato in rete, il suo destinatario IP viene sottoposto, anch'esso, a un AND logico con la subnet mask. Se le risultanti dei due processi sono uguali, significa che il destinatario appartiene alla rete locale: diversamente il pacchetto è inviato a un router che provvede a smistarlo in una rete remota.
L'insieme del numero di rete e del numero di sottorete forma il numero di rete esteso.

I bit 1 corrispondenti alle cifre del numero di rete esteso formano la subnet mask.
La lunghezza in bit di questo numero (lunghezza del prefisso) è uguale al numero dei bit che compongono la sequenza dei bit da controllare nella subnet mask.
Per questo motivo,ad esempio, per indicare che l'indirizzo IP
150.10.32.1
si utilizza la maschera di subnet
255.255.255.192
che si può scrivere 150.10.32.1/26
cioè occorre controllare i primi 26 bit per determinare l'indirizzo di rete esteso.
La notazione /lunghezza del prefisso è più compatta e più facile da leggere rispetto alla subnet mask.
Usando questa notazione gli indirizzi di classe A, B, C, senza suddivisione in sottoreti si possono scrivere rispettivamente con il suffisso /8, /16, /24, per indicare la lunghezza del prefisso di rete nella subnet mask.

I nomi di dominio
Ogni sistema connesso alla rete è quindi identificato da un indirizzo numerico. Per ragioni di comodità si utilizza una codifica che prevede un nome invece di un indirizzo numerico, poiché gli indirizzi numerici sono più difficili da memorizzare: si possono usare indirizzi simbolici formati da sigle o parole di poche lettere.
Gli indirizzi simbolici sono di solito individuati da sigle della forma:

computer.sottorete.rete.zona
(i caratteri sono scritti in minuscolo e senza spazi bianchi).
La prima parte indica il nome del computer. La rimanente parte (sottorete.rete.zona), detta dominio, individua l'ente, l'azienda o l'organizzazione a cui il computer è collegato.
L'ultima parte a destra è detta dominio di livello alto (o TDL, Top Level Domain) e può essere di due tipi: geografico od organizzativo. I domini geografici (country code) sono identificati da due caratteri che identificano la nazione (it = Italia, fr = Francia, uk = Regno Unito, ca = Canada, ecc.).
I TDL di tipo organizzativo sono soprattutto gestiti negli Stati Uniti e identificano categorie di enti e aziende (ad esempio com, org, edu, net, info, biz).
Questo sistema di gestione dei nomi di dominio si chiama DNS (Domain Name System): oltre a stabilire la corrispondenza tra indirizzo IP numerico e indirizzo simbolico (mappatura dell'indirizzo IP), esso usa un database di nomi simbolici distribuito sui vari server collegati a Internet in tutto il mondo.
Nel linguaggio corrente dell'informatica risolvere un nome in un indirizzo IP significa ritrovare l'indirizzo che corrisponde al nome di un computer.
Il DNS è un servizio fornito dal livello application del modello TCP/IP.

Il protocollo IP
IP è un protocollo di livello Network non connesso, quindi senza conferma, che riceve i dati dal livello Transport e li incapsula in pacchetti di dimensione massima 64 Kb e successivamente li instrada. Quando arrivano a destinazione, la pila OSI viene percorsa dal livello fisico verso i livelli più alti: nel passaggio dei dati dal livello 2 al livello 3, il protocollo IP riassembla i frame in pacchetti e li consegna al livello di trasporto nell'ordine in cui sono arrivati.

Datagramma nel protocollo IPv4

I campi che compongono la parte header del datagramma sono:

Il protocollo ICMP
Il protocollo ICMP (Internet Control Message Protocol) è un protocollo di livello Network che risulta essere poco noto.
Quando un router o un host di destinazione devono informare l'host sorgente sugli errori nella trasmissione del datagramma viene utilizzato il protocollo ICMP.
ICMP utilizza il protocollo IP per l'invio dei messaggi: infatti l'unità dati di ICMP viene incapsulata in un datagramma IP. ICMP è fatto per segnalare errori, non per garantire l'affidabilità al protocollo IP.

Struttura del pacchetto ICMP

Il campo codice può assumere diversi valori:

I protocolli ARP e RARP
Il protocollo ARP (Address Resolution Protocol) è un protocollo di livello 3 (Network) che consente di determinare l'indirizzo fisico MAC nei casi in cui risulti noto solo l'indirizzo IP.
Quando un host deve spedire un pacchetto a un destinatario di cui non conosce l'indirizzo MAC, spedisce a tutti gli host della stessa rete fisica un messaggio in cui chiede quale sia l'host con quell'indirizzo IP. Nello stesso messaggio mette anche i propri indirizzi, sia quello fisico che quello IP: usa in sostanza una tecnica di broadcasting. L'host, il cui IP è quello cercato, rimanda al richiedente il proprio indirizzo fisico, permettendo così l'associazione tra i due.
Il protocollo RARP (Reverse Address Resolution Protocol) funziona in modo analogo al protocollo ARP, ma procede nella direzione opposta: l'host richiedente spedisce un datagramma RARP in broadcast con il proprio indirizzo MAC e solo l'host che ha le tabelle di corrispondenza degli indirizzi risponde con un datagramma contenente oltre all'indirizzo MAC anche l'indirizzo IP del richiedente.

Tecniche per l'instradamento dei pacchetti
Gli host delle reti, chiamati anche end system non sono connessi direttamente tra loro, ma sono connessi attraverso nodi intermedi chiamati intermediate system (IS) e generalmente rappresentati da router che svolgono le funzioni di instradamento.
Le principali tecniche utilizzate per l'instradamento dei pacchetti sulla rete sono:

Algoritmi di routing
L'instradamento è compito dei router (intermediate system) che sono dispositivi che operano a livello 3. Il pacchetto è ricevuto dal router tramite una scheda LAN che gestisce un protocollo di livello 2. Il router verifica l'indirizzo di destinazione: se l'indirizzo corrisponde al router, inizia il processo di forwarding per stabilire su quale linea deve essere instradato il pacchetto.
Tra i parametri disponibili per scegliere quale sia il percorso migliore, gli unici universalmente riconosciuti sono il numero di hop e il costo, definito come l'inverso della velocità della linea.
Gli algoritmi di routing si differenziano secondo diverse caratteristiche, che possono anche risultare contrastanti tra loro:

Gli algoritmi di routing possono essere classificati anche come statici e dinamici: Gli algoritmi di routing possono inoltre essere a percorso singolo o multiplo a seconda che supportino uno solo o più percorsi per una stessa destinazione.

Classificazione dei protocolli di routing

I principali protocolli di routing
I protocolli di routing non devono essere confusi con i protocolli ruotabili (rotable) o ruotati: infatti i protocolli di routing determinano il cammino che i protocolli ruotati seguiranno per raggiungere la destinazione. IP è un protocollo ruotato.
I protocolli di routing abilitano i router connessi a creare una mappa degli altri router della rete e di Internet: dalle mappe vengono ricavate le tabelle di routing (routing table) che permettono l'attività di routing.
I router hanno la caratteristica di essere multiprotocollo e mantengono le tabelle per più protocolli ruotati.
Il protocollo RIP (Routing Information Protocol)
È un protocollo di routing di tipo distance vector. La sua metrica è il numero di hop (hop count) e ha un numero massimo di hop uguale a 15.
Prevede l'aggiornamento delle tabelle ogni 30 secondi. Non sempre seleziona i percorsi più rapidi, ma normalmente sceglie quello con il minor numero di hop.
Il protocollo IGRP (Interior Gateway Routing Protocol)
Si basa sull'algoritmo di tipo distance vector ed è considerato un'evoluzione del RIP.
In particolare i miglioramenti si riferiscono all'utilizzo di una metrica più articolata, alla stabilità dell'algoritmo e alla gestione di più percorsi per la stessa destinazione.
Il protocollo IGRP prevede la ritrasmissione (aggiornamento) delle tabelle ogni 90 secondi.
Oltre all'hop count, il protocollo IGRP prende in considerazione altri quattro parametri: banda, ritardo, affidabilità e carico.
Uno degli aspetti negativi del protocollo è che possono innescarsi dei loop. Per evitare questo inconveniente, quando il protocollo rileva un aumento del costo di un percorso, lo etichetta come inutilizzabile.
Altri protocolli di routing sono:

I protocolli del livello Transport
All’interno dell’architettura TCP/IP, i protocolli che si collocano al livello di trasporto sono: TCP e UDP.

TCP (Transfer Control Protocol)
Il protocollo TCP ha il compito di trasmettere in modo affidabile i dati tra due nodi della rete. TCP crea una sessione orientata alla connessione tra i due host, dando origine a un circuito virtuale.
Lo scambio di informazioni (handshaking) tra i due host è costituito dalle seguenti fasi:

L’header del pacchetto TCP contiene un numero di porta sorgente e destinazione.

Il numero di porta corrisponde alla tabella delle Well Known Port, che associa un numero tipico di porta ai protocolli più noti.
L’utilizzo del concetto di porta permette di eseguire più applicativi contemporaneamente (multiplexing).

UDP (User Datagram Protocol)
UDP è un altro protocollo del livello di trasporto che si occupa della trasmissione dei dati su una rete. A differenza del TCP si tratta di un protocollo che non necessita di connessione (connection-less), nel senso che non viene stabilita alcuna sessione di comunicazione e l’UDP si limita a inviare i pacchetti sulla rete senza richiesta di conferma dell’avvenuta ricezione.
Questo protocollo non verifica se l’host di destinazione abbia o meno ricevuto le informazioni che gli sono state inviate.
UDP è utilizzato dalle applicazioni che inviano piccole quantità di dati e che ripetono spesso l’invio nel tempo, per cui non hanno bisogno di una consegna affidabile.

I protocolli del livello Application
Telnet
Telnet è un protocollo che permette a un utente di collegarsi, tramite l’elaboratore locale, a un qualsiasi altro elaboratore remoto, connesso alla rete.
L’host connesso in Telnet è un terminale virtuale remoto.

FTP
Il protocollo FTP (File Transfer Protocol) serve per trasferire file tra due host. Con FTP client si indica l’host richiedente la sessione FTP, mentre con FTP server l’altro host a cui ci si connette.

FTP usa due connessioni: la prima, detta connessione di controllo, serve al client per inviare comandi al server e ricevere le risposta; la seconda, detta connessione dati, viene stabilita successivamente, quando inizia il trasferimento dei file.
È possibile suddividere una sessione FTP in tre fasi distinte:

La fase del trasferimento file può essere a sua volta scomposta in tre azioni:
  1. spostamento nella directory che interessa
  2. lista dei file già presenti
  3. invio o ricezione dei file.

SMTP
SMTP (Simple Mail Transfer Protocol) è l’applicativo di TCP/IP che permette di inviare posta elettronica (e-mail) agli utenti della rete.

POP3
Il POP3 (Post Office Protocol, version 3) è il protocollo di accesso alla posta con il principio della casella postale: la posta rimane in giacenza all’interno di uno spazio web riservato (mailbox), finché l’utente rimuove le e-mail giacenti ad esso indirizzate.

SNMP
SNMP (Simple Network Management Protocol) è un protocollo per la gestione degli apparati di rete, basato su UDP/IP. SNMP è stato progettato per inviare dati sullo stato della rete provenienti dagli apparati a un centro di gestione che li possa interpretare in modo opportuno. Con SNMP è anche possibile modificare alcuni parametri degli apparati di rete.

X-Windows
X-Window è un software di rete client/server che permette a un programma client di visualizzare dati grafici del display di un altro elaboratore che svolge la funzione di server grafico.

HTTP
Il protocollo http (HyperText Transfer Protocol) definisce un metodo di interazione client/server ottimizzato per lo scambio di messaggi brevi e veloci, necessari per la connessione tra client Web e server Web. Il protocollo può essere facilmente esteso per comprendere servizi di vario tipo, non solo transazioni ipertestuali.
Nel protocollo HTTP le risorse della rete sono identificate con un indirizzo simbolico, detto URL (Uniform Resource Locator). I documenti, organizzati in modo ipertestuale, sono scritti usando il linguaggio HTML (HyperText Markup Language) che utilizza tag (marcatori) interpretabili dal programma visualizzatore (browser) per formare le pagine grafiche di Internet.

SSL
La sigla SSL (Secure Socket Layer) indica un protocollo proprietario di Netscape Communication Corporation che garantisce la privacy delle comunicazioni su Internet.
Il protocollo SSL provvede alla sicurezza del collegamento, garantendo tre funzionalità fondamentali:

Lo scopo primario del SSL Protocol è fornire affidabilità e riservatezza alle comunicazioni.

Dispositivi di interconnessione delle reti

Il protocollo IPv6
Gli obiettivi dell’IPv6 (IP version 6) sono:

Oltre a questi obiettivi il protocollo del futuro dovrà avere maggiore flessibilità per una possibile evoluzione, e dovrà coesistere per anni con l’attuale sistema di indirizzamento.
Gli indirizzi IPv6 sono a 16 byte e quindi tali da garantire indirizzi senza il rischio che possano esaurirsi (si calcola che IPv6 possa fornire più di un milione di indirizzi per ogni metro quadrato di superficie del pianeta).
Gli indirizzi sono scritti con 8 gruppi di 4 cifre esadecimali, separati dal carattere due punti.
Si pensa a tecniche che permettano un’interoperabilità graduale tra IPv4 e IPv6 e che garantiscano un lungo periodo di transizione fino al completo esaurimento delle reti IPv4:

La comunicazione con Voice Over IP
La tecnologia per la comunicazione vocale e telefonica in Internet si chiama VoIP (Voice Over IP).
La differenza rispetto alla telefonia tradizionale consiste nel fatto che quest’ultima si basa sulla tecnica a commutazione di circuito, mentre VoIP funziona con la tecnica a commutazione di pacchetto.
Il ritardo dei pacchetti si manifesta quando i campionamenti vocali, generati ogni 125 microsecondi, devono essere accumulati per poter confezionare il pacchetto da trasmettere.
Di solito la dimensione di un pacchetto IP è d 570 byte: considerando il campionamento di 8 bit, si ottiene una durata di 125 microsecondi * 570 = circa 71 millisecondi.
Ci sono due fondamentali caratteristiche che determinano la qualità di una connessione telefonica su Internet:

La latenza è la somma dei vari ritardi.
La qualità della comunicazione rispecchia la fedeltà della riproduzione della voce nella telefonata.
Il ritardo disturba il segnale telefonico per effetto dell’eco, per cui, nel caso di ritardi tra l’andata e il ritorno superiori a 50 ms, è necessario l’impiego di cancellatori d’eco.
Un altro parametro che influenza negativamente la telefonata è il ritardo seriale (jitter), costituito dalla variazione casuale del tempo di interarrivo della serie di pacchetti IP, dovuto al tempo variabile di attraversamento della rete.