• Non ci sono risultati.

1 Indirizzi IP 7 1.1 Che cos’è un indirizzo IP? . . . . 7

N/A
N/A
Protected

Academic year: 2021

Condividi "1 Indirizzi IP 7 1.1 Che cos’è un indirizzo IP? . . . . 7"

Copied!
64
0
0

Testo completo

(1)

Indice

Introduzione . . . . 1

1 Indirizzi IP 7 1.1 Che cos’è un indirizzo IP? . . . . 7

1.2 Indirizzi riservati . . . . 8

1.3 Le classi di reti . . . . 8

1.4 Indirizzi IP privati . . . . 10

1.5 Maschere di rete . . . . 11

1.6 Creazione di sottoreti e maschere di sottorete (subnetting) - VLSM (Variable Length Subnet Masking) . . . . 12

1.7 L’utilità delle porte . . . . 13

1.8 La funzione di multiplexaggio . . . . 15

1.9 Che cos’è un URL? . . . . 15

1.10 Nomi di host . . . . 17

2 DNS - Domain Name System 19 2.1 Lo spazio dei nomi . . . . 20

2.2 I server di nomi . . . . 21

2.3 Risoluzione dei nomi di dominio . . . . 22

2.4 Come funzionano i DNS? . . . . 22

2.5 Domini di alto livello . . . . 23

2.6 BIND . . . . 24

2.7 File di zona . . . . 26

2.7.1 File di zona per la risoluzione diretta del dominio esem-

pio.com . . . . 27

2.7.2 File di zona per la risoluzione inversa della rete 192.168.0.0 30

(2)

3 Reti di calcolatori 33

3.1 Modello di comunicazione a strati . . . . 34

3.2 Modello ISO-OSI . . . . 35

3.3 Modello Internet . . . . 37

3.3.1 Cosa significa best effort . . . . 39

3.3.2 Incapsulamento dei dati . . . . 40

3.4 I protocolli del livello Internet . . . . 40

3.4.1 Il protocollo IP . . . . 40

3.4.2 Il protocollo ARP . . . . 46

3.4.3 Il protocollo RARP . . . . 47

3.4.4 Il protocollo ICMP . . . . 47

3.5 I protocolli del livello trasporto . . . . 47

3.5.1 Il protocollo TCP . . . . 47

3.5.2 Il protocollo UDP . . . . 59

3.5.3 Rilevare gli errori di trasmissione usando il checksum . 60

(3)

Introduzione

Nel 1962, quando il comunismo montava in forza, l’US Air Force chiede ad un gruppo di ricercatori di creare una rete di comunicazione militare capace di resistere ad un attacco nucleare. Il concetto di questa rete si basava su un sistema decentralizzato, che permetteva alla rete di funzionare nonostante la distruzione di uno o più terminali.

Il modello di Baran

Paul Baran è considerato uno degli attori principali nella creazione di Internet. Nel 1964, ebbe l’idea di creare una rete sotto forma di una grande tela. Aveva capito che un sistema centralizzato era vulnerabile dato che la distruzione del suo nucleo provocava l’annientamento delle comunicazioni.

Mise quindi a punto una rete ibrida con architettura a stella e a maglie nella quale i dati si spostavano in modo dinamico, «cercando» il percorso più libero, e «aspettando» se tutte le strade erano occupate. Questa tecnologia fu chiamata «packet switching».

L’ARPANET

Nell’agosto del 1969, indipendentemente da ogni obiettivo militare, la rete sperimentale ARPANET fu creata dall’ARPA (Advanced Research Projects Agency dipendente dal DOD, Department of Defense) per collegare quattro istituti universitari:

• Lo Stanford Institute;

(4)

• L’università della California a Los Angeles;

• L’università della Californie a Santa Barbara;

• L’università dello Utah.

La rete ARPANET è oggi considerata come il precursore di Internet. Già all’epoca prevedeva alcune caratteristiche fondamentali della rete attuale:

• Uno o più nodi di rete che potevano essere distrutti senza perturbare il suo funzionamento;

• La comunicazione tra terminali senza un terminale centralizzato inter- medio;

• I protocolli utilizzati erano di base.

Il concetto di rete nacque dall’idea di collegare fra loro dei computer affinché potessero costituire una infrastruttura più affidabile. Ovviamente per rag- giungere questo obiettivo è stato necessario mettere a punto dei collegamenti fisici fra i computer affinché essi potessero scambiarsi informazioni, ma an- che, al fine di garantire la correttezza dello scambio di informazioni, definire linguaggi e regole di comunicazione tra i diversi computer. Linguaggi e regole di comunicazione costituiscono un protocollo di comunicazione.

Su internet, sono usati numerosi protocolli che fanno parte di una serie di protocolli detta TCP/IP. TCP/IP è basato sull’identificazione di ogni dispositivo di rete di ogni computer attraverso un indirizzo detto indirizzo IP che permette di inviare i dati all’indirizzo giusto. Poi a questi indirizzi vengono associati dei nomi di dominio per permettere di ricordarsene più facilmente.

Nel tempo si svilupparono reti di tipo eterogeneo; sorse quindi l’esigenza di collegare queste reti tra loro (delle università ad esempio, o l’esercito).

I protocolli si sono quindi evoluti per permettere la comunicazione di tutte

queste reti per formare la rete di reti, come una gigantesca tela di ragno (in

inglese «web») fino ad una rete più vasta, che potesse contenere tutte le reti,

per arrivare a quello che chiamiamo Internet. Su internet esistono diversi

protocolli che permettono diverse modalità di comunicazione:

(5)

INDICE 3

• IRC: Internet Relay Chat;

• HTTP: Hyper Text Transfer Protocol;

• FTP: File Transport Protocol;

e molte altre cose.

A ciascuno di essi viene assegnato un numero (la porta) che è trasmes- sa al momento della comunicazione (la trasmissione è effettuata con piccoli pacchetti di informazioni). Quindi, è possibile conoscere a quale programma corrisponde ogni piccolo pacchetto :

• i pacchetti HTTP arrivano sulla porta 80 e sono trasmessi al browser internet che ha fatto la stata richiesta;

• i pacchetti IRC arrivano sulla porta 6667 (o un’altra posta generalmente verso la 7000) e sono trasmessi a un client IRC come mIRC (o altro);

Connettersi ad Internet

La scheda di rete è l’elemento del computer che permette di connettersi ad una rete attraverso delle linee previste per far transitare delle informazioni digitali. Il modem permette di connettersi ad una rete attraverso delle linee telefoniche.

Alla scheda di rete è associato almeno un indirizzo IP, che permette di individuare il computer sulla rete.

La connessione attraverso un modem è totalmente differente. In effetti, un modem permette di stabilire una comunicazione tra due computer attraverso una linea telefonica. Si può tuttavia avere accesso ad una rete (quindi per estensione a Internet) contattando un computer collegato (da un lato) a una o più linee telefoniche (per ricevere la chiamata) e (dall’altro lato) ad una rete attraverso una scheda di rete.

Questo computer appartiene generalmente al fornitore di accesso internet.

Quando vi connettete con la sua intermediazione, vi presta un indirizzo IP

che il computer manterrà durante la connessione. Ad ogni connessione esso

attribuisce arbitrariamente uno degli indirizzi IP liberi che possiede. Se è

(6)

capace di fornirvi lo stesso indirizzo IP ad ogni connessione, si parla allora di «indirizzo IP fisso».

Che cos’è un protocollo?

Un protocollo è un metodo standard che permette la comunicazione tra i processi (eventualmente su terminali diversi), cioè un insieme di regole e procedure da rispettare per emettere e ricevere dei dati su una rete. Ne esistono differenti secondo quello che ci si aspetta dalla comunicazione. Al- cuni protocolli sono ad esempio specializzati nello scambio di file (FTP), altri possono servire per gestire semplicemente lo stato della trasmissione e degli errori (è il caso del protocollo ICMP). . .

Su internet, i protocolli usati fanno parte di una serie di protocolli (stack), cioè un insieme di protocolli collegati fra loro. Questa serie di protocollo si chiama TCP/IP.

Essa contiene, fra l’altro, i protocolli seguenti:

• HTTP

• FTP

• ARP

• ICMP

• IP

• TCP

• UDP

• SMTP

• Telnet

• SNMP

• NNTP

(7)

INDICE 5

Protocolli orientati e non orientati alla connes- sione

I protocolli vengono generalmente classificati in due categoria secondo il livello di controllo dei dati che si desidera avere:

