Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Networking at Low Level
Networking at Low Level
Networking@LowLevel
Teoria dei protocolli
Vincenzo Ciaglia, studente di Informatica presso l'Università degli Studi di Salerno, si occupa di
sicurezza informatica, networking e sistemi aperti da molti anni. Ha collaborato con molte riviste
del settore, nazionali e internazionali e attualmente è il Project Leader e Mantainer di Linux
Netwosix, una distribuzione creata per le macchine server e gli specialisti di rete. Si occupa, inoltre,
di programmazione in C e Perl, sistemi operativi e sistemi distribuiti. Esperto di GNU/Linux a tutto
campo, ne segue gli sviluppi da molti anni con entusiasmo e passione cercando sempre di dare il
proprio contributo all'intera comunità Open Source.
Sommario
CAPITOLO 1
Introduzione
1.1 Argomenti trattati
NETWORKING
CAPITOLO 2 – Internet, la regina delle reti
2.1Arpanet e la storia di Internet
2.1.1. Reti a commutazione di pacchetto e di circuito
2.2 NSFNET
2.3 Tipi di rete
2.3.1. Topologia a bus
2.3.2. Topologia ad anello
2.3.3. Topologia a stella
2.3.4. Topologia gerarchica o ad albero
2.3.5. Topologia a maglia
2.4 Il modello OSI (Open System Interconnect)
2.5 Request For Comments (RFC)
2.5.1. Come ottenere le RFCs
2.6 Gli usi di Internet
2.7 Il futuro di Internet: Internet2
Lo scopo principale di questo vulume è quello di diffondere la cultura del networking a basso livello
e fornire una valida alternativa alla consultazione delle RFC ufficiali dei principali protocolli di rete.
Il volume non vorrà riproporre materiale a voi, probabilmente, già noto ma il suo intento principale
è quello di trattare con cura, e a basso livello, tutti i principali protocolli di comunicazione usati da
un computer descrivendone le loro caratteristiche principali e i fini pratici. Il libro analizzerà a
fondo il TCP/IP e la sua suite di protocolli che tutti insieme permettono lo scambio di informazioni
attraverso quella che è diventata la più importante tra le reti : Internet.
Contatti
Hai commenti da fare al libro o vuoi che vengano aggiunte delle modifiche? Puoi scrivermi al mio
indirizzo email e sarò ben felice di scambiare delle chiacchiere con te:
vincenzo.ciaglia@gmail.com
3
2
Internet, la regina delle reti
4
Capitolo 2
2.2 NSFNET
Nata nel 1979, la National Science foundation (NSF) aveva come obiettivo collegare tutte le sedi
universitarie americane in un'unica grande rete. Era necessario allargare il concetto di ARPANET e
cercare di coinvolgere quante più reti possibili. Visto che in quel periodo quel che oggi è divenuta
Internet veniva usata solo per scopi di ricerca, non si pensava minimamente di coinvolgere tutti i
computer del mondo ma soltanto i centri di ricerca e universitari americani. Nacque cosi la National
Science foundation Network, più conosciuta come NSFNET. E' stata la prima grande antenata di
Internet e con le sue tre iniziali backbone collegava quasi tutti i campus universitari americani.
Sfruttava gli stessi principi che avevano reso celebre ARPANET incluso l'uso del TCP/IP come
protocollo di comunicazione, che analizzeremo nel prossimo capitolo. Ha giocato sicuramente un
ruolo chiave nello sviluppo di Internet.
5
Internet, la regina delle reti
6
Capitolo 2
strumento di diagnostica della rete in quanto possiamo riferirci ai led luminosi di quest'ultimo per
capire se ci sono eventuali guasti o malfunzionamenti alla rete.
7
Internet, la regina delle reti
Creata la rete nacque il bisogno di creare un unico standard di comunicazione, un protocollo che
potesse accomunare le caratteristiche hardware e software di tutti i client connessi a essa. E' così che
si ebbero alcune proposte come ad esempio quella avanzata dal CCITT (Comité Consultatif
International Téléphonique et Télégraphique) una organizzazione che oggi si occupa di definire gli
standard delle comunicazioni e della ISO (International Organization for Standardization) che
elaborò un modello multi strato. Esso prese il nome di OSI (Open System Interconnect). Come è
mostrato in figura 1, lo standard OSI è caratterizzato da sette livelli diversi. Esso, a differenza degli
altri proposti, mostrava ampiamente e in modo soddisfacente come le comunicazioni tra due client
potessero avvenire a livello di stack di rete. Bisogna capire anche il perchè e i vantaggi dei sette
livelli. Proviamo ad elencarli:
• Ogni livello svolge una funzione ben definita
• Divide le comunicazioni di rete in piccole parti in modo da evitare e prevenire eventuali errori
• Aiuta maggiormente l'apprendimento e l'insegnamento al funzionamento dello standard
• Permette la comunicazione tra computer che non hanno la stessa configurazione hardware e
software
• Facilita i programmatori nello sviluppo di driver per le interfacce hardware
1. FISICO: usato per la trasmissione di sequenza di bit. E' il livello che opera a livello fisico tra
due o più computer e ne permette, garantisce la comunicazione. Stiamo parlando dei cavi di rete,
dispositivi hardware, connettori. E' inoltre garante del corretto voltaggio, quindi dei flussi di
corrente e il data rates tra cavi di rete.
2. DATA LINK: in questo livello abbiamo il controllo degli errori dei dati trasmessi attraverso il
dispositivo fisico e della sua corretta provenienza. E' questo livello che si
8
Capitolo 2
• Standard
Protocollo ufficiale per Internet. Esso si può dividere in due gruppi:
- IP Protocol che può essere applicato all'intera Internet;
- Network Specific Protocol che generalmente utilizza il protocollo solo in particolari tipi di rete
• Draft Standard
Protocollo che è candidato ad essere usato come protocollo ufficiale per Internet. Tutte i commenti
al protocollo possono essere fatti direttamente alla IAB. Tutti i miglioramenti potranno essere
apportati prima che il protocollo diventi Standard.
• Proposed Standard
Questa categoria comprende tutte le proposte di protocolli che possono essere
9
Internet, la regina delle reti
• Experimental
Un sistema non utilizzerà un protocollo sperimentale fino a quando non si saranno
decisi i suoi principali usi con il suo sviluppatore.
• Informational
Ne fanno parte i protocolli sviluppati da altre organizzazioni per gli standard, o da altri produttori o
che per convenienza della comunità di Internet fanno parte delle RFCs come protocolli informativi.
• Historic
Tutti i protocolli troppo obsoleti od ormai sorpassati fanno parte di questa categoria.
Required
Il protocollo è necessario per qualsiasi sistema.
Recommended
Il protocollo è raccomandato per qualsiasi sistema.
Elective
Il protocollo può essere o non essere implementato nel sistema. Tutto ciò dipende dalla nostra
scelta.
Limited use
Il protocollo può essere necessario in situazioni particolari : protocollo obsoleto, protocollo
sperimentale o dalle funzionalità limitate.
Not recommended
Il protocollo non è raccomandato. Questo può essere dovuto al fatto che il protocollo è obsoleto,
sperimentale o dalle funzionalità limitate.
10
Capitolo 2
non si pensa minimamente di testare le prestazioni della nuova macchina o giocare con un
videogame che richieda una grande capacità in termini di memoria video. L'unica cosa che l'utente
prova è Internet. Non si sa perché ma ha un certo fascino, sarà forse dovuto al fatto che accedere a
delle informazioni poste a migliaia di chilometri di distanza è un ebbrezza tale che è degna di essere
provata prima di qualsiasi altra cosa. Internet è lavoro, cultura, opportunità e voglia di crescere.
Sembra proprio che dall'anno 2000 in poi si sia verificata una rivoluzione incredibile. Prima di
quella data nessuna azienda di qualsiasi calibro avrebbe investito un solo euro per la propria
crescita aziendale su Internet. Fortunatamente questa cognizione è cambiata. Oggi esistono migliaia
di aziende online che investono quasi tutte le loro forze sulla grande rete, si pensi al fatto che oggi,
anno 2004, tutte le aziende piccole, medie, grandi o addirittura singoli negozi e soprattutto
multinazionali hanno il proprio sito web. Internet è lavoro. La figura professionale del webmaster o
del webdesigner, tanto per fare un esempio, è nata solo grazie a Internet, senza tralasciare gli esperti
di sicurezza informatica che senza la rete ora non avrebbero potuto guadagnarsi da vivere. Internet è
cultura. E' una banca dati enorme. Su Internet si trova di tutto, da come si cucina un piatto tipico
giapponese sino ai documenti riguardanti le ultime ricerche scientifiche. Internet è il nostro futuro,
impariamo a usarlo al meglio!
– creare una rete dalle elevate capacità di trasmissione per le società di ricerca e le università;
– creare nuove applicazioni rivoluzionarie per l'intera Internet;
– assicurare una elevatissima forma di trasmissione tra questa nuova innovativa rete ed Internet.
Tutte le reti di Internet2 sono collegate tramite Abilene, una backbone ad alta velocità che assicura
prestazioni super al futuro di Internet. Sono già stati riscontrati grandissimi record di velocità, basti
pensare solo che Abilene assicura una trasmissione di circa 10 gigabits per secondo a tutta la rete.
Non possiamo, dunque, che augurarci il meglio per Internet. Maggiori informazioni su
http://www.internet2.edu/ .
11
3
Nei meandri del TCP/IP
3.1 Introduzione
Sviluppato dalla Defense Advanced Research Projects Agency (DARPA) ai fini di garantire un
unico modello di comunicazione tra due o più reti, la suite di protocolli TCP/IP è diventata oggi lo
standard più diffuso e usato da tutti i computer interconnessi ad Internet. Questo anche grazie al
fatto che è stato implementato nei sistemi operativi UNIX e di Berkley. Anche il TCP/IP è un
protocollo a livelli, così come abbiamo imparato dal modello ISO/OSI. Quest'ultimo però a
differenza del primo ha tre livelli in più ma la sua tecnologia viene interamente inglobata dai quattro
livelli del TCP/IP. All'interno della suite TCP/IP sono contenuti molti protocolli che permettono il
perfetto funzionamento dello scambio di dati tra due computer: icmp,arp,rarp,udp,igmp. Ma i
principali è più importanti rimangono il TCP e l' IP, da qui il nome TCP/IP. Nel prossimo paragrafo
analizzeremo le principali differenze e le eventuali similitudini tra i due modelli.
12
Capitolo 3
Il livello “Network Access” contiene tutte le periferiche hardware ed equivale ai livelli Data Link e
Fisico nel modello ISO/OSI, il livello “Internet” contiene i protocolli ARP,RARP,ICMP,IP ed
equivale al livello Network del modello ISO/OSI, il livello “Trasporto” contiene i protocolli TCP
(Trasmission Control Protocol) e UDP (User Datagram Protocol) ed è equivalente al livello
trasporto del modello ISO/OSI. L'ultimo livello, “Applicazione” , contiene i protocolli FTP,DNS,
SNMP e le applicazioni di remoto ed email e ingloba i livelli Applicazione, Presentazione e
Sessione del modello ISO/OSI. Analizzeremo nei minimi particolari i quattro layer del TCP/IP nel
prossimo paragrafo dove faremo inoltre conoscenza con lo stack e l'header di quest'ultimo.
– Livello Applicazione
Ne fanno parte tutti i protocolli per la gestione degli indirizzamenti e della rete, senza tralasciare i
programmi dediti al file transfer, al remote loging e alle email.
Di seguito tutti i protocolli che ne fanno parte:
HOSTS
E' un file presente su ogni server creato dagli amministratori di sistema. Serve a mantenere traccia
delle macchine comprese nella rete e dei loro relativi nomi di dominio.
13
Nei meandri del TCP/IP
E' un protocollo che fornisce il supporto per il monitoraggio e la gestione dei nostri
devices di rete, della loro implementazione e del loro livello di sicurezza.
Telnet
E' un terminal emulation protocol usato dai clients di una rete per collegarsi ad una macchina
remota o non fisicamente accessibile. E' uno standard ancora molto usato per la gestione e la
configurazione di routers.
Traceroute
E' un programma molto famoso, anch'esso di diagnostica, disponibile su quasi tutti i sistemi simile
al ping ma con molte più informazioni dettagliate. Traceroute è capace di tracciare il percorso di un
pacchetto sulla rete ed è molto usato per la diagnostica di problemi legati ai routers.
Altri protocolli che non sono molto usati su sistemi Linux ma che fanno parte di questo livello sono:
NBTSTAT, NETSTAT, ipconfig/winipcfg.
– Livello Trasporto
Fornisce uno scambio dati di tipo end-to-end. Può supportare più applicazioni contemporaneamente
ed è il principale responsabile dell'affidabilità dei servizi di trasmissione dati e quindi dei protocolli
che stanno al suo interno: UPD e TCP.
14
Capitolo 3
Tratteremo nei minimi particolari questi due protocolli nei paragrafi 3.3 e 3.4.
– Livello Internet
Il livello Internet, come abbiamo già potuto notare nei capitoli addietro corrisponde al livello
Network del modello ISO/OSI. In questo livello sono raggruppati tutti protocolli di indirizzamento
dei pacchetti che viaggiano su un segmento di rete. Ne fanno parte i protocolli : Arp, Rarp, Icmp, Ip.
IP (Internet Protocol)
E' un protocollo connectionless e si occupa soltanto di spedire i pacchetti sul segmento di rete nella
loro direzione seguendo i percorsi ottimali. Non ha un controllo degli errori e non effettua nessuna
verifica sui pacchetti.
Analizzeremo meglio tutti i suddetti protocolli nei paragrafi 3.11, 3.12,3.1, 3.14.
15
Nei meandri del TCP/IP
16
Capitolo 3
Reserved: 6 bits
Riservato per usi futuri. Deve essere settato a 0.
Window: 16 bits
Indica il numero di ottetti che il mittente sta imponendo di accettare.
Checksum: 16 bits
Al suo interno sono presenti le checksums calcolate dei dati e dell'header.
Options: variable
Il segmento TCP più grande contenente tutte le opzioni.
Padding: variable
Si assicura che tutto il segmento sia multiplo di 32 bits. Esso è composto da zeri.
Data
Contiene i dati veri e propri del segmento TCP.
17
Nei meandri del TCP/IP
protocollo connectionless, non necessita di acknowledgments e quindi più pacchetti possono essere
spediti sul segmento di rete in maniera meno sicura ma molto più veloce.
Source Port
Contiene le informazioni relative al numero di porta del mittente.
Destination Port
Contiene le informazioni relative al numero di porta del mittente.
Lenght
E' la lunghezza (in bytes) del datagramma insieme alla lunghezza dell'header.
Checksum
E' un campo di 16 bits e assicura che il pacchetto che sta' per essere inviato non sia danneggiato.
Somiglia molto al metodo usato dalla Checksum dell'header del TCP.
Data
E' un campo di lunghezza variabile e contiene tutti i dati che devono essere trasportati all'interno
del pacchetto UDP.
– Le porte che stanno al di sotto della 255 sono usate per le applicazioni comuni.
– Le porte comprese tra la 255 e la 1023 sono destinate alle aziende per usi commerciali dei loro
prodotti.
– Le porte sopra alla 1023 sono random e non sono regolate da nessuna applicazione.
18
Capitolo 3
19
Nei meandri del TCP/IP
20
Capitolo 3
– Classe A:
Gli indirizzi facenti parti di questa classe utilizzano 7 bits per la parte Network e 24 Bits per la parte
Host. Per questa classe sono disponibili più di 2 milioni di possibili indirizzi.
– Classe B:
Gli indirizzi che fanno parte di questa classe utilizzato 14 per la parte Network e 16 bits per la parte
Host. Per questa classe sono disponibili più di 1 milione di possibili indirizzi.
– Classe C:
Gli indirizzi che fanno parte di questa classe utilizzato 21 per la parte Network e 8 bits per la parte
Host. Per questa classe sono disponibili più di mezzo milione di possibili indirizzi.
– Classe D:
Gli indirizzi che fanno parte di questa classe sono utilizzati per indirizzi di multicasting.
– Classe E:
Gli indirizzi che fanno parte di questa classe sono utilizzati per usi futuri.
21
Nei meandri del TCP/IP
• All bits 0
Quando un host vuole comunicare in rete ma non conosce ancora l'indirizzo ip potrebbe inviare dei
pacchetti con il campo <network address> settato a 0. L'indirizzo IP viene interpretato in questo
modo da tutti gli altri computer della rete. La loro risposta però conterrà l'indirizzo ip completo , e
non settato a 0, che useranno sino alla fine della comunicazione.
– All bits 1
Prendiamo come esempio l'indirizzo IP 148.12.255.255. In questo modo i campi hosts sono definiti
su 255 e ciò con bit 1. Ciò significa che devono essere presi in considerazione tutti gli indirizzi della
classe B.
– Loopback
E' l'indirizzo di classe A 127.0.0.0 definito come loopback network. Tutti gli indirizzi che fanno
parte di questa classe processano i dati che devono essere inviati lungo il segmento di rete all'interno
del sistema.
Quando due host non devono scambiarsi dei dati sono nello stato 1. Uno dei due aspetta, si mette in
ascolto, che qualcuno gli mandi delle richieste. Lo stato 2 è quello iniziale di una connessione. Tcp
A invia un pacchetto SYN (Synchronization) al Tcp B che a sua volta invia la risposta a
quest'ultimo con la richiesta di ACK (Acknowledgment) della connessione e della sua
sincronizzazione. Tcp A , dunque, invia la sua risposta sincronizzando i numeri di sequenza
rispondendo alla richiesta di Acknowledgment di Tcp B. Lo stato 5 è quello finale. Dopo aver
sincronizzato i numeri di sequenza i due host
22
Capitolo 3
I server FTP sono in ascolto sulle porte 20 e 21. Sono usate due connessioni: la prima per fare il
login all'interno del sistema remoto, così come avviene per Telnet, e la seconda per gestire il
trasferimento dei dati. Il computer che instaura una connessione FTP diventa il client della
comunicazione mentre il computer a cui si connette il client è il server. Esso è anche quello su cui
vengono trasferiti e prelevati i dati. In entrambi i lati della comunicazione l'FTP dispone di un
protocol interpreter (PI) e di un data transfer process (DTP) e di una interfaccia utente. Quest'ultima
comunica con il PI che è nello spazio dedicato al controllo della connession. Il protocol interpreter ,
poi, comunica tutte le informazioni necessarie al suo file system. Dall'altro lato del trasferimento il
protocol interpreter deve avviare la connessione dati (data connection). Durante il trasferimento dei
files, la gestione dei dati è fornita dai Data Transfer Processes (DTPs). Dopo che la richiesta di
trasferimento da parte di un utente è completata, il protocol interpreter non deve far altro che
chiudere la connessione. Tutto il principio del funzionamento dell'FTP è mostrato in figura 7.
23
Nei meandri del TCP/IP
Prima di connetterci al nostro host c'è bisogno come in tutti i sistemi predisposti di login remoto di
inserire una username e una password. Esistono anche FTP remoti Anonimi da cui è possibile
prelevare files senza l'immissione di quest'ultime. Questo è quello che si verifica quando
scarichiamo, ad esempio, una immagine ISO delle nostra distribuzione Linux preferita da un
computer remoto.
Quattro sono i comandi usati:
– Open
Selezioniamo l'host remoto e ci logghiamo al suo interno.
– User
Identifica l'user id del computer remoto.
– Pass
L'user viene autentificato
– Site
Invia informazioni all'host sconosciuto che è usato per fornire servizi specifici a quell'host.
Quando la connessione è avvenuta possiamo muoverci facilmente all'interno del sistema remoto
usando il comando cd solo dove abbiamo le autorizzazioni necessarie per farlo.
24
Capitolo 3
Vengono qui usati i comandi per ricevere in output la lista dei file disponibili in una
directory o di tutto il sistema remoto. I comandi usati sono dir o ls a seconda del sistema
operativo usato dal server ftp.
Nel momento in cui l'utente ha la necessità di trasferire dei dati tra due sistemi diversi c'è bisogno di
scegliere il metodo di trasferimento affinché entrambi gli host possano scambiarli in maniera
efficace. Tutto questo è gestito dai comandi:
– mode
indica il modo in cui il file deve essere trasferito: Block o Stream. Quest'ultimo è quello usato in
modo predefinito e dispone di un più efficiente trasferimento.
– tipe
indica il sets di caratteri e quindi di codifica/decodifica di tutto il procedimento di trasferimento
files. Abbiamo i tipe: ASCII,EBCDIC e IMAGE.
– Get
Preleviamo un file dall'host remoto al computer locale.
– Mget
Preleviamo più di un file dall'host remoto al computer locale.
– Put
Trasferiamo un file dal computer locale all'host remoto.
– Mput
Trasferiamo più di un file dal computer locale all'host remoto.
– close
Si disconnette dal'host remoto e termina la sessione FTP.
– exit
Si disconnette dall'host remoto ma non termina la sessione FTP. In questo modo c'è la possibilità di
avviare un'altra sessione su un altro host remoto.
25
Nei meandri del TCP/IP
infatti, tutti gli host con i relativi indirizzi IP e nomi di dominio venivano registrati in un unico file:
hosts.txt. Questo file era gestito dal NIC (Network Information Server) che provvedeva anche a farlo
arrivare a tutti gli host della rete tramite FTP ogni qual volta si
aggiungeva un altro host a quest'ultima. Ovviamente con l'incredibile crescita esponenziale di tutti
gli host connessi a Internet questa soluzione non poteva più essere valida. Il file hosts.txt
cominciava a diventare tremendamente pesante in termini di megabyte ed era praticamente
impossibile gestire la situazione in questo modo. Si pensò dunque di sviluppare il DNS che
permetteva, tramite l'avvio di un applicazione, di accedere e comunicare con tutti gli host connessi a
Internet senza aver bisogno dell'intero database di tutti gli host sul proprio sistema.
Nacque così anche il bisogno di raggruppare tutti gli hosts in grandi gruppi necessari a definire
meglio il servizio che forniva un determinato host e la sua provenienza. Si svilupparono dunque i
three-character top-level names, nient'altro che i nomi di dominio che oggi tutti noi conosciamo.
L'assegnazione dei nomi di dominio è gestito dalla IANA (Internet Assigned Numbers Authority,
http://www.iana.org). Nella tabella 1 sono definiti i principali nomi di dominio.
Al momento della stesura di questo libro sono disponibili anche altri nomi di dominio come .info, .
biz, .sex , .tv, .eu che identificano rispettivamente: siti web a carattere informativo, centrati sul
business, erotico, televisivo. I .eu indicano domini che fanno parte dell'Europa.
1. Un utente formula una richiesta di ricevere il nome dell'host avendo l'indirizzo IP.
2. Colui che deve fare ciò invia una richiesta al nameserver.
3. Il nameserver verifica se la richiesta può essere soddisfatta tramite il suo database o cache e
invia la richiesta. Se questo non può essere fatto invia la richiesta ad un altro
26
Capitolo 3
4. nameserver partendo dal dominio root (quello che alla base di tutti i nomi di dominio).
5. L'utente riceva una risposta alla sua richiesta. Se si è verificato un errore durante il processo,
l'utente non riceverà una risposta.
ID
Identificatore di 16 bit assegnato dal programma che genera tutti i tipi di richieste.
QR
Campo di 1 bit che specifica quando il messaggio è una richiesta (QR=0) o una risposta (QR=1).
OPCODE
Campo di 4 bit che identifica il tipo di richiesta formulata dall'utente. Questo valore è settato da
chi invia la richiesta ed è copiato nella risposta. Questi i possibili valori:
AA (Authoritative Answer)
Campo di 1 bit valido nella risposta. Indica che il nameserver che risponde ha l'autorita' per il
nome di dominio nel messaggio DNS.
TC (TrunCation)
Indica che il messaggio è stato spezzato a cause delle sue grandi dimensioni che non
permettevano il passaggio attraverso il canale di trasmissione.
RD (Recursion Desired)
27
Nei meandri del TCP/IP
Questo bit dovrebbe essere settato nella richiesta e copiato nella risposta. Se settato ad 1 indica
che il DNS desidera che il server dei nomi DNS usi un'interrogazione ricorsiva.
RA (Recursion Available)
Questo campo è settato o cancellato in una risposta e indica che il nameserver supporta le
interrogazioni ricorsive.
Z
Riservato per usi futuri. E' settato a 0 in tutte le richieste e le risposte.
0 Nessun errore.
1 Errore di formato. Il server non è capace di interpretare il messaggio.
2 Errori del server – Il name serveè capace di processare la richiesta a causa di un
errore/problema del server.
3 Errore di nome – Il nome di dominio presente nella richiesta non esiste.
4 Non supportato – Il nameserver non supporta il tipo di richiesta.
5 Rifiutato – Il server si rifiuta di rispondere a causa di politiche di sicurezza.
QDCOUNT campo di 16 bit che definisce il numero di voci nella sezione question.
ANCOUNT campo di 16 bit che specifica il numero di record risorse nella sezione Answer.
NSCOUNT campo di 16 bit che specifica il numero di record risorse del nameserver nella
sezione Authority.
ARCOUNT campo di 16 bit che specifica il numero di record risorse nella sezione Additional
Records.
La sezione Question contiene dati quando un risolutore DNS emette un messaggio di richiesta DNS.
Analizziamo il suo formato.
28
Capitolo 3
QNAME
Nome di dominio rappresentato come una sequenza di labels, dove ogni label è formato da un
ottetto seguito da quel numero di ottetti. Il nome di dominio termina con un un ottetto di lunghezza
0 per il null label del root.
QTYPE
Codice di due ottetti che rappresenta il tipo di richiesta.
QCLASS
Codice di due ottetti che rappresenta la classe di una richiesta. Il campo QCLASS è IN quando è
riferito ad Internet, ad esempio.
TYPE due ottetti contenenti uno dei tipi di codice RR (Resource Record). Questo campo
specifica il significato dei dati all'interno del campo RDATA.
CLASS due ottetti che specificano la classe dei dati nel campo RDATA.
TTL un intero di 32 bit che specifica l'intervallo di tempo che il resource record può essere
contenuto nella cache prima di essere scartato. I valori settati a zero indicano che il resource record
può essere solo usato per la trasmissione che si sta verificando e non dovrebbe essere mantenuto
nella cache.
RDLENGTH intero di 16 bit che specifica la lunghezza dell'ottetto contenuto nel campo
RDATA.
RDATA una stringa di ottetti di lunghezza variabile che descrive il tipo di risorsa. Il formato
di questa informazione varia a seconda del TYPE e CLASS del resource record. Se ad esempio il
TYPE è A e la classe è IN, il campo RDATA è un ottetto che descrive un indirizzo Internet ARPA.
29
Nei meandri del TCP/IP
Version: 4 bits
Questo campo indica la versione dell' header internet. In questo paragrafo analizzare l' Ipv4 mentre
nell'ultimo paragrafo l'Ipv6.
30
Capitolo 3
Delay. Una veloce consegna è importante per i datagrammi con questa indicazione.
Throughput. Un'alta velocità di consegna dei dati è importante per i datagrammi con questa
indicazione.
Affidabilità. Assicura una consegna ad alto livello per i datagrammi con questa indicazione.
Identification: 16 bits
Valore identificativo assegnato dal mittente per aiutare nell'assemblaggio i frammenti di un
datagramma.
Flags: 3 bits
0 1 2
+---+---+---+
| | D | M |
| 0 | F | F |
+---+---+---+
31
Nei meandri del TCP/IP
Protocol: 8 bits
Il campo indica il prossimo livello del protocollo usato nella porzione dati del datagramma internet.
Options: variable
Le opzioni possono apparire o meno nel datagramma. Devono essere implementate da tutti i moduli
ip (host e gateways).
Padding: variable
E' usato per assicurarsi che l'header internet termini entro un limite di 32 bit. Il campo è settato a 0.
Version
(ipv)4 or (ipv)6
IHL
Lunghezza dell'header internet in parole di 32 bit.
Type of Service
0 Echo Reply
3 Destination Unreachable
4 Source Quench
32
Capitolo 3
5 Redirect
8 Echo
11 Time Exceeded
12 Parameter Problem
13 Timestamp
14 Timestamp Reply
15 Information Request
16 Information Reply
Total Length
Lunghezza dell'internet header e dei dati in ottetti.
Time to Live
Time to live in secondi.
Protocol
ICMP = 1
Header Checksum
Indica la checksum del solo header. E' un campo di 16 bit e per comporla , il campo checksum
dovrebbe essere settato a 0. Questa checksum dovrebbe essere sostituita in futuro.
Source Address
Indirizzo del gateway o dell'host che ha composto il messaggio ICMP.
Destination Address
Indirizzo del gateway o dell'host al quale il messaggio ICMP dovrebbe essere mandato.
Campi IP :
Destination Address
La rete o l'indirizzo d'origine dai dati originali del datagramma.
Campi ICMP:
33
Nei meandri del TCP/IP
Type
3
Code
0 = net unreachable;
1 = host unreachable;
2 = protocol unreachable;
3 = port unreachable;
4 = fragmentation needed and DF set;
5 = source route failed.
Checksum
Indica la checksum del solo header. E' un campo di 16 bit e per comporla , il campo checksum
dovrebbe essere settato a 0. Questa checksum dovrebbe essere sostituita in futuro.
Campi IP :
Destination Address
La rete o l'indirizzo d'origine dai dati originali del datagramma.
Campi ICMP:
Type
11
Code
0 = time to live exceeded in transit;
1 = fragment reassembly time exceeded.
Checksum
Indica la checksum del solo header. E' un campo di 16 bit e per comporla , il campo checksum
dovrebbe essere settato a 0. Questa checksum dovrebbe essere sostituita in futuro.
34
Capitolo 3
Campi IP :
Destination Address
La rete o l'indirizzo d'origine dai dati originali del datagramma.
Campi ICMP:
Type
12
Code
0 = il pointer indica l'errore.
Checksum
Indica la checksum del solo header. E' un campo di 16 bit e per comporla , il campo checksum
dovrebbe essere settato a 0. Questa checksum dovrebbe essere sostituita in futuro.
Pointer
Se il codice = 0, identifica l'ottetto dove è stato trovato un errore.
35
Nei meandri del TCP/IP
Campi IP :
Destination Address
La rete o l'indirizzo d'origine dai dati originali del datagramma.
Campi ICMP:
Type
4
Code
0
Checksum
Indica la checksum del solo header. E' un campo di 16 bit e per comporla , il campo checksum
dovrebbe essere settato a 0. Questa checksum dovrebbe essere sostituita in futuro.
Campi IP :
Addresses
L'indirizzo del mittente in un messaggio timestamp sarà il destinatario che risponde a questo. Per
creare una risposta a un messaggio timestamp, gli indirizzi del mittente e del destinatario sono
semplicemente riservati, il codice type cambiato cambiato a 14, e la checksum ricomposta.
Campi IP:
Type
13 for timestamp message;
36
Capitolo 3
Code
0
Checksum
Indica la checksum del solo header. E' un campo di 16 bit e per comporla , il campo checksum
dovrebbe essere settato a 0. Questa checksum dovrebbe essere sostituita in futuro.
Identifier
Se il codice = 0, un identificatore per assistere nell'instradamento del timestamp e delle risposte,
dovrebbe essere zero.
Sequence Number
Se il codice = 0, un identificatore per assistere nell'instradamento del timestamp e delle risposte,
dovrebbe essere zero.
Campi IP:
Addresses
L'indirizzo del mittente in un messaggio timestamp sarà il destinatario che risponde a questo. Per
creare una risposta a un messaggio timestamp, gli indirizzi del mittente e del destinatario sono
semplicemente riservati, il codice type cambiato cambiato a 16, e la checksum ricomposta.
Campi IP:
Type
15 for information request message;
16 for information reply message.
Code
0
Checksum
Indica la checksum del solo header. E' un campo di 16 bit e per comporla , il campo checksum
dovrebbe essere settato a 0. Questa checksum dovrebbe essere sostituita in
37
Nei meandri del TCP/IP
futuro.
Identifier
Se il codice = 0, un identificatore per assistere nelle richieste e nelle risposte di matching,
dovrebbe essere settato a 0.
Sequence Number
Se il codice = 0, un identificatore per assistere nelle richieste e nelle risposte di matching,
dovrebbe essere settato a 0.
38
Capitolo 3
2. NO:
1. Genero un pacchetto ethernet con i seguenti valori:
DESTINATION = Unset
SOURCE = LOCAL MAC
Protocol type = ARP
HRD = local MAC
PRO = IP
HLN = 6
PLN = 4 (se si tratta di IP)
OP = REQUEST (Richiesta)
SHA = local MAC (Richiedente)
SPA = local IP (Richiedente)
THA = (indirizzo hardware di broadcast)
TPA = remote IP
2. Invio un pacchetto Broadcast ARP sul segmento di rete.
39
Nei meandri del TCP/IP
DESTINATION = Unset
SOURCE = LOCAL MAC
Protocol type = ARP
HRD = local MAC
PRO = IP
HLN = 6
PLN = 4 (se si tratta di IP)
OP = REPLY
SHA = local MAC
SPA = local IP
THA = MAC del richiedente
TPA = IP del richiedente
40
Capitolo 3
distribuiti sa cosa sono gli algoritmi di broadcast ma per rendere il libro alla portata di tutti,
spieghiamo il suo funzionamento. Un algoritmo di broadcast funziona nel seguente modo:
supponiamo che il computer A voglia mandare un messaggio al computer C e che il computer C, a
sua volta, voglia mandare questo messaggio al computer D. Il computer A manda il messaggio a
tutti i suoi figli (i computer direttamente collegati ad esso). Nella figura il primo ed unico figlio è
proprio il computer C. Quando quest'ultimo riceve il messaggio dal computer A spedisce lo stesso
messaggio a tutti i suoi figli (computer D). Questa è l'unica configurazione permessa per i server
IRC. Nello spanning tree ogni server funge come nodo centrale per il resto della rete. Passiamo ora
a descrivere i servizi offerti dal protocollo IRC. L'unione di questi servizi permette l'effettiva
comunicazione testuale.
Servizi IRC
– Client Locator
Affinchè due clients possano scambiare messaggi tra di loro è necessario che riescano a localizzarsi
ognuno con gli altri all'interno della rete. Una volta connesso ogni client si identifica sulla rete con
una propria label che sarà poi usata dagli altri clients e servers per localizzarlo. I servers sono
responsabili di mantenere traccia di tutti i label usati sulla rete da ogni client.
– Message Relaying
Ogni comunicazione tra due clients connessi alla rete IRC è fornita attraverso il server(s).
41
Nei meandri del TCP/IP
indirizzamento, ha molti più indirizzi disponibili e dispone di una più semplice modalità di
configurazione degli indirizzi.
Dispone di un nuovi tipi di indirizzo chiamato anycast address , usato per spedire un pacchetto a
qualcuno del gruppo dei nodi.
Terminologia Ipv6
42
Capitolo 3
path MTU - il minimo link MTU di tutti i links presenti in un percorso tra il nodo
d'origine e quello d'arrivo.
Header Ipv6
Payload Length 16-bit -> Lunguezza del payload (carico utile) Ipv6,
ad esempio, il resto del pacchetto che segue questo header
Ipv6, in ottetti.
Hop Limit 8-bit -> Campo decrementato di una unità da ogni nodo che inoltra
il pacchetto. Il pacchetto è scartato se l'Hop Limit è decrementato
a zero.
Source Address 128-bit -> indirizzo del client che ha originato il pacchetto.
43
Nei meandri del TCP/IP
Nell'IPv6, le informazioni opzionali relative ad Internet sono codificate in diversi headers che
potrebbero essere localizzati tra l'header IPV6 e il livello superiore in un pacchetto. Ci sono un
piccolo numero di estensioni headers, ognuna identificata da un diverso valore Next Header. Come
mostrato in figura 14, ogni pacchetto Ipv6 può contenere nessuna, una o più intestazioni header,
ognuna delle quali identificata dal campo Next Header del precedente header.
La caratteristica fondamentale di questa struttura Ipv6 è quella che gli extension headers non sono
esaminati o processati da nessun router nel percorso di inoltro di un pacchetto. Gli extension
headers vengono esaminati nell'ordine con cui compaiono nel pacchetto Ipv6. Se ad esempio un
host vuole eseguire per primo una data operazione diversa dall'ordine del pacchetto non può farlo,
devono essere prima eseguite le operazioni relative agli extension headers precedenti.
Una completa implementazione di IPV6 include anche l'implementazione dei seguenti extension
headers:
1) Hop-by-Hop
2) Options Routing (Type 0)
3) Fragment Destination
4) Options
5) Authentication
6) Encapsulating Security Payload
IPv6 header
Hop-by-Hop Options header
Destination Options header (nota 1)
44
Capitolo 3
Routing header
Fragment header
Authentication header
Encapsulating Security Payload header
Destination Options header (nota 2)
Header di livello superiore
L'header Hop-by-Hop Options è usato per trasportare le informazioni facoltative lungo ogni nodo
attraverso un percorso di smistamento del pacchetto. Ecco il formato del suo header:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Header | Hdr Ext Len | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| |
. .
. Options .
. .
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figura 15: Hop-by-Hop Option Header
Hdr Ext Len campo di 8 bit. Lunghezza dell'header Hop-by-Hop Options in unità
di 8 ottetti. Non include il primo campo di ottetti.
Routing Header
L'header di Routing è usato da una fonte Ipv6 per elencare ono o più nodi intermedi da essere
percorsi sulla strada che porta alla destinazione del pacchetto. Questa funzione è molto simile alle
opzioni Loose Source e Record Route del protocollo Ipv4. L'header Routing è identificato da un
valore Next Header di 43 nel precedente header. Studiamo ora il suo header:
45
Nei meandri del TCP/IP
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Header | Hdr Ext Len | Routing Type | Segments Left |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
. .
. type-specific data .
. .
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figura 16: Routing Header
Hdr Ext Len campo di 8 bit. Lunghezza dell'header Routing in unità di ottetti da 8
bits. Non include il primo campo di ottetti.
Routing Type campo di 8 bit. Identifica una particolare variante dell'header Routing.
Fragment Header
L'header Fragment è usato da una fonte Ipv6 per spedire un pacchetto più grande che potrebbe
adattare nel percorso MTU alla sua destinazione. L'header Fragment è identificato da un valore del
Next Header di 44 nell'immediatamente precedente header. Studiamo il suo header:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Header | Reserved | Fragment Offset |Res|M|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figura 17: Fragment Header
Fragment Offset campo di 13 bit. L'offset, in unità di ottetti da 8 bits. L'offset si basa
46
Capitolo 3
pacchetto originale:
+------------------+--------------+--------------+--//--+----------+
| Unfragmentable | first | second | | last |
| Part | fragment | fragment | .... | fragment |
+------------------+--------------+--------------+--//--+----------+
frammenti di un pacchetto:
+------------------+--------+--------------+
| Unfragmentable |Fragment| first |
| Part | Header | fragment |
+------------------+--------+--------------+
+------------------+--------+--------------+
| Unfragmentable |Fragment| second |
| Part | Header | fragment |
+------------------+--------+--------------+
o
o
o
+------------------+--------+----------+
| Unfragmentable |Fragment| last |
| Part | Header | fragment |
+------------------+--------+----------+
(1)Un parte non frammentabile con la lunghezza dell'header originale cambiato per contenere
solo la lunghezza di questo frammento e il campo Next Header dell'ultimo header della
parte non frammentabile cambiato con il valore 44.
47
Nei meandri del TCP/IP
sono altri.
Il valore di identificazione generato per il pacchetto originale.
Questo campo è usato per trasportare informazioni opzionali che hanno bisogno di essere esaminate
solo da un nodo(i) della destinazione del pacchetto. L'header Destination Options è identificato da
un valore Next Header di 60 nell'immediatamente precedente header. Studiamo il suo header:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Header | Hdr Ext Len | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| |
. .
. Options .
. .
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figura 17: Destination Options Header
Hdr Ext Len campo di 8 bit. Lunghezza dell'header Destination Options in unità di
ottetti da 8 bits. Non include il primo campo di ottetti.
No Next Header
Il valore 59 di questo campo di un header Ipv6 o un altra estensione dell'header indica che non c'è
nessun altro segmento che segue quell'header.
48
Capitolo 3
Gli indirizzi Ipv6 sono campi a 128 bit. Ci sono tre tipi di indirizzi:
Da come si può notare non sono presenti indirizzi di broadcast nell'IPv6 in quanto la loro funzione è
stata sostituita dagli indirizzi multicast.
Fondamentalmente ci sono tre forme canoniche di rappresentazione di un indirizzo Ipv6.
Analizziamole:
1. La forma preferita è x:x:x:x:x:x:x:x, dove ogni ogni x rappresenta il valore esadecimale degli
otto pezzi da 16 bits dell'indirizzo. Facciamo un esempio:
LOLC:BA98:2654:2210:LOLC:BA98:2654:2210
2. Può essere comune per degli indirizzi che contengo lunghe stringhe di 0 bits utilizzare un
metodo semplice ed efficace per comprimere il lungo indirizzo Ipv6. Per rendere facilmente
comprensibile e scrivibile un indirizzo Ipv6 caratterizzato da una lunga serie di 0 bits si è
concepito un metedo per comprimere gli zeri. L'uso di "::" indica gruppi multipli di zeri da 16
bits. I "::" possono apparire solo una volta in un indirizzo.
49
Nei meandri del TCP/IP
:: unspecified addresses
3. Una forma alternativa che alcune volte è più conveniente quando si tratta con indirizzi misti di
nodi Ipv4 e Ipv6 è x:x:x:x:x:x:d.d.d.d, dove le x sono i valori esadecimali dei sei pezzi da 16 bit
dell'indrizizzo Ipv6 e le d sono i lavori decimali dei 4 pezzi da 8 bits dell'indirizzo Ipv4.
Utilizzando sempre il metodo dei "::", possiamo formulare degli esempi.
0:0:0:0:0:0:13.1.68.3
0:0:0:0:0:CCCC:129.144.52.38
::13.1.68.3
::CCCC:129.144.52.38
50
Capitolo 3
Il chairman ICANN ha anche spiegato che oggi quasi due terzi degli
indirizzi Internet disponibili sono gia` utilizzati. Rispetto a questa
situazione, ha sottolineato Cerf, IPv6 consentira` di aumentare questi
numeri di almeno 25mila miliardi di volte. Una dimensione pressoche'
infinita. Per garantire continuita` e mettersi al riparo da eventuali problemi che
dovessero insorgere, ha concluso Cerf, IPv4 continuera` a correre
parallelo a IPv6 per circa 20 anni.
51
4
Protocolli di routing
4.1 Introduzione
Il processo di smistamento delle informazioni da una rete all'altra mediante percorsi di rete specifici
e ben definiti prende il nome di routing. Esso agisce sul livello network (livello di rete) del
modello OSI. I router usano delle metriche per determinare il percorso di rete più conveniente per
un pacchetto. Per svolgere il proprio lavoro un router ha bisogno di conoscere due informazioni: la
tabella di routing che contiene tutti i percorsi di rete e i next-hops, ossia i salti successivi che il
pacchetto deve compiere sul segmento di rete per arrivare a destinazione, e i protocolli di routing
che analizzeremo nel corso di questo capitolo. Ecco le principali metriche usate dai protocolli di
routing:
– Reliability (Affidabilità)
L'affidabilità, riferita agli algoritmi di routing, dei collegamenti di rete. Alcuni collegamenti di rete
potrebbero interrompersi più spesso di altri e dopo questi fallimenti alcuni collegamenti di rete
potrebbero essere riparati più facilmente e velocemente degli altri links.
52
Capitolo 4
1. AS Terminali: hanno un unico collegamento con un altro AS; questo e` un AS che portera`
solo traffico locale e, dal punto di vista dell'instradamento, puo` essere visto come un'estensione
dell'altro AS. Infatti la maggior parte di reti con una singola connessione Internet non
possiedono un unico numero di AS ed i loro indirizzi di rete vengono trattati come facenti parte
del AS a cui sono connesse
3. AS di transito: ha collegamenti con piu` di un AS e lascia che i suoi router siano utilizzati per
portare traffico proveniente da altri AS e diretto verso altri AS (transit traffic). I piu` grandi ISP
sono AS di transito.
53
Protocolli di routing
– Semplicità
L'algoritmo deve essere particolarmente efficiente e non deve procurare un alto dispenso di risorse
per poter funzionare.
– Robustezza
L'algoritmo deve funzionare su qualsiasi rete generica senza dare nessun problema. Esso deve
supportare cambiamenti di topologia e deve avere le seguenti caratteristiche:
1. Fault Detection: l'algoritmo deve essere in grado di accorgersi della presenza di guasti
isolandoli automaticamente.
2. Autostabilizzazione: l'algoritmo deve essere in grado di supportare nuovi percorsi o aggiunte di
nuovi nodi alla rete senza nessun intervento da parte di terzi.
3. Robustezza Bizantina: l'algoritmo sarà in grado di accorgersi di eventuali malfunzionamenti
della rete anche se sembra tutto funzionare alla perfezione. Questo avviene quando nessun nodo
sembra avere dei problemi o è guasto ma quando ci sono delle manomissioni nei percorsi
abituali di routing.
– Ottimizzazione
L'algoritmo deve essere in grado di scegliere la strada migliore da far percorrere ad un pacchetto per
arrivare al nodo di destinazione.
– Stabilità
L'algoritmo deve poter raggiungere uno stato di stabilità nel quale il routing non deve più cambiare
escluso se si verificano dei cambiamenti di topologia o di metriche di routing.
– Equità
L'algoritmo deve essere in grado di garantire una certà equità tra tutti i nodi della rete, tutti
funzionanti e nessuno danneggiato o guasto.
– Statici
In questo tipo di algoritmo le tabelle di routing vengono gestite e modificate dall'amministratore di
rete e non possono cambiare per nessun motivo sino a quando lo stesso amministratore non decide
di apportare delle modifiche.
– Dinamici
Gli algoritmi dinamici sono caratterizzati dal fatto che le tabelle di routing vengono aggiornate
dinamicamente all'aggiunta di nuovi nodi e/o reti e non necessitano dell'intervento
dell'amministratore di rete.
54
Capitolo 4
– Gerarchici
Fanno parte di questa categoria tutti i tipi di routing su grosse reti in grado di dividere il loro carico
di lavoro con più router all'interno della rete.
Descrizione:
I messaggi di acquisizione dei vicini sono usati dai gateway esterni ed interni
per diventare i vicini l'un con l'altro.
55
Protocolli di routing
EGP Version #
Type
Code
Checksum
Autonomous System #
Info
0 Non specificato
1 Fuori dalla spazio massimo della tabella
2 Proibito dall'amministratore
0 Non specificato
1 Caduta
2 Non sono richiesti longer
Identification Number
56
Capitolo 4
Descrizione:
EGP Version #
Type
Code
Checksum
Autonomous System #
Sequence Number
57
Protocolli di routing
Status
0 Nessuno stato
1 Mi sembri raggiungibile
2 Mi sembri irragiungibile a causa del protocollo di raggiungibilità del vicino
3 Mi sembri irragiungibile a causa delle informazioni di raggiungibilità della rete
4 Mi sembri irragiungibile a causa di problemi con la mia interfaccia di rete
NR POLL Message
Descrizione:
EGP Version #
Type
Code
58
Capitolo 4
Checksum
Autonomous System #
Identification Number
IP Source Network
Ogni gateway citato nel messaggio NR avrà un'interfaccia sulla rete che
risiede nel campo network dell' IP. Esso è rappresentato da un byte di
un numero di rete seguito da due bytes di zero per le reti di classe A,
due bytes di un numero di rete seguito da un byte di zero per le reti di
classe B, e tre bytes di un numero di rete per le reti di classe C.
Interval
Descrizione:
59
Protocolli di routing
EGP Version #
Type
Code
Checksum
Autonomous System #
Sequence Number
Error Type
Error Code
Reason
0 - non specificato
1 - Errata checksum EGP
2 - Errato indirizzo ip della sorgente in un messaggio NR Poll o in Risposta
3 - EGP Type e Code non definito
4 - Ricevuto un poll da un non-vicino
60
Capitolo 4
Il Border Gateway Protocol è stato concepito come valida alternativa e affidabile sostituto all'ormai
obsoleto, per l'enorme mole di dati che i routers erano costretti a scambiare, EGP, analizzato nel
paragrafo precedente. EGP , infatti, aveva moltissimi problemi di natura architetturale. Esso:
– fu creato per soddisfare le esigenze di un'unica grande rete , ARPANET, e quindi in maniera
molto specifica,
– riesce a lavorare in modo adeguato soltanto su reti ad albero semplici e non su reti a maglia
complesse (cioè quelle in cui si verificano dei cicli),
– non si adatta velocemente ai cambiamenti che possono essere apportati alla topologia di rete,
– non è per niente sicuro. Infatti tutti i router che utilizzavano EGP erano sempre soggetti ad
attacchi di terzi in quando un maleintenzionato poteva far credere qualsiasi cosa ad un router
EGP e avere completo accesso ai meccanismi di routing e quindi all'intera rete.
Con l'avvento del BGP abbiamo i seguenti miglioramenti:
– consente l'uso del CIDR (Classless Inter Domain Routing). Quest'ultimo elimina i concetti di
indirizzi di classe A,B e C. Ogni indirizzo è considerato come un indirizzo che contiene una
parte host e una parte rete. Non esiste una sottorete in base ai primi bit dell'indirizzo. Il CIDR
supporta inoltre l'aggregazione dei percorsi. Un singolo percorso può rappresentare lo spazio di
indirizzamento di migliaia di percorsi effettivi. L'uso di una singola voce di routing per
rappresentare varie reti può aiutare a rendere le tabelle di routing, base di Internet, più piccole e
quindi più efficienti.
– I router BGP appartenenti ad Autonomous Systems si scambiano informazioni mediande l'uso
del TCP sulla porta 179. In questo modo abbiamo connessioni più affidabili e un minimo
controllo degli errori ,
– BGP è un protocollo path vector:
– risolve i problemi di ciclicità di EGP,
– vengono elencati tutti gli AS da percorrere per arrivare da una sorgente a una destinazione.
61
Protocolli di routing
Marker (identificatore):
Length (lunghezza):
Type (tipo):
1 – OPEN (aperto)
2 – UPDATE (aggiornamento)
3 – NOTIFICATION (notifica)
4 – KEEPALIVE (resta in vita)
Dopo che la connessione è stata stabilita utilizzato la porta TCP 179 citata nel paragrafo introduttivo
al BGP, il primo messaggio mandato da entrambi i lati della connessione è un messaggio OPEN o di
apertura. Se il messaggio OPEN è accettabile, un messaggio keepalive (resta in vita) è mandato
indietro. Una volta che l'apertura è stata confermata, i messaggi UPDATE, KEEPALIVE e
NOTIFICATION possono essere scambiati.
62
Capitolo 4
Version (versione):
My Autonomous System:
Optional Parameters:
63
Protocolli di routing
0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...
| Parm. Type | Parm. Length | Parameter Value (variable)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...
Authentication Code:
Authentication Data:
64
Capitolo 4
I messaggi UPDATE sono usati per traferire informazioni di routing tra nodi BGP. L'informazione
contenuta nel pacchetto UPDATE può essere usata per costruire un grafico descrivendo le relazioni
e i collegamenti che ci sono tra i vari Autonomous Systems.
+---------------------------+
| Length (1 octet) |
+---------------------------+
| Prefix (variable) |
+---------------------------+
a) Length:
Indica la lunghezza in bits del prefisso dell'indirizzo IP.
Una lunghezza zero indica un prefisso che uguaglia tutti gli
indirizzi IP.
b) Prefix:
Il campo Prefix contiene i prefissi degli indirizzi IP.
65
Protocolli di routing
Questo campo a lunghezza variabile contiene una lista di tutti i prefissi degli
indirizzi IP. La lunghezza in ottetti del Network Layer Reachability non è codificata
esplicitamente ma può essere calcolata come:
BGP non usa nessun protocollo di trasporto e meccanismi keep-alive offerti dal TCP per
determinare se un nodo è raggiungibile o meno. Vengono però scambiati messaggi Keepalive fra
router BGP vicini a intervalli più frequenti rispetto a quelli imposti dall'Hold Time in modo da
assicurare che i tempi di sospensione (hold-time) non scadano. I messaggi keepalive vengono
spesso scambiati a intervalli 1/3 dell'hold time. Un messaggio keepalive contiene solo informazioni
relative all'header BGP.
Un messaggio di notifica è spedito quando viene rilevato un errore. La connessione BGP è chiusa
immediatamente dopo averla instaurata.
Oltre all'header BGP i messaggi di notifica contengono anche i seguenti campi:
66
Capitolo 4
Error Code:
Error subcode:
Data:
Il Routing Information Protocol e' spesso implementato con il pacchetto routed distribuito con i
software di Berkley versione 4.3. Tuttavia ci sono moltissimi altri pacchetti che utilizzano
l'implementazione del RIP e per questo motivo cercheremo di chiarire brevemente il suo
funzionamento, tralasciando le varie versioni di software che lo implementano. I pacchetti RIP sono
trasmessi all'interno di una rete attraverso datagrammi User Datagram Protocol (UDP), trasformati e
trasferiti successivamente in datagrammi IP. Il RIP invia e riceve datagrammi UDP attraverso la
porta UDP 250. I datagrammi RIP sono generalmente spediti attraverso un processo di broadcast a
tutti i segmenti di rete. Sono specificamente indirizzati a tutti gli host della rete, seguendo la
modalità point-to-point e attraverso le reti multi accesso che non utilizzano broadcast, usando
l'indirizzo IP del router. I routers generalmente usano il RIP nella modalità active mode cioè
scambiando le loro tabelle vector distance e aggiornandole tenendo conto di quelle dei vicini. I nodi
finali, poi, sono messi in modalità passive o silent mode e fanno lo stesso procedimento di quelli
posti in active mode senza però scambiarsi le tabelle.
Il RIP utilizza due tipi di pacchetti: request (richiesta) e response (risposta)
68
Capitolo 4
Un pacchetto di tipo request viene spedito da un router per chiedere al vicino o di spedire una parte
della sua tabella distance vector (se il pacchetto ha gia' una destinazione) oppure tutta la tabella (se
il pacchetto non ha una destinazione e bisogna assegnarla).
Un pacchetto di tipo response viene spedito da un router per annunciare la sua tabella distance
vector seguendo queste modalità:
– ogni 30 secondi;
– in risposta a un pacchetto di richiesta (response to request);
– quando la tabello distance vector cambia.
Le due modalità, attiva e passiva, ricevono insieme tutti i pacchetti response e aggiornano le loro
tabelle distance vector contemporaneamente.
Ogni datagramma contiene un comando, un version number e un possibile argomento. Ecco la lista
di alcuni comandi:
3 - traceon Messaggio obsoleto che nella maggior parte dei casi viene
ignorato.
4 - traceoff Messaggio obsoleto che nella maggior parte dei casi viene
ignorato.
69
Protocolli di routing
propri usi. Se ci saranno nuovi comandi da aggiungere, essi devono essere ordinati in modo
sequenziali, dovrebbero, dunque, iniziare con il valore 6. I messaggi che contengono questo
camando potrebbero tranquillamente essere ignorati dalle implementazioni che scelgono di non
rispondere a questo tipo di comandi.
Per la richiesta e la risposta, la restante parte del datagramma contiene una lista di destinazioni con
le informazioni su ognuno di esse. Ogni voce in questa lista contiene una destinazione di un host o
di una intera rete o una metrica per quest'ultima.
– Il RIP può essere usato solo su reti che non hanno un numero maggiore a 15 hops (salti) per non
essere esposti ai tanti problemi implementativi del protocollo.
– Il protocollo ricorre al metodo del conteggio all'infinito per risolvere alcuni problemi di routing.
Se un sistema ha molte reti e si arriva ad avere un problema del genere il conteggio all'infinito
può creare tantissimi problemi a livello di banda utilizzata e di risorse hardware.
– Il protocollo ricorre a delle metriche prefissate per definire i propri percorsi di routing. Questa
non è assolutamente una buona cosa infatti nel caso in cui sorga il problema di cambiare in
tempo reale un percorso il protocollo non è in grado di farlo. In questo modo avremo ulteriore
consumo di tempo-banda e soprattutto di affidabilità e professionalità dei nostri servizi.
– Maschere di sottorete: nel RIPv2 gli avvisi contengono maschere di sottorete per ogni indirizzo
di rete. In questo modo ogni amministratore di rete può implementare maschere di sottorete a
lunghezza variabile e il CIDR nelle loro reti.
– Autenticazione: tutti i percorsi che utilizzano il RIPv2 sono provvisti di una password affinchè i
percorsi di routing vengano accettati soltanto dai router preferiti della rete. Se un pacchetto RIP
contine una password che non corrisponde a quella preimpostata, il percorso non viene accettato
e il pacchetto scartato.
70
Capitolo 4
– Annunci multicast: invece di usare i poco efficienti annunci con broadcast, il RIPv2 usa
l'indirizzo di multicast 224.0.0.9 per l'invio dei messaggi di routing.
– Tag dei percorsi: questi permettono di distinguere i percorsi RIP interni da quelli appresi da
altri protocolli gateway interni o esterni. I tag dei percorsi possono venire configurati per
distinguere l'origine dei percorsi esterni.
L'Open Shortest Path First (OSPF) è un protocollo di routing del tipo link-state. E' stato creato per
lavorare internamente ad un singolo Autonomous System. Ogni router OSPF gestiste un identico
database che descrive la topologia dell'Autonomous System. Da questo database, una tabella di
routing viene calcolata costruendo il percorso di tipo "shortest-path" cioè seguendo il percorso più
corto per arrivare a destinazione. OSPF fornisce anche il supporto per i percorsi multipli. Esso
indirizza i pacchetti del tipo IP solamente sull'indirizzo IP di destinazione trovato nell'header del
pacchetto IP. I pacchetti, poi, sono indirizzati così come sono (as is). Non sono incapsulati negli
headers di altri protocolli quando arrivano all'Autonomous System. OSPF è un protocollo del tipo
"routing protocol". Riconosce velocemente qualsiasi cambiamento di topologia nell'AS e calcola il
nuovo percorso dopo un periodo di convergenza. Questo periodo di convergenza è breve e necessita
soltanto di una piccolissima parte del traffico di routing.
L'algoritmo SPF
Il protocollo di routing Shortest Path First (SPF) sta' alla base di ogni operazione di quello OSPF. E'
proprio per questo motivo che ne parliamo. Quando un router SPF è in funzione, inizializza le
proprie strutture dati riferite al protocollo di routing e aspetta per avere delle informazioni dai
protocolli di livello inferiore che la sua interfaccia sia funzionale. Quando un router si assicura che
la sua interfaccia è in funzione, usa il protocollo OSPF e più precisamente la funzione HELLO per
acquisire dei vicini. Il router manda un pacchetto di tipo HELLO ai suoi vicini e riceve i loro.
Per aiutare ulteriormente nell'acquisizione dei vicini, i pacchetti Hello sono usati anche come
indicatori keepalives per far conoscere ai vari routers che gli altri sono ancora funzionali.
Per quanto riguarda le reti che supportano più di due routers, il messaggio Hello elegge un router
designato per definire i vari percorsi di rete e un altro per i backup di quest'ultimi. I routers
designati permettono una riduzione del traffico di rete e la diminuzione della grandezza del database
che contiene le varie topologie di rete.
Quando i database di due o più router vicini sono sincronizzati, i routers vengono detti adiacenti.
Sulle reti multiaccesso, il router designato determina quali routers dovrebbero diventare adiacenti. I
router adiacenti controllano la distribuzione dei pacchetti che sono spediti e ricevuti soltanto su
quest'ultimi. Periodicamente tutti i routers si scambiano dei pacchetti per ricevere delle informazioni
sulle condizioni di ognuno.
71
Protocolli di routing
Ogni pacchetto OSPF comincia con un header comune di 24 byte. Questo header contiene tutte le
informazioni necessarie per determinare tutto ciò che il pacchetto dovrebbe accettare per le
operazioni future. La figura 9 mostra come è composta l'header di un qualsiasi messaggio OSPF.
Passiamo ora a spiegarne ogni campo.
Version #
Indica la versione del protocollo. Oggi siamo arrivati alla versione 2 del protocollo,
quindi il valore sarà 2.
Type
Indica i vari tipi di pacchetti OSPF presenti.
Tipo Descrizione
________________________________
1 Hello
2 Database Description
3 Link State Request
4 Link State Update
5 Link State Acknowledgment
Packet length
Router ID
Questo campo indica il Router ID del mittente del pacchetto. Nel protocollo OSPF, il
mittente e il destinatario di un pacchetto del protocollo di routing sono i due finali di
un'adiacenza.
72
Capitolo 4
Area ID
Checksum
AuType
Identifica il tipo di autenticazione che deve essere usato per il pacchetto.
Authentication
I pacchetti HELLO sono pacchetti OSPF del tipo 1. Questi pacchetti sono spediti periodicamente su
tutte le interfacce per stabilire e mantenere i rapporti con il vicino. Inoltre, i pacchetti Hello sono
multicast su quelle reti fisiche avendo una capacità di multicast o broadcast e abilitando il
riconoscimento dinamico dei router vicini.
Tutti i router connessi ad una rete comune devono accettare alcuni parametri (Network
73
Protocolli di routing
mask, HelloInterval and RouterDeadInterval). Questi parametri sono incluso nei pacchetti Hello,
così che le differenze possono inibire la formazione di relazioni tra vicini.
Network mask
Options
HelloInterval
Indica il numero di secondi tra i pacchetti Hello del router, l'intervallo tra un
pacchetto e l'altro.
Rtr Pri
Indica la priorità del router. Viene usato nell'elezione del Designated Router
(quello di backup). Se è settato a 0, il router non potrà essere eletto come un Designated Router.
RouterDeadInterval
Designated Router
Indica l'identità del Designated Router per questa rete, secondo il router principale.
Il Designated Router è identificato qui dall' indirizzo IP della sua interfaccia sulla rete. Settato sul
valore 0.0.0.0. se non ci sono Designated Router.
Indica l'identità del router di backup (Backup Designated Router) per questa rete,
secondo il router principale. Il router di backup è identificato qui dall' indirizzo IP della sua
interfaccia sulla rete. Settato sul valore 0.0.0.0. se non ci sono Backup Designated Router.
Neighbor
Indica il Router ID di ogni router dai quali i pacchetti Hello sono stato visti
recentemente sulla rete. Recentamente significa negli ultimi secondi definiti nel campo
RouterDeadInterval.
74