1.
Cenni Storici
La
telematica, ovvero la comunicazione di dati per via elettronica è
diventata oggi una parte fondamentale dell' informatica.
Fondamentale
per la telematica è il concetto di
internetworking
, ovvero la possibilità di collegare tra loro reti diverse dal punto di
vista dell'hardware utilizzato e dei sistemi operativi.
A
metà degli anni '70 l'agenzia americana ARPA (Advanced Research
Projects Agency) cominciò a lavorare ad un progetto di internetworking,
specificando l'attuale architettura di protocolli, denominata TCP/IP,
intorno al 1978/79.
La
nascita di Internet vera e propria si ha però solo nel 1980, quando
ARPA comincia a convertire tutte le macchine collegate alla sua rete di
ricerca al nuovo protocollo TCP/IP.
L'adozione
della tecnologia Internet viene completata nel 1983, quando il
Dipartimento della Difesa Americano ordina che tutte le macchine
collegate a reti geografiche utilizzino il TCP/IP.
Nello
steso tempo la rete viene suddivisa in due pezzi, quello di ricerca -
denominato ARPANET, e quello più propriamente militare, denominato
MILNET.
Per
incoraggiarne l'utilizzo da parte delle Università ARPA mise a
disposizione l'implementazione del TCP/IP a basso costo. Come?
La
maggior parte dei dipartimenti di informatica delle Università
all'epoca utilizzavano il BSD Unix di Berkeley. ARPA finanziò allora la
società BBN perchè implementasse TCP/IP sotto Unix, e l'Università di
Berkeley perchè integrasse questa implementazione nella distribuzione
BSD. In questo modo raggiunse il 90% dei dipartimenti di informatica
delle Università.
L'implementazione
TCP/IP di Berkeley divenne popolare anche perchè integrò nella rete
una serie di applicazioni tipiche di Unix (ad esempio rcp) e fornì una
nuova astrazione - quella di
socket
- per permettere alle applicazioni l'accesso alle funzionalità di
comunicazione fornite dai protocolli di rete
Il
successo del TCP/IP e dell' Internet nella ricerca Universitaria
informatica portò altri gruppi alla decisione di adottarlo. Nel 1986 la
National Science Foundation NFS finanziò un nuovo grosso backbone
Internet, denominato NFSNET, che connetteva non più solo dipartimenti
di informatica, ma tutti i principali centri di ricerca americani.
A
partire dalla fine degli anni '80 Internet cominciò a diffondersi anche
nelle Università e centri di ricerca in Europa e nelle grosse aziende
americane.
All'inizio
degli anni '90 anche le piccole e medie imprese americane prima e del
mondo poi cominciarono a collegarsi ad Internet.
Oggi
la tecnologia TCP/IP viene adottata anche all'interno di reti private
aziendali, senza che queste si connettano poi all'Internet globale. (Intranet).
La
storia dei protocolli TCP/IP è il successo di una tecnologia pubblica,
le cui specifiche sono state pubblicate in modo da poter essere
implementate da chiunque, contro protocolli di comunicazione
proprietari, quali DECNET, SNA, IPX, etc.
2.
Layers di protocolli
I
protocolli di rete sono normalmente sviluppati e organizzati su più
livelli. Ciascun livello è responsabile di un aspetto della
comunicazione
TCP/IP
è una suite di protocolli diversi organizzati su quattro layers (OSI ne
prevede 7)
Applications |
Telnet,
FTP, e-mail, etc. |
Transport |
TCP, UDP |
Network |
IP, ICMP, IGMP |
Link |
Device drivers e schede
di interfaccia |
Link
Layer E' implementato nelle schede di interfaccia dei vari metodi di
comunicazione e nei device drivers dei sistemi operativi. Il protocollo
Internet non interviene a questo livello
Network
Layer (Internet Layer) Si occupa di far viaggiare i pacchetti di dati
attraverso la rete.
Transport
Layer Si occupa di stabilire un flusso di informazioni tra due host
sulla rete
Application
Layer Si occupa di trasportare le informazioni specifiche a ciascuna
applicazione.
I
primi due sono protocolli hop-by-hop, cioé si occupano di trasferire
pacchetti da un nodo all' altro della rete
Il
transport e l' application layer sono invece protocolli end-to-end , cioé
si preoccupano di trasferire informazioni tra il mittente e il
destinatario.
In
Unix l' application layer è un processo utente, mentre i layers del TCP/IP
fanno parte del kernel
3.
Internetworking e routers
La
distinzione tra il network layer e il transport layer è fondamentale
per il concetto di Internetworking, ovvero per costruire una rete di
reti.
Un
router è un computer che connette tra loro due o più reti con
protocolli fisici diversi (link layers). Un router è quindi dotato di
interfaccie verso reti fisiche diverse
 |