I protocolli orientati alla connessione : si tratta di protocolli che ope- rano un controllo di trasmissione dei dati durante una comunicazione stabilita fra due terminali. In uno schema simile, il terminale ricevi- tore invia delle notifiche di ricevimento durante la comunicazione, così il terminale emettitore ha la garanzia della validità dei dati che invia.

I dati sono inviati sotto forma di flusso di byte. TCP è un protocollo orientato connessione.

I protocolli non orientati alla connessione : si tratta di una modalità di connessione in cui il terminale emettitore invia dei dati al terminale ricevitore e quest’ultimo riceve i dati senza inviare degli avvisi di ri- cezione. I dati sono così inviati sotto forma di blocchi (datagrammi).

UDP è un protocollo non orientato connessione.

Protocollo e implementazione

Un protocollo definisce unicamente il modo in cui i terminali devono co-

municare, cioè la forma e la sequenza dei dati da scambiare. Un protocollo

non definisce invece il modo di programmare un software in maniera che

sia compatibile con il protocollo. Viene così detta implementazione la

traduzione di un protocollo in linguaggio informatico.

(8)
(9)

Capitolo 1 Indirizzi IP

1.1 Che cos’è un indirizzo IP?

Su internet, i computer comunicano fra loro grazie al protocollo IP (Inter- net Protocol), che usa degli indirizzi numerici, detti Indirizzi IP, composti da 4 numeri interi (4 byte) compresi tra 0 e 255 e siglati sotto la forma di xxx.xxx.xxx.xxx. Ad esempio 194.153.205.26 è un indirizzo IP.

Questi indirizzi servono ai computer di rete per comunicare fra loro, quindi ogni computer di rete ha un indirizzo IP unico sulla rete stessa.

E’ l’ICANN (Internet Corporation for Assigned Names and Numbers, che ha sostituito l’IANA, Internet Assigned Numbers Agency, dal 1998) ad essere incaricata di distribuire gli indirizzi IP pubblici, cioè gli indirizzi IP dei computer direttamente connessi alla rete pubblica internet.

Un indirizzo IP è un indirizzo a 32 bit, solitamente scritto sotto for- ma di 4 numeri interi separati da punti. Nell’indirizzo IP si distinguono effettivamente due parti:

• la parte dei numeri posti a sinistra designa la rete ed è chiamata ID di rete (in inglese netID),

• I numeri di destra designano i computer della rete stessa e sono detti host-ID.

Se la rete fosse 194.28.12.0 essa potrebbe contenere gli indirizzi IP da 194.28.12.1

a 194.28.12.254

(10)

Immaginiamo una rete con indirizzo 58.0.0.0. I computer di questa rete potranno avere gli indirizzi IP che vanno da 58.0.0.1 a 58.255.255.254. Si tratta quindi di attribuire i numeri in modo che vi sia un’organizzazione nella gerarchia dei computer e dei server.

Quindi, più il numero di bit riservato alla rete è piccolo, più computer questa potrà contenere.

1.2 Indirizzi riservati

Quando si annulla la parte host-id, cioè quando si sostituiscono con degli zero i bit riservati ai terminali di rete (ad esempio 194.28.12.0), si ottiene quello che viene chiamato indirizzo di rete. Questo indirizzo non può essere attribuito a nessun computer della rete.

Quando la parte netid è annullata, cioè quando i bit riservati alla rete sono sostituiti con degli zero, si ottiene l’indirizzo del terminale. Questo indirizzo rappresenta il terminale specificato dall’ host-id che si trova sulla rete corrente.

Quando tutti i bit della parte host-id sono a 1, l’indirizzo ottenuto è detto l’indirizzo di diffusione ( in inglese broadcast). Si tratta di un indirizzo specifico, che permette di inviare un messaggio a tutti i terminali posti sulla rete specificata con il netID.

Al contrario, quando tutti i bit della parte netid sono a 1, l’indirizzo ottenuto costituisce l’indirizzo di diffusione limitata (multicast).

Infine, l’indirizzo 127.0.0.1 è detto indirizzo di loopback, dato che designa il terminale locale (in inglese localhost).

1.3 Le classi di reti

Gli indirizzi IP sono ripartiti in classi, secondo il numero di byte che rappresentano la rete.

Classe A In un indirizzo IP di classe A, il primo byte rappresenta la rete.

Il bit di peso forte (il primo bit, quello di sinistra) è a zero, il che

significa che vi sono 2

7

p00000000a01111111q possibilità di reti, ossia

(11)

1.3 Le classi di reti 9

128 possibilità. Tuttavia, la rete 0 (bit che valgono 00000000) non esiste e il numero 127 è riservato per designare il vostro terminale.

Le reti disponibili in classe A sono quindi le reti che vanno da 1.0.0.0 a 126.0.0.0 (gli ultimi byte sono degli zero che indicano che si tratta effettivamente di reti e non di computer!)

I tre byte di destra rappresentano i computer di rete, la rete può quin- di contenere un numero di computer uguale a 2

24

 2  16777214 computer.

Un indirizzo IP di classe A, in codice binario, assomiglia a questo : 0 xxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx

Rete Computer

Classe B In un indirizzo IP di classe B, i primi due byte rappresentano la rete.

I primi due bit sono 1 e 0, il che significa che vi sono

2

14

p1000000000000000 a 1011111111111111q possibilità di reti, ossia 16384 reti possibili.

Le reti disponibili in classe B sono quindi le reti che vanno da 128.0.0.0 a 191.255.0.0

I due byte di destra rappresentano i computer della rete. La rete può quindi contenere un numero di computer pari a 2

16

 2

1

 65534 computer.

Un indirizzo IP di classe B, in codice binario, assomiglia a questo:

10 xxxxxx xxxxxxxx xxxxxxxx xxxxxxxx

Rete Computer

Classe C In un indirizzo IP di classe C, i primi tre byte rappresentano la rete.

I primi tre bit sono 1, 1 e 0, il che significa che vi sono 2

21

possibilità

di reti, cioè 2097152. Le reti disponibili in classe C sono quindi le reti

che vanno da 192.0.0.0 a 223.255.255.0

(12)

Classe Nr di reti possibili Nr massimo di computer su ciascuna

A 126 16777214

B 16384 65534

C 2097152 254

Tabella 1.1: Caratteristiche delle classi di reti

Il byte di destra rappresenta i computer di rete, la rete può quindi contenere un numero di computer pari a 2

8

 2

1

 254 computer.

Un indirizzo IP di classe C, in codice binario, assomiglia a questo:

110 xxxxx xxxxxxxx xxxxxxxx xxxxxxxx

Rete Computer

Si può riassumere ciò che è stato appena detto nella Tabella 1.1:

1.4 Indirizzi IP privati

Capita spesso che in un’azienda o in un ente vi sia un solo computer connesso a Internet, che funge da intermediario per gli altri computer di rete per l’accesso a internet (si parla generalmente di proxy o di passerella).

In questa configurazione, solo il computer connesso a internet ha bisogno di riservare un indirizzo IP presso l’ICANN. Tuttavia, gli altri computer hanno comunque bisogno di un indirizzo IP per poter comunicare.

Così l’ICANN ha riservato alcuni indirizzi in ciascuna delle classi per per- mettere di attribuire un indirizzo IP ai computer di una rete locale collegata a Internet senza rischiare di creare dei conflitti di indirizzi IP sul web. Si tratta dei seguenti indirizzi:

• Indirizzi privati di classe A: 10.0.0.1 a 10.255.255.254, che permettono la creazione di rete private estese che comprendono migliaia di computer.

• Indirizzi IP privati di classe B: 172.16.0.1 a 172.31.255.254, che per- mettono di creare delle reti private di medie dimensioni.

• Indirizzi IP privati di classe C: 192.168.0.1 a 192.168.0.254, per la

realizzazione di piccole rete private.

(13)

1.5 Maschere di rete 11

1.5 Maschere di rete

Si crea una maschera settando a 1 ogni bit che si desidera conservare e a 0 ogni bit che si vuole annullare. Una volta creata la maschera, basta fra un ET (and) logico tra il valore che si vuole mascherare e la maschera per mantenere intatta la parte desiderata e annullare il resto.

Una maschera di rete (in inglese netmask) è formata da 32 bit (4 byte, come un indirizzo IP).

La maschera di rete per una rete di classe A è 255.0.0.0, per una rete di classe B è 255.255.0.0 e per una rete di classe C è 255.255.255.0

