Reti - TCP IP
INTERNETWORKING
Una rete di computer è
un sistema di comunicazione per connettere elaboratori. Spesso
ogni sistema connesso è chiamato host,
la tipologia può variare da quella dei personal ai
minicomputer fino a quella dei supercomputer. Alcuni host in
una rete sono sistemi dedicati, come printer–server e
file–server, senza interazione diretta con utenti. Una rete
locale (Local Area Network: LAN)
connette computer separati da una distanza relativamente
piccola, di solito situati entro un singolo edificio,
eventualmente distanti non più di un chilometro. Le
tecnologie attualmente più diffuse per le LAN sono Ethernet e
Token Ring; Ethernet opera a 100 Mbps, milioni di bit al
secondo (10 Mbps con le vecchie schede), mentre Token Ring
dell'IBM opera a 4 o a 16 Mbps. Le tecnologie di LAN più
recenti, come la FDDI (Fiber
Distributed Data Interface: interfaccia dati distribuita
su fibre), impiega le fibre ottiche ed ha una velocità di
trasferimento dei dati di 1 Gbps. Ogni computer in una LAN ha
una propria scheda d'interfaccia che lo connette all'hardware
della rete.
L' internetwork è
una connessione di due o più reti distinte che permette ai
computer in una rete di comunicare coi computer in un'altra
rete. Lo scopo dell'internetworking è quello di nascondere i
dettagli di reti fisiche eventualmente diverse, affinché
l'internet possa funzionare come un'unità coordinata. Le reti
possono essere interconnesse in vari modi. Il termine adottato
per descrivere l'interconnessione dipende dal “livello” a
cui fa riferimento la connessione.
-
Il
ripetitore
(repeater) opera
a livello fisico (strato 1) e di solito si limita a
"copiare" segnali elettrici (incluso il rumore)
da un segmento della rete al successivo. I ripetitori sono
utilizzati spesso nell'Ethernet, ad esempio, per
connettere due segmenti di cavo per formare una singola
rete.
-
Il
bridge
opera a livello di collegamento dati (strato 2),
copiando i frame da una rete alla successiva. Spesso i
bridge contengono la logica che permette di trasferire
solo un sottoinsieme dei frame che ricevono.
-
Il
router
opera nel livello di rete (strato 3). Il termine
"router" (instradatore) indica che questa entità
non solo trasferisce le informazioni (pacchetti) da una
rete ad un'altra, ma prende anche delle decisioni sul
percorso che le informazioni devono seguire.
-
Il
gateway
è un termine generico che denota un nodo
utilizzato per interconnettere due o più reti. Talvolta
il termine "gateway" indica il software che
esegue conversioni specifiche, in livelli al di sopra di
quello di rete.
IL MODELLO OSI, PROTOCOLLI E
STRATIFICAZIONE
I computer in una rete impiegano protocolli
ben definiti per comunicare. Un protocollo è un insieme
di regole e di convenzioni tra i partecipanti alla
comunicazione. Poiché tali protocolli possono essere
complessi, essi sono progettati ed articolati in livelli, per
rendere più flessibile la loro implementazione. Il modello a
livelli, sviluppato tra il 1977 e il 1984 dall’ISO, è
denominato modello OSI ed è una guida, non una
specificazione. Esso fornisce una "struttura" in cui
possono essere sviluppati degli standard per i servizi ed i
protocolli in ciascun livello. In verità, le principali
architetture di rete commerciali (TCP/IP, XNS, SNA...) sono
state sviluppate prima del modello OSI. I livelli di queste
reti reali possono essere confrontati con quelli del modello
OSI, ma bisogna rendersi conto che nessuna rete è realizzata
esattamente come indicato dal modello OSI. Un vantaggio della
stratificazione è quello di fornire interfacce ben definite
fra i livelli, affinché un cambiamento interno ad un livello
non si ripercuota sui livelli adiacenti. Esistono protocolli
in ogni livello. Una suite
di protocolli (o
famiglia di protocolli)
è un insieme di protocolli relativi a più di un livello
che forma la architettura del software di una rete.
TCP/IP: I PROTOCOLLI DELL'INTERNET
Introduzione
Durante gli anni '70 l'agenzia per i progetti di ricerca
avanzata (Advanced
Research Projects Agency: ARPA, oggi DARPA) del ministero
della difesa statunitense (Department of Defense: DoD) finanziò
lo sviluppo dell'ARPANET; questa rete includeva installazioni
militari, università e centri di ricerca ed era utilizzata
per gestire progetti di ricerca d'informatica e militari. Nel
1984 il DoD scisse l'ARPANET in due reti: l'ARPANET per la
ricerca sperimentale e la MILNET per impieghi militari. Nei
primi anni '80 fu specificata una nuova famiglia di protocolli
come standard per l'ARPANET e le reti del DoD. Anche se il
nome preciso di questa famiglia di protocolli è "suite
di protocolli di Internet della DARPA", essa è
comunemente nota come suite di protocolli TCP/IP, o
semplicemente “TCP/IP”.
Nel 1987 la National
Science Foundation (NSF) fondò una rete che interconnette
i sei centri nazionali di supercomputer mediante linee
telefoniche private ad alta velocità in ciò che costituisce
la cosiddetta "spina dorsale" (backbone)
della NSFNET. Inoltre la NSF ha costituito un fondo per
una serie di reti regionali che si estendono in ogni stato
degli USA. Queste reti regionali sono connesse alla spina
dorsale della NSFNET, la quale è connessa anche alla Internet
della DARPA. La spina dorsale della NSFNET e le reti regionali
utilizzano tutte la suite di protocolli TCP/IP.
Ci sono vari punti degni di nota nel TCP/IP:
-
Non è specifica del produttore.
-
É stata implementata su qualsiasi tipo di
computer e sistema operativo.
-
É utilizzata sia per LAN che per WAN.
-
É usata da molti enti governativi e sedi
commerciali.
L'interconnessione di molte reti singole
ognuna dotata della suite di protocolli TCP/IP, fa apparire
ora questi collegamenti come una unica grande rete, chiamata
semplicemente Internet.
Un motivo che spiega la diffusione dell'impiego dei protocolli
TCP/IP durante gli anni '80 è stata la loro inclusione
standard nel sistema Unix BSD a partire dal 1982; questo
fatto, insieme all'uso di Unix BSD nelle workstation tecniche,
ha consentito a molte organizzazioni l’utilizzo di TCP/IP
nelle proprie LAN. Anche Windows si è adeguato a questo
standard di fatto, prevedendo TCP/IP a partire da Win95 con le
librerie “Winsock” (per le versioni precedenti si dovevano
acquistare programmi integrativi, come ad esempio Trumpet
Winsock).
Panoramica
Anche se la famiglia di protocolli è denotata come TCP/IP,
ci sono altri membri in questa famiglia, oltre al TCP ed
all'IP. La Figura 1 illustra le relazioni dei protocolli nella
suite insieme con le relative corrispondenze nel modello OSI.
TCP
Transmission
Control Protocol (protocollo di controllo della
trasmissione). È un protocollo orientato alla connessione che
fornisce un servizio di byte stream affidabile, full-duplex,
per un processo utente. La maggior parte dei programmi
applicativi impiega il TCP. Poiché TCP utilizza l'IP spesso
l'intera suite di protocolli di Internet è denotata come
famiglia di protocolli TCP/IP.
UDP
User Datagram
Protocol (protocollo di datagramma di utente). È un
protocollo senza connessione per i processi utente.
Diversamente dal TCP non c'è alcuna garanzia che i datagrammi
di UDP possano mai raggiungere la destinazione desiderata.
ICMP
Internet Control
Message Protocol (protocollo dei messaggi di controllo di
Internet). Il protocollo per gestire le informazioni di errore
e di controllo tra gateway ed host. I messaggi dell'ICMP sono
trasmessi mediante datagrammi di IP e vengono normalmente
generati ed elaborati dal software di networking del TCP/IP,
non a livello di processi utente.
IP
Internet
Protocol (protocollo di Internet). L'IP è il protocollo
che fornisce il servizio di consegna del pacchetto per TCP,
UDP ed ICMP.
ARP
Address
Resolution Protocol (protocollo di risoluzione
dell'indirizzo). Il protocollo che trasforma un indirizzo di
Internet in un indirizzo dell'hardware.
RARP
Reverse Address
Resolution Protocol (protocollo inverso di risoluzione
dell'indirizzo). Il protocollo che trasforma un indirizzo
dell'hardware in un indirizzo di Internet.
Ci sono molti altri
protocolli nella suite di Internet : ogni protocollo è
definito da un documento ufficiale (Request
For Comments: RFC) che ne costituisce la specifica formale
(si trovano all’indirizzo www.nic.it)
Schema e relazioni tra protocolli nella suite
TCP/IP
Figura 2 Suite di protocolli TCP/IP
Il livello di
rete: Ip
Il livello di IP fornisce un sistema di consegna dei
pacchetti senza connessione e “inaffidabile”. Senza
connessione perché considera ciascun datagramma
indipendentemente da tutti gli altri; qualsiasi associazione
logica fra datagrammi dev'essere fornita dai livelli
superiori. Ogni datagramma di IP contiene l’indirizzo di
provenienza e l'indirizzo di destinazione, in modo che ciascun
datagramma possa essere consegnato ed instradato
indipendentemente. IP è “inaffidabile” perché non
garantisce che i datagrammi possano essere consegnati né che
la consegna avvenga in modo corretto. L'affidabilità
dev'essere fornita dai livelli superiori. IP calcola e
verifica la checksum che riguarda la sua intestazione di 20
byte (che contiene, gli indirizzi di provenienza e di
destinazione): se viene rilevato un errore in un'intestazione,
il pacchetto viene scartato, col presupposto che un protocollo
del livello superiore ne provochi la ritrasmissione.
Indirizzi internet
Ogni suite di protocolli definisce un certo tipo d'indirizzamento
che identifica la o le reti ed ogni computer. Un indirizzo di
TCP/IP occupa 32 bit e codifica sia la rete che l’host. Ogni
indirizzo è unico. Gli indirizzi di TCP/IP nell'Internet sono
assegnati da un'autorità centrale: il "centro
informativo di rete" (Network
Information Center: NIC). Gli indirizzi possono essere di
tipi diversi in base alla sottorete che deve essere collegata
ad Internet (si parla di classi
di indirizzi) :

Figura 3 Classi di indirizzi internet
Gli indirizzi di classe A sono usati per
quelle reti che hanno molti host su una singola rete, mentre
gli indirizzi di classe C consentono di avere più reti ma
meno host per rete. Per indirizzi di rete assegnati dal NIC,
sono assegnati soltanto il tipo di indirizzo (classe A, B o C)
e l'ID della rete. L'organizzazione richiedente ha quindi la
responsabilità dell'assegnazione di singoli indirizzi di host
in quella rete. Gli indirizzi di Internet sono scritti di
solito come quattro cifre decimali, separati da punti
decimali. Ogni cifra decimale codifica un byte dell'indirizzo
di Internet di 32 bit (4 byte). Ogni intestazione (di 20 byte)
di un datagramma IP contiene l'indirizzo TCP/IP di 32 bit
dell'host di provenienza e l'indirizzo TCP/IP di 32 bit
dell'host di destinazione. Poiché un indirizzo di Internet è
composto da un ID di rete e da un ID di host, i gateway
possono estrarre facilmente il campo ID di rete da un
indirizzo di 32 bit ed instradare datagrammi di IP in base al
solo ID di rete. Questo è un concetto importante per l'instradamento,
poiché significa che un gateway ha bisogno di conoscere
soltanto l'ubicazione delle altre reti e non ha bisogno di
conoscere l'ubicazione di qualsiasi host in un'internet.
Indirizzi
di sottorete
Qualsiasi organizzazione con un indirizzo di Internet può
suddividere lo spazio di indirizzi di host disponibile in
qualunque modo desideri, allo scopo di ottenere delle
sottoreti.
Questa caratteristica aggiunge un altro livello alla gerarchia
di indirizzi dell'Internet:
Risoluzione
degli indirizzi
In una LAN che impiega TCP/IP, si hanno quindi due tipi di
indirizzi: indirizzi di Internet di 32 bit e indirizzi a
livello fisico (MAC): ad esempio in una rete Ethernet si usano
indirizzi di 48 bit, solitamente assegnati dal produttore
della piastra d'interfaccia e sono tutti unici. Si presentano
i seguenti problemi di gestione dell'indirizzo:
-
Problema
di risoluzione dell'indirizzo : determinare
l'indirizzo di Ethernet che corrisponde ad un dato host
(ARP: Address
Resolution Protoco).
-
Problema
inverso di risoluzione dell'indirizzo : come può un
nodo determinare dinamicamente il proprio indirizzo di
Internet in fase di bootstrap (RARP: Reverse
Address Resolution Protocol).
L'ARP
permette ad un host di trasmettere in broadcasting nell'Ethernet
un pacchetto speciale che chiede all'host con un indirizzo di
Internet (IP) specificato di rispondere col suo indirizzo di
Ethernet. Ogni host nell'Ethernet riceve questo pacchetto di
broadcast, ma soltanto l'host specificato dovrebbe rispondere.
Una volta che l'host richiedente ha ricevuto la risposta, esso
potrà mantenere la corrispondenza fra l'indirizzo di Internet
e l'indirizzo di Ethernet per tutti i pacchetti futuri
destinati al medesimo indirizzo di Internet.
Il
livello di trasporto: UDP e TCP
I processi di utente interagiscono con la suite di
protocolli TCP/IP trasmettendo e ricevendo dati di TCP o dati
di UDP. La tabella nella figura 4 confronta IP, UDP e TCP
rispetto ai servizi che offrono.
Figura 4 Confronto delle caratteristiche
dei protocolli: IP, UDP e TCP.
Poiché
il livello IP fornisce un servizio di consegna inaffidabile e
senza connessione per il TCP, è il modulo TCP che contiene la
logica necessaria a fornire un circuito virtuale affidabile
per un processo utente. Il TCP gestisce l'attivazione e la
terminazione di connessioni tra processi, l’ordinamento
sequenziale di dati che potrebbero essere ricevuti in un
ordine diverso da quello con cui sono stati trasmessi,
l'affidabilità end-to-end (checksum, riscontri positivi,
timeout) ed il controllo di flusso end-to-end.
L'UDP rende disponibile a livello di trasporto i servizi di IP
quando si richiede un protocollo di datagramma senza
connessione.
Protocolli
a livello di Applicazione
Ci sono vari programmi applicativi forniti da quasi ogni
implementazione del TCP/IP. Un punto di forza della suite di
protocolli TCP/IP è la disponibilità di queste applicazioni
standard per una varietà di sistemi operativi.
Caratteristiche comuni alle applicazioni
-
Possono
essere applicazioni standard (acquistate con il prodotto
TCP/IP) o scritte dall’utente. Come minimo, la famiglia
TCP/IP include TELNET (emulazione terminale), FTP
(trasferimento file), SMTP (posta elettronica).
-
Usano
UDP o TCP come protocollo di trasporto. La maggior parte
dei programmi usa TCP, ma ci sono applicazioni basate su
UDP che danno migliori prestazioni grazie alla riduzione
dell’overhead del protocollo.
-
Molte
applicazioni utilizzano il modello di interazione client/server.
Modello Client/Server
TCP é un protocollo orientato alla connessione
punto–a–punto (peer–to–peer). In generale non esiste
relazione master/slave, quindi nessun processo è prioritario;
i processi client e server svolgono funzioni diverse. Il server
é un processo che offre un servizio ad un utente della rete
ed il client é un processo che richiede un servizio;
un’applicazione quindi consiste di entrambe le parti , che
possono essere in esecuzione su sistemi diversi. L’utente di
solito esegue la parte client dell’applicazione che
costruisce la richiesta (request) ad un particolare
servizio e la spedisce alla parte server, usando TCP (UDP) e
IP come veicolo di trasporto. Il processo server riceve
la richiesta, realizza il servizio chiesto e rispedisce al
client una risposta (reply). Un server che può
elaborare richieste contemporanee viene chiamato server concorrente.
Figura 5 Il modello Client/Server delle
applicazioni
Porte
Ad ogni protocollo a livello di applicazione corrisponde
un numero identificativo che lo caratterizza, chiamato PORTA
(le porte tra 1 e 1024 sono riservate perché associate ai
protocolli standard. Ogni connessione attiva (quindi ogni
programma in esecuzione che richiede servizi in rete) utilizza
una propria porta. Le porte assegnate ai protocolli standard
sono chiamate porte “well known” (ben note). Per
verificare la presenza di un servizio di rete (cioè se esiste
un programma server attivo su un nodo) basterà contattare
quel nodo e attivare una connessione sulla porta assegnata. Se
il server è “in ascolto” accetterà la connessione e
attiverà un “dialogo” con il nostro client.
FTP
- File Transfer Protocol - (21/tcp)
L'FTP è un programma usato per trasferire file da un
sistema ad un altro. Esso offre un insieme di caratteristiche
e di opzioni, come l'autenticazione dell'utente, la
conversione dei dati, elenchi di directory, e così via. Una
sequenza tipica di eventi è quella in cui un utente
interattivo chiama un processo client di FTP sul sistema
locale. Questo processo client stabilisce una connessione con
un processo server di FTP sul sistema remoto mediante il TCP.
L'FTP stabilisce in realtà due connessioni fra i processi
client e server: una per informazioni di controllo (comandi e
risposte) e l'altra per i dati da trasferire. L'utente
interattivo riceve una richiesta d'inserire le informazioni di
accesso (nome di login e password) sul sistema remoto,
dopodiché attraverso comandi specifici i file possono essere
trasferiti in entrambe le direzioni. L'FTP trasferisce file
sia di testo che binari.
TFTP
- Trivial File Transfer Protocol (69/udp)
Il TFTP è un protocollo più semplice di FTP. Anche se
provvede al trasferimento di file tra un processo client ed un
processo server, esso non dispone dell'autenticazione
dell'utente né di altre caratteristiche di FTP (elenchi di
directory, trasferimento fra directory, e così via). TFTP
impiega UDP.
TELNET
- Login remoto (23/tcp)
TELNET fornisce un mezzo per effettuare il collegamento (login)
remoto, consentendo ad un utente di un host di avviare una
sessione di shell in un sistema remoto. Una volta che la
sessione di login è stata convalidata l’utente ha accesso
al sistema remoto come se fosse collegato direttamente. TELNET
impiega TCP.
SMTP
- Simple Mail Transfer Protocol (25/tcp)
L'SMTP fornisce un protocollo per la consegna di posta
elettronica fra utenti di due sistemi mediante una connessione
TCP.
HTTP
– HyperText Transfer Protocol (80/tcp)
L'HTTP è il protocollo di trasferimento degli ipertesti
(i file html). Netscape, Explorer e gli altri browser sono dei
client di Http.
PING - Autodiagnostica
Semplice servizio di echo, usato per autodiagnostica;
utilizza il protocollo ICMP.