Ethernet
e ISDN
 |
Ethernet
e rete telefonica standard
 |
Ethernet
e rete CDN (circuito dedicato numerico)
 |
Ethernet
e rete locale FDDI (Fiber Distributed Data Interface)
|
| | |
Storicamente
i router venivano chiamati gateway . Oggi il termine gateway si usa per
il livello applicativo.
Un
router può essere una macchina dedicata (esempio router CISCO), oppure
può fare da router un host su Internet (es. PC con connessione LAN
Ethernet e connessione PPP alla rete telefonica o all' ISDN).
Ciò
che rende Internet flessibile è proprio questa capacità di nascondere
ai protocolli di livello superiore (transport e application) i dettagli
del livello fisico di interconnessione tra reti diverse.
4.
Indirizzi Internet
Ogni
interfaccia di rete su Internet ha un indirizzo unico, chiamato
indirizzo IP o indirizzo Internet.
Un
router, che per sua definizione ha più interfacce di rete ha
generalmente più indirizzi IP.
Gli
attuali indirizzi IP (IPv4) sono composti da 32 bit ovvero 4 bytes.
Comunemente un indirizzo IP si rappresenta con 4 numeri interi separati
da un punto. Ciascun intero rappresenta uno dei 4 bytes.
Ad
esempio: 194.20.20.15 rappresenta l' indirizzo IP
11000010.00010100.00010100.00001111. Qual'è il massimo che possiamo
trovare in ciascun componente della quadrupletta?
Tradizionalmente
gli indirizzi IP erano divisi in 4 classi
 |
Indirizzi
di classe A. Il byte più significativo comincia con 0 Vanno da
0.0.0.0 a 127.255.255.255. Il primo byte è interpretato come
indirizzo della rete. I restanti tre come indirizzi di host.
 |
Indirizzi
di classe B. Il byte più significativo comincia con 10. Quindi
vanno da 128.0.0.0 a 191.255.255.255. Il primo e il secondo byte
sono interpretati come indirizzi della rete. I restanti due come
indirizzi di host.
 |
Indirizzi
di classe C. Il byte più significativo comincia con 110. Quindi
vanno da 192.0.0.0 a 223.255.255.255. I primi tre bytes sono
interpretati come indirizzi della rete. L' ultimo come indirizzo di
host.
 |
Indirizzi
di classe D. Il byte più significativo comincia con 1110. In questo
caso i restanti 28 bits vengono interpretati come l' indirizzo di un
gruppo di host in multicasting.
|
| | |
Con
la crescita di Internet, a causa della scarsità dello spazio di
indirizzi rimasto, si è deciso che la vecchia suddivisone causava un
assurdo spreco di risorse. Oggi si parla quindi di indirizzi IP
ClassLess.
La
demarcazione tra indirizzo della rete e indirizzo dell'host viene
indicata con una maschera di sottorete (subnet mask) di 32 bit. I bit
della maschera settati a 1 indicano la parte rete dell'indirizzo, quelli
settati a zero la parte host.
Il
tipo di rete viene indicato con il numero di bit che identificano la
rete. Più è alto questo numero, più la rete è piccola.
Ad
esempio, la vecchia denominazione - rete di classe C - oggi si chiama
/24 ed ha maschera di sottorete 255.255.255.0. Una rete di 128 host,
invece è uno /25 e ha maschera di sottorete 255.255.255.128. E una di
64 hosts?
Poichè
devono essere unici, gli indirizzi IP vengono assegnati da apposite
autorità di rete. Negli USA è' l'InterNic. In Europa il RIPE in Asia
l' APnic. Ogni autorità può poi delegare in parte l'assegnazione a
delle Registration Authorities locali.
Poichè
gli indirizzi IP non sono particolarmente mnemonici, su Internet si usa
un database distribuito chiamato DNS per mappare gli indirizzi IP nel
nome dell' host corrispondente. Tali nomi su Internet sono organizzati
secondo delle gerarchie (domini)
5.
I nomi a dominio
Poichè
gli indirizzi IP non sono particolarmente mnemonici, su Internet si usa
un database distribuito chiamato DNS (domain name service) per mappare
gli indirizzi IP nel nome dell'host corrispondente. I nomi sono
organizzati secondo delle gerarchie (domini), simili a quelle del file
system di Unix.
I
domini di primo livello (TLD) possono essere di tipo generico (com edu
gov int mil net org) oppure di tipo nazionale (ae fr it us zw). C'è poi
il dominio arpa che serve come dominio radice per la risoluzione inversa
da indirizzi IP a nomi di host.
Un
dominio di primo livello ha sotto di sè dei domini di secondo livello,
i quali possono avere a loro volta dei sottodomini, oppure direttamente
degli host, in base alle regole date da ogni singola organizzazione che
gestiste il dominio di livello superiore.
Qualche
esempio di nomi a dominio
maggiore.dsnet.it
pendragon.cs.purdue.edu
papageno.cs.unibo.it
atbd.microsoft.com
robin.internic.net
aos.arl.army.mil
ns.nasa.gov
15.32.0.195.in-addr.arpa
La
radice dell' albero dei domini è un nodo particolare che non ha
etichetta. Ciascun nome può avere al massimo 63 caratteri. Le etichette
dei vari livelli nel nome a domini sono separate da punti (dot). Le
lettere minuscole o maiuscole in un nome a domini non vengono distinte.
La
gestione dei nomi a domini è totalmente decentrata (distribuita)
Nessuna singola entità ha la responsabilità di tutte le etichette di
una gerarchia di domini.
Un
sotto-albero dell'albero dei domini che viene gestito separatamente, si
chiama zone . Una caso tipico di zone è quella di un dominio di secondo
livello (es: dsnet.it)
Molti
domini di secondo livello dividono la loro zona in sotto-zone più
piccole. L'autorità di gestione di una singola zona viene delegata ad
una persona che ha la responsabilità di fornire almeno due name server
per quella zona.
Il
responsabile di una zona fornisce il name server primario per quella
zona e uno o più name server secondari. Il primario carica tutte le
informazioni sul dominio dai file locali, mentre il secondario carica le
informazioni prendendole dal server primario, con una operazione di zone
transfer.
Reti
IP e nomi a domini sono assolutamente indipendenti: su una stessa rete
possono convivere nomi a domini diversi e uno stesso dominio può avere
host con indirizzi IP appartenenti a reti completamente diverse
6.
Funzionamento della Suite di Protocolli
Dall'
application layer, fino al link layer, ciascun protocollo aggiunge
informazioni al pacchetto di dati che riceve. Questo meccanismo si
chiama encapsulation .
La
suite TCP/IP comprende i protocolli TCP e UDP al transport layer e IP,
ICMP e IGMP al network layer. UDP è un TCP semplifcato, utilizzato per
la trasmissione di pacchetti molto piccoli di dati. ICMP è un
protocollo utilizzato per lo scambio di messaggi di controllo relativi
al network layer, IGMP è utilizzato nel multicasting.
L'application
layer (es. http) invia un pacchetto dati con tutte le informazioni
relative all'http al transport layer TCP (o UDP).
Il
TCP circonda i dati da inviare via rete con tutte le informazioni
necessarie al protocollo TCP, creando un pacchetto dati TCP (TCP segment).
Poi a sua volta lo invia al network layer.
L'UDP
manda invece al network layer un UDP datagram.
A
sua volta il protocollo IP, ricevuto un TCP segment o un UDP datagram lo
circonda con le informazioni necessarie al protocollo IP, crea un IP
datagram e lo manda al link layer.
Ciascun
protocollo memorizza all' interno della sua parte di informazioni, un
identificativo del protocollo che ha mandato il pacchetto.
Il
protocollo IP memorizza in 8 bit il tipo di protocollo per distinguere
tra TCP, UDP, ICMP IGMP.
I
protocolli TCP e e UDP memorizzano in 16 bit, chiamati port number l'
identificativo del software applicativo che gli ha mandato il pacchetto
e in altri 16 bit l'identificativo dell'applicazione destinataria.
L'
ethernet header ha anch'essa un campo di 16 bit per identificare il
protocollo del network layer che ha inviato il pacchetto di dati.
All'arrivo,
viene effettuata una procedura inversa all'encapsulation, chiamata
demultiplexing.
7.
Porte e Socket
I
protocolli dell'application layer sono identificati tramite dei numeri
di porta di 16 bit ciascuno.
I
server applicativi (ad esempio il server Web) devono essere univocamente
conosciuti da tutti i client sulla rete. Hanno quindi dei numeri di
porta riservati. Ad esempio il server http ha numero di porta 80.
I
client invece utilizzano dei numeri di porta temporanei, che vengono di
volta in volta comunicati al server con cui si sono messi in
comunicazione
L'interfacciamento
dell'application layer con il transport layer (TCP) in Unix avviene
attraverso una application programming interface basata sul concetto di
socket. Ogni socket è univocamente identificata da un indirizzo IP e un
numero diporta
|