Ogni indirizzo di rete è determinato da un certo numero di byte dell’in- dirizzo IP (1 byte per gli indirizzi di classe A, 2 per quelli di classe B, e 3 byte per la classe C).

La rete associata all’indirizzo 34.56.123.12 è ad esempio 34.0.0.0, dato che si tratta di un indirizzo IP di classe A.

Per ricavare l’indirizzo di rete associato all’indirizzo IP 34.56.123.12, basta applicare una maschera il cui primo byte prevede solo degli 1 (cioè 255 in notazione decimale), poi degli 0 sui byte seguenti.

La maschera associata all’indirizzo IP 34.208.123.12 è 255.0.0.0 (in bina- rio 11111111.00000000.00000000.00000000)

Il valore binario di 34.208.123.12 è 00100010.11010000.01111011.00001100 Un ET logico tra l’indirizzo IP e la maschera da quindi il seguente risul- tato:

00100010.11010000.01111011.00001100 ET

11111111.00000000.00000000.00000000

=

00100010.00000000.00000000.00000000

Cioè 34.0.0.0. Si tratta effettivamente della rete associata all’indirizzo 34.208.123.12

Generalizzando, è possibile avere delle maschere corrispondenti ad ogni

classe di indirizzo:

(14)

• Per un indirizzo di Classe A, solo il primo byte deve essere conservato.

La maschera ha la forma seguente 11111111.00000000.00000000.00000000, cioè 255.0.0.0 in notazione decimale;

• Per un indirizzo di Classe B, i primi due byte devono essere conservati, da cui risulta la maschera seguente 11111111.11111111.00000000.00000000, corrispondente a 255.255.0.0 in notazione decimale;

• Per un indirizzo di Classe C, con lo stesso ragionamento, la masche- ra avrà la forma seguente 11111111.11111111.11111111.00000000, cioè 255.255.255.0 in notazione decimale.

1.6 Creazione di sottoreti e maschere di sotto- rete (subnetting) - VLSM (Variable Length Subnet Masking)

La divisione delle reti in classi è stata superata attraverso l’introduzione del concetto di subnetting.

Riprendiamo l’esempio della rete 34.0.0.0 e supponiamo che si desideri dividere questa rete in quattro sottoreti.

Per far ciò è necessario sacrificare i primi due bit del secondo byte (due bit permettono di indicare 2

2

combinazioni), togliendoli quindi dai bit dell’hostId dell’indirizzo.

In questo modo l’indirizzo sarebbe formato da 8 bit per la parte ne- tId, 2 bit per la parte subnetID e 22 bit per la parte hostID. La maschera da applicare sarà allora: 11111111.11000000.00000000.00000000 (255.192.0.0). Gli indirizzi di sottorete possibili per la rete 34.0.0.0 diventano quindi:

• 34.0.0.0 quando i primi due bit del secondo byte sono 00

• 34.64.0.0 quando due primi bit del secondo byte sono 01

• 34.128.0.0 quando i due primi bit del secondo byte sono 10

• 34.192.0.0 quando i due primi bit del secondo byte sono 11

(15)

1.7 L’utilità delle porte 13

Numero di bit usati Numero di sottoreti

1 2

2 4

3 8

4 16

5 32

6 64

7 128

8 (impossibile per una classe C) 256

Tabella 1.2: Relazione tra numero di bit usati e sottoreti

E’ possibile specificare implicitamente come deve essere mascherato un indirizzo IP specificando il numero complessivo di bit che formano la sua parte netID più la sua parte subnetID.

Ad esempio:

l’indirizzo IP 34.1.6.1/8 è della rete di classe A 34.0.0.0 l’indirizzo IP 34.1.6.1/10 è della sottorete 34.0.0.0 l’indirizzo IP 34.50.6.1/10 è della sottorete 34.64.0.0 l’indirizzo IP 34.150.6.1/10 è della sottorete 34.128.0.0 l’indirizzo IP 34.250.6.1/10 è della sottorete 34.192.0.0

Questo mascheramento divide quindi una rete di classe A (che può ammet- tere 16 777 214 computer) in 4 sottoreti ciascuna delle quali può ammettere 2

22

computer, cioè 4 194 304 computer.

Può essere interessante notare che nei due casi, il numero totale di com- puter è lo stesso, ossia 16 777 214 computer (4  419304  2  16777214).

Il numero di sottoreti della rete dipende dal numero di bit sottratti all’hostID (2 bit in questo esempio) ed utilizzati per effettuare il subnetting.

La Tabella 1.2 riassume le possibilità di subnetting di una generica rete.

1.7 L’utilità delle porte

Un client può accedere contemporaneamente a diversi servizi Internet (ad

esempio potete aprire più browser simultaneamente per navigare su pagine

web mentre scaricate un file in FTP). L’accesso ai servizi avviene attraverso

(16)

Porta Servizio o Applicazione

21 FTP

23 Telnet

25 SMTP

53 Domain Name System

63 Whois

79 Finger

80 HTTP

110(impossibile per una classe C) POP3

un colloquio client-server che si basa sul protocollo TCP/IP. Un host può implementare diversi servizi, ogni servizio è associato ad una porta.

Ogni servizio Internet di uno specifico host è quindi associato alla coppia di valori (indirizzo IP, numero porta) che sono univoci su Internet. Questa coppia rappresenta un estremo (lato server) del link logico di comunicazione tra client e server e, per il client, identifica la sorgente dei dati del servizio ri- chiesto. Dal lato client, la porta è scelta aleatoriamente dal sistema operativo fra le Dynamic and/or Private Ports.

Esistono migliaia di porte (queste sono codificate a 16 bit, vi sono dunque 65536 possibilità). E’ stata messa a punto dallo IANA (Internet Assigned Numbers Authority) un’assegnazione standard delle porte ad alcuni servizi:

• Le porte da 0 a 1023 sono delle porte riservate dette Well Known Ports. Esse sono riservate, con valori di default, a processi di sistema (demoni) o a programmi eseguiti da utenti privilegiati. Un ammini- stratore di rete può tuttavia decidere una diversa assegnazione di tali porte.

• Le porte da 1024 a 49151 sono dette Registered Ports.

• Le porte da 49152 a 655535 sono le Dynamic and/or Private Ports.

Ecco un elenco di alcune porte con i servizi di default ad esse assegnati:

(17)

1.8 La funzione di multiplexaggio 15

1.8 La funzione di multiplexaggio

Il processo che consiste nel poter far transitare su una connessione delle informazioni provenienti da diverse applicazioni viene detta il multiplexaggio.

Allo stesso modo il fatto di mettere in parallelo (quindi ripartire sulle diverse applicazioni) il flusso di dati viene detto il demultiplexaggio.

1.9 Che cos’è un URL?

Un URL (Uniform Resource Locator) è un formato di denominazione universale per designare una risorsa su internet. Si tratta di una stringa di caratteri ASCII stampabili che si scompone in cinque parti:

• Il nome del protocollo: cioè in un certo senso il linguaggio usato per comunicare sulla rete. Il protocollo più diffuso è il protocollo HTTP (HyperText Transfer Protocol), il protocollo che permette di scambiare delle pagine Web di formato HTML. Tuttavia si possono usare numerosi altri protocolli (FTP, News, Mailto, Gopher,. . . )

• ID e password: permettono di specificare i parametri di accesso ad

un server sicuro. Questa opzione è sconsigliata dato che la password è

visibile nell’URL

(18)

Protocollo Password Nome Porta Percorso (facoltativa) del server (default 80)

http:// user:pwd@ labs.fauser.edu :80 /ese/es1.txt

• Il nome del server: si tratta di un nome di dominio del computer che ospita la risorsa richiesta. Da notare che è possibile usare l’indirizzo IP del server, rendendo però l’URL meno leggibile.

• Il numero della porta: si tratta di un numero associato ad un servizio che permette al server di sapere quale tipo di risorsa è richiesta. La porta associata per default al protocollo http è la numero 80. Così, quando il servizio Web del server è associato al numero di porta 80, il numero di porta è facoltativo.

• Il percorso di accesso alla risorsa: questultima parte permette al server di conoscere la posizione della risorsa, cioè in maniera generale la posizione (directory) e il nome del file richiesto

Una URL ha quindi la struttura seguente : I protocolli seguenti possono ad esempio essere attraverso l’URL:

• http, per la consultazione di pagine web

• ftp, per la consultazione di siti FTP

• telnet, per la connessione a un terminale remoto

• mailto, per l’invio di posta elettronica

Il nome del file nell’URL può essere seguito da un punto interrogativo al quale poi seguono delle stringhe nome=valore; si tratta di dati supplementari inviati al server come parametri di un’applicazione (ad esempio uno script php o un CGI). L’URL assomiglierà allora a una stringa di caratteri come questa:

http://it.kioskea.net/forum/index.php3?cat=1page=2

(19)

1.10 Nomi di host 17

1.10 Nomi di host

Ogni computer direttamente connesso a Internet possiede almeno un pro-

prio indirizzo IP. Tuttavia è difficile lavorare con degli indirizzi numerici tipo

194.153.205.26. Alle origini del TCP/IP, dato che le reti erano poco estese e il

numero di computer connessi ad una stessa rete era basso, gli amministratori

di rete crearono dei fili detti tabelle di conversione manuale. Queste tabelle

di conversione manuale erano dei file sequenziali, generalmente chiamati host

o hosts.txt, che associavano, in ogni linea, un indirizzo IP ad un nome, detto

nome dell’host.

(20)
(21)

Capitolo 2

DNS - Domain Name System

Il precedente sistema delle tabelle di conversione necessitava tuttavia del- l’aggiornamento manuale delle tabelle di tutti i computer della rete in caso di aggiunta o modifica di un nome di host. Così, con l’esplosione della di- mensione delle reti, e della loro interconnessione, si è dovuto realizzare un sistema di gestione dei nomi gerarchizzato e più facilmente amministrabile. Il sistema detto Domain Name System (DNS), tradotto Sistema di nome di dominio, è stato messo a punto nel novembre del 1983 da Paul Mockapetris (RFC 882 et RFC 883), poi rivisto nel 1987 negli RFCs 1034 e 1035. Il DNS è stato oggetto di più RFC.

Il DNS e un sistema di database distribuito mirato alla gestione delle informazioni dellinsieme di reti Internet. I dati gestiti dal DNS sono essen- zialmente dei nomi a dominio e gli indirizzi IP delle macchine connesse alla rete con la loro reciproca corrispondenza. Per ogni nome a dominio ci deve essere una corrispondenza nei due sensi: dal nome all’indirizzo (la cosidet- ta risoluzione diretta) e da ogni indirizzo al nome di dominio (risoluzione inversa).

Questo sistema propone:

• uno spazio di nomi gerarchico che permette di garantire l’unicità di un nome in una struttura ad albero, allo stesso modo dei sistemi di file di Unix.

• un sistema di server distribuiti permette di rendere disponibile lo

spazio dei nomi.

(22)

• un sistema di client permette di «risolvere» i nomi dei domini, cioè di interrogare i server per conoscere l’indirizzo IP corrispondente ad un nome.

2.1 Lo spazio dei nomi

La strutturazione del sistema DNS si basa su una struttura ad albero in cui sono definiti dei domini di livello superiore (detti TLD, per Top Level Domains), collegati ad un nodo radice rappresentato da un punto.

Viene detto «nome del dominio» ogni nodo dell’albero. Ogni nodo possiede un’etichetta (in inglese « label ») con una lunghezza massima di 63 caratteri.

L’insieme dei nomi di dominio costituisce quindi un albero rovesciato dove ogni nodo è separato dal seguente da un punto (« . »).

L’estremità di un ramo (foglia) è detta host, e corrisponde ad un ter- minale o un’entità di rete. Il nome dell’host deve essere unico nel dominio considerato o, se esiste, nel sotto-dominio. Ad esempio il server web di un dominio ha quindi generalmente il nome www .

E’ detto indirizzo FQDN (Fully Qualified Domain Name, cioè Nome

di Dominio Totalmente Qualificato) un nome assoluto generato dalla conca-

tenazione delle etichette dei nodi che si incontrano a partire da una foglia

e risalendo verso la radice dell’albero del dominio, separando ogni etichetta

con un punto e aggiungendo un punto finale.

(23)

2.2 I server di nomi 21

La profondità massima dell’albero è di 127 livelli e la lunghezza massi- ma di un nome FQDN è di 255 caratteri. L’indirizzo FQDN permette di individuare inequivocabilmente un host sulla rete. Quindi www.fauser.edu.

rappresenta un indirizzo FQDN.

La parola «dominio» corrisponde formalmente al suffisso di un nome di dominio, cioè l’insieme delle etichette dei nodi di un albero, ad eccezione dell’host. Ad esempio www.fauser.edu è un nome di dominio il cui dominio (suffisso) è fauser.edu.

2.2 I server di nomi

Per ogni dominio deve esistere un server di nomi di domini, detto « server di nomi primario » (primary domain name server), nonché un server di nomi secondario (secondary domaine name server), che permette di sostituirsi al server di nomi primario in caso di indisponibilità.

I server di nome di dominio permettono di stabilire la corrispondenza tra tutti i nomi del dominio e il loro indirizzo IP e sono processi ospitati in un qualsiasi host di Internet (al quale può corrispondere un nome di dominio diverso). Quando si registra un dominio è necessario indicare quali sono il primary ed il secondary DNS e questi devono contenere le opportune confi- gurazioni del dominio che si sta registrando. Un server DNS può essere tale per molti domini.

Ogni server di nomi è dichiarato in un server di nomi di dominio di livello immediatamente superiore, cosa che permette implicitamente una delega di autorità sui domini. Il sistema di nomi è un’architettura distribuita, dove ogni entità è responsabile della gestione del proprio nome di dominio. Non esiste quindi un organismo che abbia il compito di gestire l’insieme dei nomi di domini.

I server corrispondenti ai domini di più alto livello (TLD) sono detti

«server di nomi radice». Ne esistono tredici, ripartiti in tutto il mondo, sotto i nomi « a.root-servers.net » a « m.root-servers.net ».

Un server di nomi definisce delle zone, ogni zona è relativa ad un dominio

sul quale il server ha lautorità. Il sistema di nomi di dominio è trasparente

per l’utente.

(24)

2.3 Risoluzione dei nomi di dominio

Il meccanismo che consiste nel trovare l’indirizzo IP corrispondente al nome di un host è detto « risoluzione di nome di dominio ». L’applica- zione che permette di realizzare questa operazione (generalmente integrata al sistema operativo) è detta « resolver » (è un client).

Ogni computer connesso ad Internet deve conoscere, nella sua configura- zione di rete, almeno due DNS che vengono indicati dal provider. Ogni volta che esso deve accedere, per mezzo di unapplicazione, ad un servizio Internet attraverso un nome di dominio contatta il primo server DNS della sua con- figurazione che si occuperà di ottenere lindirizzo IP corrispondente al nome di dominio richiesto. Se questo ha la registrazione nella sua cache, la invia all’applicazione, in caso contrario scala gerarchicamente la richiesta.

2.4 Come funzionano i DNS?

Root DNS. A monte di tutta la rete ci sono i Root DNS che rappresentano la base di internet. Questi detengono le informazioni relative ai DNS di tutti i domini di primo livello come .com, .net, .org, .it, .fr, .info, ecc. e i riferimenti delle relative Authority che li gestiscono come In- ternic per .com e .net, ISOC per i .org, Italian Registration Authority per .it, e via dicendo.

DNS delle Registration Authority o DNS di primo livello Questi DNS sono sotto la gestione delle varie Registration Authority, possono essere dislocati in diverse parti del mondo e detengono le informazioni relative i dati dei DNS autoritativi per ogni specifico dominio di secondo livello come ad esempio www.prozone.it.

DNS autoritativi Questi sono i DNS che contengono i dati specifici del nome a dominio, rispondono alle richieste per quel dominio e ne forni- scono i record relativi (web, mail, ftp, ecc.). Questi DNS sono gestiti da chi ospita il nome a dominio.

DNS del provider di connessione Questi sono i DNS che ci vengono as-

segnati dal nostro provider di connessione internet e che utilizziamo per

(25)

2.5 Domini di alto livello 23

navigare. Non sono autoritativi in quanto non contengono le informa- zioni ufficiali del nome a dominio che cerchiamo e funzionano in questo modo:

• Interrogano i Root DNS per sapere qual e’ l’Authority che gestisce quel dominio di primo livello.

• Ottenuta questa informazione, interrogano i DNS della Registra- tion Authority competente per sapere quali sono i DNS autorita- tivi per quel determinato dominio.

• A questo punto interrogano i DNS autoritativi che forniscono, per il nome a dominio in questione, lindirizzo IP di destinazione per il tipo di servizio richiesto (http, ftp, pop3, mail, ecc.).

2.5 Domini di alto livello

Esistono due categorie di TLD (Top Level Domain, ossia domini di più alto livello) :

• I domini detti « generici », chiamati gTLD (generic TLD). I gTLD sono dei nomi di domini generici di livello superiore che propon- gono una classificazione secondo il settore di attività. Così ogni gTLD ha le proprie regole di accesso:

 gTLD storici:

- .arpa corrisponde ai terminali derivanti dalla rete origi- nale;

- .com corrispondevano inizialmente alle aziende a voca- zione commerciale. Ormai questo TLD è diventato il

« TLD di default » e l’acquisizione del dominio con questa estensione è possibile anche per i privati.

- .edu corrisponde agli enti educativi;

- .gov corrisponde agli enti governativi;

- .int corrisponde alle organizzazioni internazionali;

- .mil corrisponde agli organismi militari;

(26)

- .net corrispondeva inizialmente agli enti con tratti di re- te. Questo TLD è diventato da qualche anno un TLD corrente. L’acquisizione di domini con questa estensione è possibile anche per i privati.

- .org corrisponde solitamente alle aziende senza scopo di lucro.

 nuovi gTLD introdotti nel novembre 2000 dall’ICANN : - .aero corrisponde all’industria aeronautica;

- .biz( business) corrisponde alle aziende commerciali;

- .museum corrisponde ai musei;

- .name corrisponde a nomi di persone o a nomi di perso- naggi immaginari;

- .info corrisponde agli enti con tratti di informazione;

- .coop corrispondente alle cooperative;

- .pro corrispondente alle professioni liberali.

 gTLD speciali:

- .arpa corrisponde alle infrastrutture di gestione di rete.

L’gTLD arpa serve quindi alla risoluzione inversa dei ter- minali di rete, permettendo di trovare il nome corrispon- dente ad un indirizzo IP.

• I domini detti «nazionali», chiamati ccTLD(country code TLD).

I ccTLD corrispondono ai differenti paesi e i loro nomi corrispon- dono alle abbreviazioni dei nomi dei paesi definite dalla norma ISO 3166. La tabella sottostante riassume l’elenco dei ccTLD.

2.6 BIND

Un DNS è un database distribuito contente delle registrazioni, dette RR (Resource Records), che riguardano i nomi dei domini. Il funzio- namento dei server di nomi è totalmente trasparente per gli utenti.

Il server più conosciuto si chiama BIND (Berkeley Internet Name Do-

main). Si tratta di un software libero disponibili sui sistemi UNIX,

(27)

2.6 BIND 25

sviluppato inizialmente dall’università di Berkeley in California e ormai mantenuto dall’ISC (Internet Systems Consortium).

Per un server DNS primario il principale file di configurazione è /etc/named.conf.

Qui è riportata una sintesi del suo possibile contenuto.

options {

directory "/var/named";

//altre linee };

// definisce i root name server per il dominio . zone "." IN {

type hint;

file "named.ca";

};

zone "localdomain" IN { type master;

file "localdomain.zone";

allow-update { none; };

};

zone "localhost" IN { type master;

file "localhost.zone";

allow-update { none; };

};

zone "0.0.127.in-addr.arpa" IN { type master;

file "named.local";

allow-update { none; };

};

zone "esempio.com" { type master;

file "domini/esempio.com.db";

allow-update { 192.168.0.10; };

(28)

};

zone "0.168.192.in-addr.arpa" { type master;

file "domini/192.168.0.db";

allow-update { 192.168.0.10; };

};

Per un server DNS secondario il principale file di configurazione è sempre /etc/named.conf.

Ciò che cambia rispetto al file del server DNS primario è la parte di definizione delle zone che diventa:

zone "esempio.com" { type slave;

file "slaves/esempio.com.db";

masters { 192.168.0.1; };

};

zone "0.168.192.in-addr.arpa" { type slave;

file "slaves/192.168.0.db";

masters { 192.168.0.1; };

};

I file di zona del DNS secondario sono delle copie, essi infatti vengono ricevuti dal server DNS primario.

2.7 File di zona

I file di zona sono file di testo in cui si specificano le informazioni necessarie per la risoluzione dei nomi di dominio in indirizzi numerici e viceversa. Si crea un file di zona per ogni dominio e per ogni rete gestiti dal server DNS. Negli esempi si considera il dominio esempio.com e la rete 192.168.0.0.

La sintassi dei file delle zone vuole che i commenti inizino con un ;.

(29)

2.7 File di zona 27

2.7.1 File di zona per la risoluzione diretta del do- minio esempio.com

Vediamo la struttura di un file di zona per la risoluzione dei nomi di dominio del dominio esempio.com. Questo file contiene tutti i dati e i record necessari per la configurazione del dominio, del server di posta, degli host e degli alias.

Il file si chiama esempio.com.db

$ORIGIN .

$TTL 172800 ; 2 days

esempio.com IN SOA ns1.esempio.com. root.ns1.esempio.com. ( 2003021512 ; serial

28800 ; refresh (8 hours) 7200 ; retry (2 hours) 604800 ; expire (1 week) 86400 ; minimum (1 day) )

NS ns1.esempio.com.

NS ns2.esempio.com.

; mail server per il dominio

esempio.com. MX 10 mail.esempio.com.

esempio.com. MX 20 mail.nostroisp.com.

$ORIGIN esempio.com.

$TTL 5d

ns1 A 192.168.0.1

ns2 A 192.168.0.10

mac A 192.168.0.2

linux A 192.168.0.3

windows A 192.168.0.4

webftp A 192.168.0.5

mail A 192.168.0.6

(30)

;Aliases

www.esempio.com. CNAME webftp.esempio.com.

ftp.esempio.com. CNAME webftp.esempio.com.

win.esempio.com. CNAME windows.esempio.com.

Con la direttiva $ORIGIN. si indica un nome di dominio che viene auto- maticamente appeso a tutti i nomi del file di zona che non terminano con un punto finale. In questo esempio si può vedere che sono specificate due direttive $ORIGIN. La prima va a completare il nome esempio.com mentre la seconda specifica il completamento per i nomi degli host.

Alcuni la considerano obsoleta ma vale la pena conoscerla e capirne il significato.

La direttiva $TTL172800indica il default time-to-live. Si applica global- mente a tutti i record che precedono qualunque altra direttiva di TTL, che può essere indicata anche per singolo host. Il nameserver specifica questo valore in tutte le risposte per la zona o il dato record indicando per quanto tempo gli altri nameservers possono tenerlo in cache. Se si ha un file di zona che subisce poche modifiche è consigliabile specificare un valore alto anche se è sconsigliabile superare la settimana.

La prima lineaesempio.com IN SOA ns1.esempio.com.

root.ns1.esempio.com.

del record IN SOA è la parte principale del file di zona e serve a in- dicare lo Start of Authority per la zona esempio.com. In questo caso ns1.esempio.com è il nome del server autoritativo per la zona. Se ne può specificare uno solo e non di più. A seguire abbiamo un record che può creare confusione. Indica l’indirizzo del responsabile della gestione per la zona. I nameservers non utilizzaranno mai questa risorsa che è ad uso esclusivo di chi vuole comunicare con il gestore del dominio.

Non si specifica l’indirizzo comune root@ns1. . . ma si deve sostituire

l’@ con il punto, questo perchè la sintassi dei file di zona vuole che il

simbolo @ si usi come il flag $ORIGIN.Può essere specificato un host

differente da quello autoritativo ad esempio root.mail.esempio.com.

(31)

2.7 File di zona 29

I campi chiusi tra le parentesi sono significativi principalmente per gli slave server.

2003021512 ; serial

Indicazione del numero di serie.

Importante aggiornarlo quando si eseguono modifiche al file per far sapere agli slave che si sono effettuati dei

cambiamenti.

28800 ; refresh (8 hours)

Indica agli slave della zona ogni quanto devono verificare se i file sul master sono cambiati. Va prestata attenzione al valore che si dà so- prattutto nel caso sia basso. Si sappia che uno slave effettua una SOA query per ogni zona ad intervalli specificati nel refresh e si tratta di una operazione molto intensiva in termini di utilizzo di CPU

7200 ; retry (2 hours)

Questo campo indica allo slave ogni quanto tempo riprovare a connet- tersi al master in caso un refresh non sia andato a buon fine (potrebbe essere momentaneamente down)

604800 ; expire (1 week)

Con expire indico allo slave dopo quanto tempo deve considerare una data zona non più valida.

86400 ; minimum (1 day)

Questo campo è un TTL. Serve ad indicare per quanto tempo una risposta negativa ad una query va tenuta nella cache dai resolver.

Con i record NS (nameserver) si indicano i nameservers autoritativi per una zona.

Con i record MX si specificano quali host si occupano dell’instradamen-

to della posta per il dominio esempio.com. Il valore numerico che segue

(32)

il record MX indica la priorità. In questo caso se si invia una mail ad un utente che si trova nel dominio esempio.com il client mail cercherà di inviare al server mail.esempio.com per primo. In caso questo fosse troppo occupato o comunque non disponibile il mailer si appoggerebbe a mail.nostroisp.com un server fornito dall’Internet Service Provider di esempio.com. Si possono specificare più server con lo stesso valore di priorità ed è consigliabile utilizzare valore numerici che abbiano un certo margine tra loro, questo solo per fini di comodità nell’ammini- strazione. Ad esempio se in questa zona si decidesse di implementare un nuovo mail server che poniamo sia una macchina molto potente e posta su un link molto veloce basterebbe dargli un valore di 5 o di 15 a seconda delle preferenze ma se si fossero usati valori tipo 1,2,3.. ci si dovrebbe ridefinire il nostro file di zona. Se si vuole definire un server con priorità massima si può utilizzare il valore 0.

Con i record A(A sta per Address) si indicano i record per la risoluzione da nome ad indirizzo in modo da associare ai nomi delle macchine i loro IP.

Con i record CNAME si definiscono gli alias per alcuni host del domi- nio. L’esempio dimostra che è possibile assegnare più nomi ad un host.

In questo caso il server web e ftp sono la stessa macchina raggiungibile sia se la si cerca come www.esempio.com che come ftp.esempio.com.

I valori di TTL, refresh, expire.. possono essere impostati usando come unità il secondo quindi una settimana diventa 608400 secondi. Dalla versione 8 di BIND in poi si possono specificare anche con degli argo- menti quindi 3600 secondi diventano 1h e così via si possono specificare valori di 2h35m, due ore e trentacinque minuti, 1d, un giorno, 2w, due settimane.

2.7.2 File di zona per la risoluzione inversa della rete 192.168.0.0

Il file si chiama 192.168.0.db

(33)

2.7 File di zona 31

$ORIGIN .

$TTL 2d

0.168.192.in-addr.arpa IN SOA ns1.esempio.com.

root.ns1.esempio.com. ( 2003021502 ;serial 28800 ;refresh 7200 ;retry 604800 ;expire 28800 ) ;minimum

IN NS ns1.esempio.com.

$ORIGIN 0.168.192.in-addr.arpa . 1 PTR ns1.esempio.com.

2 PTR mac.esempio.com.

3 PTR linux.esempio.com.

4 PTR windows.esempio.com.

5 PTR webftp.esempio.com.

6 PTR mail.esempio.com.

Il nome in-addr.arpa indica un dominio speciale che tratta gli indirizzi numerici come etichette. La sua rappresentazione è invertita rispetto alla notazione di un indirizzo IP così 192.168.0.1 diventa 1.0.168.192.in- addr.arpa., questo perchè si segue la notazione dei nomi di dominio.

192.168.0.1 = 1.0.168.192.in-addr.arpa. = ns1.esempio.com. Con il

record PTR (Pointer) si indica che si tratta di record per la risoluzione

da indirizzo a nome.

(34)
(35)

Capitolo 3

Reti di calcolatori

Storicamente le prime reti di calcolatori vengono sviluppate negli anni

’70. L’esperimento pilota, finanziato dall’agenzia statunitense DARPA, prende il nome di ARPAnet e nasce ufficialmente nel 1969. A questa esperienza seguono, nel corso degli anni ’70, numerose implementa- zioni di reti di calcolatori, molte delle quali di tipo proprietario, cioè sviluppate da un solo costruttore ed incompatibili con sistemi di altri costruttori. Alcune tra le più note furono DECnet della Digital, SNA di IBM e XNS della Xerox. La caratteristica fondamentale di queste reti è quella di essere sistemi chiusi, ossia sostanzialmente incapaci di comunicare fra loro. Una volta che un utente decide di adottare una di queste reti è legato al relativo produttore, che è l’unico fornitore di apparati compatibili con la rete installata. Questo fenomeno detto di captivity, limita molto le scelte dell’utente, che è costretto a segui- re l’evoluzione e le scelte tecnologiche del tipo di rete che ha scelto.

Al contrario sarebbe auspicabile che queste reti fossero sistemi aperti, ossia tali che qualunque calcolatore fosse in grado di comunicare con qualunque altro indipendentemente dalla sua architettura e dal suo costruttore. Un sistema aperto ha infatti alcuni importanti vantaggi:

• favorire la diffusione delle reti di calcolatori tramite l’interconnes-

sione delle reti esistenti;

(36)

• rendere possibile agli utenti e ai costruttori di reti approvvigionarsi da qualunque produttore, favorendo la concorrenza.

3.1 Modello di comunicazione a strati

Per realizzare reti di calcolatori che siano sistemi aperti è necessario:

• delineare un modello di riferimento per la comunicazione fra cal- colatori che sia base comune di questi sistemi;

• giungere alla definizione di standard universalmente accettati che specifichino in modo preciso le funzioni che sono necessarie per realizzare la comunicazione.

La comunicazione fra calcolatori di tipo diverso è in generale un proble- ma abbastanza complesso. Per semplificare la progettazione dal punto di vista tecnico di una rete di calcolatori risulta quindi conveniente suddividere il problema complessivo in una serie di sottoproblemi ben confinati, chiarendo poi come essi debbano interagire. Questo tipo di approccio è stato sostanzialmente comune a tutte le implementazioni di reti di calcolatori, anche quando queste si presentavano come sistemi chiusi. I vantaggi che si hanno nell’operare un approccio a strati sono:

• riduzione della complessità nella costruzione di architetture pro- tocollari introducendo livelli di astrazione;

• indipendenza per l’operatività e le strutture interne di ogni strato;

ogni strato deve compiere un compito diverso dagli altri e la sua struttura non è vincolata da quella degli altri livelli;

• interazione tramite servizi; i livelli sono disposti a pila, uno sopra l’altro. Ogni livello fornisce servizi al livello superiore e usufrui- sce di servizi dal livello sottostante, comunicando tramite la loro interfaccia;

• facilità di attuare cambiamenti su uno strato senza alterare i re-

stanti; gli strati interagiscono tra loro tramite servizi, essendo

(37)

3.2 Modello ISO-OSI 35

quindi indipendenti tra loro possono essere modificati nel tem- po con nuove tecnologie senza che questo richieda interventi negli altri strati;

Due livelli di pari grado posti su due calcolatori differenti comunicano tra loro tramite protocollo , mentre due livelli adiacenti della stessa macchina comunicano tra loro tramite interfaccia. L’obiettivo di un livello è quello di servire servizi al livello superiore nascondendo a questo il modo in cui i servizi sono realizzati.

3.2 Modello ISO-OSI

Nei primi anni ’80 l’ISO promuove un’azione volta alla definizione di un

modello di riferimento a strati e di una serie di standard per protocolli

e interfacce atti a realizzare dei sistemi aperti. Questo lavoro prende il

nome di Open System Interconnection o OSI.

(38)

L’ISO-OSI (Open System Interconnection) Reference Model ha lo scopo di fornire uno standard per la connessione di sistemi aper- ti e fornire un modello di riferimento rispetto al quale confrontare architetture di rete proprietarie e non.

Il modello OSI non definisce di per sé dei protocolli specifici di comuni- cazione, non può essere considerato quindi come un’architettura di rete.

Il ruolo del modello OSI consiste nello standardizzare la comunicazione tra i terminali affinché i differenti costruttori possano mettere a punto dei prodotti (software o hardware) compatibili. Il numero di livelli che compongono il modello strutturale è stato scelto in modo da associa- re una specifica funzionalità per livello, senza presentare funzionalità ridondanti su più livelli. OSI è costituito da 7 livelli:

1. strato fisico; ha come compito principale effettuare il trasferi- mento fisico delle cifre binarie tra i due sistemi in comunicazione;

definisce il modo in cui di dati sono fisicamente convertiti in segnali digitali sui media di comunicazione (impulsi elettrici, modulazioni della luce, ecc.)

2. strato di collegamento (data link); la sua funzione fondamen- tale è quella di rilevare e recuperare gli errori trasmissivi che po- trebbero essersi verificati durante il trasferimento fisico; definisce l’interfaccia con la scheda di rete e la condivisione del mezzo di trasmissione.

3. strato di rete (network); rende invisibile allo strato superiore il modo in cui sono utilizzate le risorse di rete per la fase di in- stradamento; permette di gestire l’indirizzamento e il routing dei dati, cioè il loro invio tramite la rete.

4. strato di trasporto (transport); fornisce le risorse per il tra- sferimento trasparente di informazioni; è incaricato del trasporto dei dati, della loro divisione in pacchetti e della gestione degli eventuali errori di trasmissione.

5. strato di sessione (session); assicura la possibilità di instaurare

un colloquio tra due sistemi; definisce l’apertura e la distruzione

(39)

3.3 Modello Internet 37

delle sessioni di comunicazione tra i terminali di rete.

6. strato di presentazione (presentation) ; è interessato alla sin- tassi e alla semantica delle informazioni da trasferire; definisce il formato dei dati manipolato dal livello applicativo (loro rap- presentazione, eventualmente loro compressione e loro codifica) indipendentemente dal sistema.

7. strato di applicazione (application); ha lo scopo di fornire ai processi residenti nei due sistemi in comunicazione i mezzi per ac- cedere all’ambiente OSI. Assicura l’interfaccia tra le applicazioni.

Si tratta quindi del livello più vicino agli utenti.

3.3 Modello Internet

La rete Internet si è sviluppata al di fuori dal modello ISO-OSI e pre- senta una struttura solo parzialmente aderente al modello OSI. L’archi- tettura di rete Internet Protocol Suite nota anche come architettura TCP/IP, è una architettura composta da 4 strati:

• strato di accesso alla rete (network access layer); comprende

le funzioni che nel modello OSI sono degli strati fisico, di colle-

(40)

gamento e parte di quello di rete, specifica la forma nella quale i dati devono essere inviati indipendentemente dal tipo di rete usata. Questo livello contiene tutte le specifiche riguardo la tra- smissione di dati su una rete fisica, indipendentemente dal tipo di collegamento tra gli host o tra le reti. Lo standard IEEE802 definisce dei modelli di standardizzazione introducendo lidea che LAN e MAN devono fornire uninterfaccia unificata verso il livel- lo network pur utilizzando tecnologie trasmissive differenziate. I protocolli di questo livello sono: FDDI(Fiber Distributed Data interface), PPP (Point to point Protocol), Ethernet, Token ring.

• strato Internet Protocol (IP); è collocabile nella parte alta dello strato di rete del modello OSI, è di tipo senza connessione e best effort. Questo livello gestisce la nozione di indirizzamento IP. Esso permette l’invio dei datagrammi (pacchetti di dati) verso dei terminali remoti nonché la gestione della loro frammentazione e riassemblaggio alla ricezione. I protocolli di questo livello sono:

IP, ICMP, ARP, RARP.

• strato di trasporto (TCP o UDP ); corrisponde al livello di trasporto del modello OSI, ed è implementato in due versioni, TCP (Transmission Control Protocol) che è un protocollo con con- nessione ed affidabile (assicura il controllo degli errori ), e UDP (User Datagram Protocol) che è senza connessione e non affidabi- le. Il livello trasporto permette alle applicazioni in esecuzione su terminali remoti di comunicare.

• strato di applicazione (application protocol); nell’architettura

Internet non sono previsti gli strati di sessione e di presentazione,

ma solo quello di applicazione; questo strato contiene i protocolli

utilizzati dalle applicazioni residenti sui terminali. I protocolli

utilizzati in questo strato sono FTP (File Transfer Protocol - per

il trasferimento dei file), POP (Post Office Protocol) e SMTP

(Simple Mail Transfer Protocol) per la posta elettronica, Telnet

per il terminale virtuale, HTTP (HyperText Transfer Protocol -

per le pagine Web), DNS (Domain Name Service - per convertire

(41)

3.3 Modello Internet 39

nomi alfanumerici in indirizzi IP), NNTP (News Network Transfer Protocol - trasferimento articoli dei newsgroup)

3.3.1 Cosa significa best effort

La consegna best effort descrive uno scenario di rete in cui non è forni-

ta nessuna garanzia sulla consegna dei dati o sul livello di QoS (Quality

of service), ma, tutte le comunicazioni avvengono con il massimo im-

pegno possibile (best effort per l’appunto). La diretta conseguenza di

questo approccio è rappresentata da un bitrate e un tempo di consegna

variabili in base all’attuale carico della rete. Nonostante la rimozione

di queste caratteristiche di controllo e preallocazione delle risorse possa

sembrare insensata, è in realtà utilissima, infatti, così facendo, la strut-

tura della reti ne risulta semplificata e opera più efficientemente. Ciò

che accade con la posta ordinaria può essere considerato un approc-

cio best effort. La consegna di una lettera da parte del postino non è

garantita e non conosciamo il momento in cui ci sarà consegnata. Il

postino però farà del suo meglio (best effort) per recapitarci la posta

quanto prima, se per caso un giorno le lettere da consegnare siano trop-

pe allora la consegna della nostra lettera potrà subire un ritardo. Le

convenzionali reti telefoniche non sono basate sull’approccio best effort,

(42)

ma utilizzano la commutazione di circuito. Mentre si sta per instaurare una nuova chiamata le risorse vengono preallocate, una volta stabilita la connessione la chiamata non può cadere a causa di un sovraccarico della rete, l’ampiezza di banda è infatti garantita.

3.3.2 Incapsulamento dei dati

Durante una trasmissione, i dati attraversano alcuni degli strati al li- vello del terminale emittente. Ad ogni livello, un’informazione viene aggiunta al pacchetto di dati, si tratta di un’intestazione, un insieme di informazioni che garantisce la trasmissione. A livello del terminale ricevente, al momento del passaggio in ogni livello, l’intestazione viene letta, poi cancellata. Così, alla ricezione, il messaggio è nel suo stato originale.

Ad ogni livello, il pacchetto cambia d’aspetto, dato che gli si aggiunge un’intestazione (header), e quindi le denominazioni cambiano seguen- do i livelli:

• Il pacchetto di dati è detto messaggio al livello Applicazione

• Il messaggio in seguito è incapsulato sotto forma di segmento nel livello Trasporto

• Il segmento, una volta incapsulato, nel livello Internet prende il nome di datagramma

• Infine si parla di trame sul livello Accesso di rete

3.4 I protocolli del livello Internet

3.4.1 Il protocollo IP

Il protocollo IP permette l’elaborazione e il trasporto dei datagrammi

IP (i pacchetti di dati), senza tuttavia assicurarne la consegna questo

perché il protocollo IP tratta i datagrammi IP indipendentemente gli

uni dagli altri.

(43)

3.4 I protocolli del livello Internet 41

I datagrammi

I dati circolano su Internet sotto forma di datagrammi (si parla anche di pacchetti). I datagrammi sono dei dati incapsulati, cioè dei dati ai quali sono state aggiunge delle intestazioni corrispondenti a informazioni sul loro trasporto (come l’indirizzo IP di destinazione). I dati contenuti nei datagrammi sono analizzati (e eventualmente modificati) dai router che permettono il loro transito. Ecco il formato di un datagramma:

Ecco il significato dei campi:

• Version (4 bit). Questi quattro bit, che specificano la versione del protocollo IP (IPv4 o IPv6) del datagramma, consentono al router la corretta interpretazione del datagramma; infatti, versioni diverse di IP hanno differenti formati per i datagrammi.

• IHL Intermediate Header Length (4 bit): si tratta del numero di parole di 32 bit costituenti l’intestazione (il valore minimo è 5).

Un datagramma IPv4 può contenere un numero variabile di opzio-

ni (incluse nellintestazione) e questi 4 bit indicano dove iniziano

(44)

effettivamente i dati del datagramma. La maggior parte dei da- tagrammi IP non contiene opzioni, pertanto il tipico datagramma IP ha unintestazione di 20 byte.

• TOS Type Of Service (8 bit): I bit relativi al tipo di servizio sono stati inclusi nellintestazione IPv4 per distinguere diversi tipi di datagrammi, tale funzionalità è ignorata dalla maggior parte delle odierne implementazioni dello stack TCP/IP. Se il campo contiene il valore 0, indica un servizio standard. Può essere utile ad esempio per distinguere datagrammi in tempo reale (usati nelle applicazioni di telefonia) da altro traffico (ad esempio FTP).

• Total length (16 bit): Rappresenta la lunghezza totale del data- gramma IP, intestazione più dati, misurata in byte. Poiché questo campo è lungo 16 bit, la massima dimensione dei datagrammi IP è 65536 byte, anche se raramente questi superano i 1500. Utilizzato congiuntamente con la dimensione dell’intestazione, questo campo permette di determinare dove si trovano i dati.

• Identification, D, M e Fragment offset (16+3+13 bit): so- no dei campi che permettono la frammentazione dei datagrammi, verranno spiegati in seguito.

• TTL (8bit): Il campo time-to-live (TTL) è stato incluso per as- sicurare che i datagrammi non restino in circolazione per sem- pre nella rete. Questo campo viene decrementato di una unità ogni volta che il datagramma è elaborato da un router, e quando raggiunge 0 il datagramma deve essere eliminato.

• Protocol (8 bit): Questo campo è usato solamente quando il da-

tagramma raggiunge la destinazione finale. Il valore del campo

indica lo specifico protocollo a livello di trasporto al quale vanno

passati i dati del datagramma. Ad esempio, il valore 6 indica che

i dati sono destinati a TCP, mentre il valore 17 designa UDP. Il

numero di protocollo nel datagramma IP ha un ruolo analogo a

quello del campo numero di porta nel segmento a livello di traspor-

to. Il numero di protocollo è lanello di collegamento tra i livelli

(45)

3.4 I protocolli del livello Internet 43

di rete e di trasporto, mentre il numero di porta è il collante che lega i livelli di trasporto e di applicazione.

• Header checksum (16 bit) : campo per la verifica del control- lo di correttezza dellintestazione. Viene calcolato suddividendo lintestazione in campi di 16 bit (word), nel calcolo i 16 bit della checksum stessa devono essere settati a zero, facendone la somma dei complementi a 1 di ogni word, e calcolando il complemento a 1 del risultato ( somma). Il ricevente esegue la somma in comple- mento a uno (questa volta con il checksum all’interno). Se il risul- tato è composto da tutti 1 il datagramma è valido. Normalmente i datagrammi in cui si verifica un errore vengono scartati.

• Source IP address (32 bit): Questo campo rappresenta l’indi- rizzo IP del terminale emettitore, e permette al destinatario di rispondere

• Destination IP address (32 bit): indirizzo IP del destinatario del messaggio.

• Option: eventuali altre opzioni.

• Payload (Dati): Nella maggior parte dei casi, il campo contiene il segmento a livello di trasporto(TCP o UDP) da consegnare alla destinazione.

La frammentazione dei datagrammi IP

La dimensione di un datagramma è al massimo di 65536 byte. Tutta-

via questo valore non è mai raggiunto dato che le reti non hanno una

capacità sufficiente per inviare dei pacchetti così grossi. Inoltre le reti

su Internet usano diverse tecnologie per la trasmissione fisica dei dati

e la dimensione massima effettiva di un datagramma varia a seconda

del tipo di rete. La dimensione massima di una trama è detta MTU

(Maximum Transfer Unit), essa provocherà la frammentazione del da-

tagramma se questo ha una dimensione più grande dell’MTU di rete,

ad esempio per le reti Ethernet lMTU è di 1500 byte mentre per le reti

FDDI è 4470 byte.

(46)

La frammentazione di un datagramma avviene a livello dei router, cioè alla transizione da una rete con un MTU grande verso un’altra con un MTU più piccolo. Se il datagramma è troppo grande per passare sulla rete, il router lo divide, cioè lo scompone in frammenti di dimen- sione minore dell’MTU di rete ed in modo tale che la dimensione del frammento sia un multiplo di 8 byte. In seguito il router invia questi frammenti in modo indipendente e li reincapsula considerando la nuova dimensione. Inoltre il router aggiunge delle informazioni affinché il ter- minale di destinazione possa riassemblare i frammenti nell’ordine giu- sto. Non vi è però nessuna garanzia che i frammenti arrivino nell’ordine corretto dato che sono inviati in maniera individuale e indipendente.

Ogni datagramma ha più campi che permettono il riassemblaggio:

• campo offset di frammento (13 bit): campo che permette di conoscere la posizione iniziale del frammento nel datagramma ini- ziale. L’unità di misura di questo campo è di 8 byte (con il primo frammento di valore 0).

• campo di identificazione (16 bit): numero attribuito ad ogni frammento per permettere il riassemblaggio.

• campo lunghezza totale (16 bit): è ricalcolato per ogni fram- mento.

• campo flags (3 bit):

– Il primo bit non è utilizzato.

– Il secondo bit (detto DF: Don’t Fragment ) indica se il data- gramma può essere frammentato o meno. Se un datagramma ha questo bit posizionato a 1 e il router non può inviarlo sen- za frammentarlo, allora il datagramma sarà rigettato con un messaggio di errore

– L’ultimo bit (detto MF: More Fragments, in italiano Fram-

menti a seguire) se vale uno indica che il datagramma è un

frammento al quale ne seguiranno altri, se vale zero allora il

datagramma è lultimo frammento (quindi il router dovrebbe

(47)

3.4 I protocolli del livello Internet 45

avere tutti i frammenti precedenti) oppure il datagramma non è soggetto ad una frammentazione.

Il riassemblaggio dei frammenti

Una volta che un datagramma è diviso, i frammenti viaggiano in modo separato fino alla destinazione finale dove vengono riassemblati (allo stesso livello IP).

Quando il terminale ricevente riceve il primo frammento avvia un timer, se il tempo finisce prima che siano arrivati tutti i frammenti allora tutti i frammenti già arrivati vengono scartati senza elaborare il datagramma di origine. I frammenti hanno tutti lo stesso campo identificazione del datagramma originale, mentre altri campi, come ad esempio fragment offse e total length, vengono ricalcolati.

La destinazione usa il valore identificazione e l’indirizzo IP di prove- nienza per identificare univocamente il datagramma (o i datagrammi frammenti), pertanto il campo identificazione deve essere generato co- me valore univoco su di un terminale, che può utilizzare a tale scopo un contatore globale in memoria. Il terminale ricevente riceve i frammenti (anche fuori ordine) e deve sapere quando sono arrivati tutti. Il fram- mento con bit MF a zero è l’ultimo, usando i suoi valori di fragment offset e total length può conoscere la lunghezza totale del datagramma d’origine ed esaminado fragment offset e total length di tutti i fram- menti arrivati il ricevente può sapere se è arrivato tutto per ricostruire il datagramma originale.

Il routing IP

Il routing IP è parte integrante del livello IP della serie TCP/IP. Il

routing consiste nell’assicurare l’invio di un datagramma IP attraverso

una rete prendendo il percorso più breve. Questo ruolo è assicurato

da dei terminali detti router, cioè dei terminali collegati (e colleganti)

almeno due reti.

Riferimenti

Documenti correlati

 In ogni caso questa nota di copyright non deve mai essere rimossa e deve essere riportata anche in utilizzi parziali..

(2 punti) Come si chiama la primitiva socket su cui un server resta bloccato in attesa di una richiesta di connessione da parte di un client?. Di che protocollo

Come si intende assegnare gli indirizzi di tipo global aggregatable in modo da ottimizzare il routing grazie alla possibilità di aggregare indirizzi.. Descrivere brevemente le

Caching: per inviare copie degli stessi dati (esempio, pagine HTML, immagini o video) a più destinatari si può sfruttare la capacità della rete di immagazzinarli in una

In secondo luogo, in letteratura, i costrutti di leadership per l’apprendimento oscillano sistematicamente tra un approccio di leader- ship istruzionale (instructional leadership),

Lo switch IP KVM di controllo in remoto a 1 porta SV1108IPPWEU con controllo di alimentazione IP e Virtual Media permette di controllare in remoto un server USB o PS/2 attraverso

Protocolli supportati DDNS, Comelit DNS, DHCP, FTP, HTTP, NTP, ONVIF 2.4, PPPoE, RTCP, RTP, RTSP, SMTP, TCP/IP, UPnP, P2P. Assegnazione IP

nodo media pressione nodo bassa pressione valvola interrata in pozzetto gruppo di riduzione d'utenza. cabina di decompressione e misura gas metano gruppo di