• Non ci sono risultati.

Reti di comunicazione ed internet (modulo 2)

N/A
N/A
Protected

Academic year: 2021

Condividi "Reti di comunicazione ed internet (modulo 2)"

Copied!
31
0
0

Testo completo

(1)

Reti di comunicazione ed internet (modulo 2)

Raaele Daniele Facendola

January 26, 2012

(2)

Indice

I Interconnessione di LAN 4

1 Livello di interconnessione 4

2 Bridge 5

3 Spanning Tree (STP) 6

4 Virtual LAN 7

II Protocollo IP 8

5 Strato di rete 9

5.1 Servizi forniti . . . 9

6 Router 10 7 Indirizzi IP 11 7.1 Classfull addressing . . . 11

7.1.1 Indirizzi speciali . . . 11

7.1.2 Indirizzi privati . . . 11

7.1.3 Netmask . . . 11

7.1.4 Tabella di routing ed inoltro dei pacchetti . . . 12

7.1.5 Subnetting . . . 12

7.1.6 Supernetting . . . 12

7.2 Classless inter-domain routing (CIDR) . . . 13

7.3 NAT - Network Address Translation . . . 13

7.4 NAPT - Network Address Port Translation . . . 13

8 Protocollo IP 14 9 Protocolli di controllo 16 9.1 ICMP - Internet Control Message Protocol . . . 16

9.2 ARP - Address Resolution Protocol . . . 16

9.3 RARP - Reverse ARP . . . 16

9.4 DHCP - Dynamic Host Conguration Protocol . . . 16

10 Controllo di usso e di congestione 17 10.1 Controllo di usso con leaky bucket . . . 17

10.2 Controllo di usso con token bucket . . . 17

III Protocolli TCP / UDP 18

11 Architettura Client-Server 19 12 Protocollo UDP 20 13 Protocollo TCP 21 13.1 Setup della connessione . . . 21

13.2 Rilascio della connessione . . . 22

13.3 Controllo di usso . . . 22

13.4 Speciche TCP . . . 22

13.5 Meccanismi di trasmissione . . . 23

13.6 Controllo di congestione . . . 24

(3)

IV Algoritmi di instradamento 25

14 IP static routing 26

15 RIP - Routing information protocol 27

15.1 Algoritmo di Bellman-Ford . . . 27

16 OSPF - Open shortest path rst 28

16.1 Algoritmo di Dijkstra . . . 28

17 BGP - Border gateway protocol 29

V Protocolli applicativi 30

18 HTTP - HyperText transfer protocol 30

18.1 Proxy . . . 30 18.2 Cookie . . . 30 18.3 HTML - HyperText markup language . . . 31

19 FTP - File transfer protocol 31

20 SMTP - Simple mail transfer protocol 31

21 TELNET - Terminal Network 31

22 DNS - Domain Name Sytem 31

(4)

Parte I

Interconnessione di LAN

1 Livello di interconnessione

I dispositivi di reti quali bridge, router e gateway operano a livelli diversi dello stack protocollare per interconnettere tra loro reti di diversa tipologia, tecnologia o architettura.

Livello Dispositivo 7 − Applicazione Gateway 6 − P resentazione

5 − Sessione 4 − T rasporto

3 − Rete Router

2 − Data Link Bridge (Switch) 1 − F isico Repeater (Hub)

ˆ I gateway connettono tra loro reti con architettura diversa

ˆ I router sfruttano algoritmi di instradamento sosticati per interconnettere reti a livello geograco. In generale esaminano l'intestazione di livello 3 e la modicano (ad esempio decrementando il Time To Live, TTL)

ˆ I bridge sfruttano algoritmi di instradamento molto semplici per interconnettere reti a livello locale. Inoltre separano i domini di collisione (le collisioni si vericano solo tra dispositivi appartenenti ad uno stesso dominio di collisione CSMA\CD ma mai tra due dispositivi in due domini diversi) ma non quelli di broadcast (i pacchetti di broadcast vengono diusi sia nel dominio cui appartiene il dispositivo e sia a tutti gli altri attraverso il bridge). Svolgono funzioni di ltraggio.

ˆ I repeater si limitano ad amplicare e rigenerare il segnale senza dividere nè i domini di collisione nè quelli di broadcast interconnettendo tra loro due o più spezzoni di rete. Eventualmente si occupano della temporizzazione dei segnali o delle funzioni di test.

In generale un qualsiasi dispositivo di internetworking di livello n basa i propri algoritmi di instradamento sull'header di livello n (può anche modicarlo leggermente), è in grado di stabilire comunicazioni di livello n-1 e ne può ricostruire gli header su tutte le interfacce d'uscita.

(5)

2 Bridge

I bridge usati nell'ambito ethernet sono detti transparent bridge in quanto i dispositivi comunicanti mediante essi sono ignari della loro presenza. I bridge sfruttano un processo di backward learning per popolare le proprie tabelle di inserimento (memorizzate in una RAM interna) e funzionano su topologie ad albero (altre topologie vengono ricondotte a quest'ultima mediante l'algoritmo di spanning treeproblemi). Le funzioni di ltraggio dei bridge si limitano alla ricezione delle trame, al loro processing ed eventualmente alla loro trasmissione.

Le tabelle di inoltro dei bridge possiedono entry statiche (che non variano nel tempo) ed entry dinamiche che devono essere aggiornate tramite un meccanismo di routing isolato.

Le entry sono della forma: [Porta][MAC Address][Ageing Time].

L'algoritmo alla base della popolazione delle tabelle di inoltro è il seguente:

Per ciascuna entry dinamica viene memorizzato anche un valore di ageing time che viene incrementato perio- dicamente: quando la tabella di instradamento ha raggiunto la sua capacità massima la entry più vecchia viene rimossa.

(6)

3 Spanning Tree (STP)

Il problema principale dei bridge nasce quando per qualche motivo si vengono a creare dei loop all'interno della rete:

in questo caso una trama di broadcast circolerebbe per sempre nella rete, anche ad utilità esaurita. Per ovviare a questo problema noto come broadcast storm, qualsiasi tipologia di rete viene ricondotta ad un albero mediante l'algoritmo dello spanning tree al quale ciascun bridge nella rete partecipa.

Le trame scambiate tra i vari bridge (BPDU) sono della forma seguente:

Ad ogni link all'interno della rete viene associato un costo che è inversamente proporzionale alla capacità del link, mentre ad ogni router viene associata una priorità (Bridge identier, valore minore = priorità maggiore).

Il meccanismo opera periodicamente (circa ogni secondo) seguendo i seguenti passi

ˆ Root bridge selection: All'inizio dell'algoritmo ciascun bridge pensa di essere la radice, a questo punto essi inviano a tutti gli altri una BPDU in cui dichiarano il proprio ID: se un bridge riceve una BPDU appartenente ad un bridge con ID inferiore (priorità maggiore) allora sovrascrive il vecchio identicativo della radice con il nuovo valore. Alla ne del procedimento tutti i bridge conoscono la vera identità della radice.

ˆ Root port selection: A questo punto, tutti i bridge che non siano la radice determinano la cosiddetta root port: la porta che mette in comunicazione il bridge con la radice attraverso il percorso a costo minimo (che viene memorizzato all'interno del campo root path cost).

ˆ Designated/Blocking port selection: Ciascun bridge ammette un percorso minimo che lo collega diretta- mente alla radice: tutte le porte attraversate mediante questi (anche quelle della radice stessa) vengono elette designated port. Per tutte le altre porte che non siano nè root port nè designated port si valuta link a cui sono connesse: delle porte appartenenti ai bridge ai capi del link viene eletta designated quella appartenente al bridge con root path cost inferiore, viene eletta blocking l'altra.

Tutte le porte designated si pongono in stato di forwarding (consentono al traco di uscire attraverso di esse), mentre quelle in stato di blocking lo impediscono (ma ammettono del traco in ingresso).

(7)

4 Virtual LAN

Una LAN virtuale permette di dividere i domini di broadcast da altre LAN virtuali indipendentemente dalla congurazione sica della LAN (reale).

Per far ciò a ciascun dispositivo connesso ad un bridge viene associato un ID relativo alla propria VLAN di appartenenza. Il bridge a questo punto usa 4 byte aggiuntivi nella trama per identicare ciascun gruppo e regolare di conseguenza l'inoltro. Il meccanismo è implementato via software (all'interno dei bridge) e consente sia a pc situati su due domini di collisione diversi di appartenere alla medesima VLAN e sia di separare l'insieme dei dispositivi connessi ad un singolo bridge in più gruppi invisibili li uni agli altri. Per connettere dispositivi appartenenti a VLAN diverse occorre un dispositivo di internetworking di livello 3 (router).

(8)

Parte II

Protocollo IP

La connettività dei terminali è fornita da entità chiamate Internet Service Providers o ISP, i quali sono collegati tra loro e talvolta sono suddivisi seguendo determinate gerarchie.

ˆ Tier 1 ISPs: Sono i provider di livello più alto, ciascuno di essi è collegato a tutti gli altri ed hanno la stessa importanza (hanno una copertura nazionale o internazionale).

ˆ Tier 2 ISPs: Sono ISP più piccoli a copertura regionale ed acquistano il potere di fornire la conettività dai tier 1 ISP. ISP di livello 2 possono essere connessi direttamente tra loro in maniera privata.

ˆ Tier 3 ISPs e local ISPs: acquistano la connettività dai livelli più alti e la forniscono direttamente ai privati. Ci si riferisce a loro come last hop network.

La parte di rete IP gestita da un'organizzazione è chiamata autonomous system (AS): ad esempio gli ISP sono degli AS. I router all'interno degli autonomous system sono detti interior gateway, mentre quelli usati come collegamento con gli altri AS sono detti exterior gateway.

Per i privati l'accesso ad internet è garantito mediante la linea ADSL (asymmetric digital subscriber line) o attraverso la rete cellulare (GPRS\EDGE, UMTS, HSDPA\HSUPA).

(9)

5 Strato di rete

Le funzioni fondamentali dello strato di rete sono:

ˆ Instradamento dei pacchetti

ˆ Controllo di usso e congestione

ˆ Intercooperazione di reti diverse

5.1 Servizi forniti

I servizi forniti dallo strato di rete sono tre:

ˆ Servizio di circuito virtuale: Vi è una fase iniziale detta di segnalazione in cui si instaura il circuito in cui i dispositivi intermedi si predispongono all'inoltro dei pacchetti mediante un determinato percorso (con l'ausilio di tabelle di inoltro). Le unità informative (pacchetti) vengono quindi inviate seguono tutte il medesimo percorso in ordine e giungono come tali a destinazione. Al termine della comunicazione vi è la fase di rilascio per liberare le entry dei dispositivi intermedi. Il servizio è connection-oriented.

ˆ Servizio di circuito virtuale permanente: analogo al circuito virtuale solo che la fase di instaurazione e rilascio sono attuate da operatori e le tabelle di inoltro sono popolate manualmente.

ˆ Servizio datagramma: E' un servizio connectionless (non vi è nè instaurazione nè rilascio) in cui le unità informative (pacchetti) viaggiano sulla rete senza seguire un percorso stabilito a priori. Le trame inviate in ordine possono non giungere tali alla destinazione, inoltre non vi è nessun meccanismo che prevede il controllo di perdita degli stessi. Come i circuiti virtuali sfruttano delle tabelle di inoltro contenute all'interno di ciascun dispositivo intermedio.

Le tabelle di inoltro funzionano secondo la losoa del longest prex matching: sostanzialmente tengono memoria di determinati pressi (di bit) e per ciascuno di essi memorizzano il numero dell'interfaccia relativo al prossimo collegamento: quando una trama giunge al router questi controlla quali pressi memorizzati sono compatibili con l'indirizzo di destinazione della trama ed inoltra quest'ultima sul collegamento relativo al presso compatibile più lungo.

(10)

6 Router

I router sono i dispositivi di livello di rete in grado di instradare i datagrammi ricevuti in ingresso sugli opportuni link d'uscita.

Le porte di output devono tener conto che il traco in ingresso può essere superiore al traco che si è in grado di smaltire, pertanto bisogna prevedere meccanismi di buering (queuing dei datagrammi) e di scheduling (come questi datagrammi vengono smaltiti).

In generale il buer deve essere ridimensionato secondo la formula RT T ·CN dove RTT è il round trip time, C la capacità in output e N il numero di ussi in ingresso.

I problemi di buering esistono anche sulle porte in ingresso in quanto la logica di instradamento può richiedere più tempo di quello necessario ai datagrammi per accumularsi sulle porte: in tal caso occorre un buer per ciascuna porta di input. Questa soluzione, tuttavia, non è denitiva in quanto i pacchetti in testa alla coda in attesa di essere smaltiti possono bloccare altri datagrammi in coda pur avendo la possibilità di essere serviti immediatamente (head of line blocking).

ˆ Il tempo di attraversamento del router è Tt= LC dove L è la lunghezza media del pacchetto con distribuzione esponenziale (in bit) e C è la frequenza di cifra sui link uscenti.

ˆ Assumendo che il tempo di processing sia nullo, che tutte le code in uscita esperiscano lo stesso carico e che la capacità del buer sia innito il modello risultante è del tipo M/M/1. Se consideriamo la memoria nita, invece, il modello più corretto sarebbe del tipo M/D/1. Il parametro λè uguale a λ = MΛ dove Λè la frequenza media di arrivo dei pacchetti al nodo con modello poissoniano (1/s), mentre µ = T1t. Sia ˜η = ˜δ−µ1 e ˜l= ˜k − ρ si ha che:

 Nel caso M/M/1 ˜k = 1−ρρ δ =˜ µ(1−ρ)1 η =˜ µ(1−ρ)ρ

 Nel caso M/D/1 ˜k = ρ(2−ρ)2(1−ρ)δ =˜ 2µ(1−ρ)2−ρ η =˜ 2µ(1−ρ)ρ

(11)

7 Indirizzi IP

Gli indrizzi IP (IPv4) sono gli indirizzi del livello di rete e sono costituiti da 32 bit. La notazione usata per scriverli è la famosa dotted decimal: 128.65.3.31.

7.1 Classfull addressing

Con il metodo del classfull addressing ciascun indirizzo è suddiviso in due parti: la prima indica l'indirizzo della rete (netid) e la seconda quello dell'host (hostid) all'interno della stessa.

Esistono 5 classi di indirizzi IP:

ˆ Classe A: Indirizzi che iniziano con a 0 (da 1.0.0.0 a 126.255.255.255). I primi 8 bit sono usati per l'identicativo di rete, gli altri 24 per gli host.

ˆ Classe B: Indirizzi che iniziano con 10 (da 128.0.0.0 a 191.255.255.255). I primi 16 bit sono usati per la rete e gli altri 16 per gli host.

ˆ Classe C: Iniziano con 110 (da 192.0.0.0 a 223.255.255.255). I primi 24 bit sono usati per la rete e gli altri 8 per gli host.

ˆ Classe D: Iniziano con 1110 (da 224.0.0.0 a 239.255.255.255). Indirizzi usati per le applicazioni multicast.

ˆ Classe E: Tutti gli indirizzi restanti (da 240.0.0.0 a 255.255.255.255). Iniziano con 1111 e la classe è riservata per usi futuri (!?).

7.1.1 Indirizzi speciali

Esistono alcuni indirizzi che non vengono usati per identicare dispositivi sulla rete:

ˆ Indirizzo di rete: tutti i bit dell'hostid sono a 0, netid indica una rete precisa

ˆ Broadcast diretto: tutti i bit dell'hostid sono a 1, netid indica una rete precisa

ˆ Broadcast limitato: 255.255.255.255. Il broadcast si limita alla rete corrente

ˆ Identicativo dell'host corrente: 0.0.0.0

ˆ Host specico sulla rete corrente: tutti i bit del netid sono a 0, hostid identica un host preciso

ˆ Indirizzo di loopback: Il netid vale 127. L'hostid non ha signicato 7.1.2 Indirizzi privati

Alcuni indirizzi possono essere usati solo a livello locale ma non vengono indirizzati su internet

ˆ Classe A: 10.0.0.0 - 10.255.255.255

ˆ Classe B: 172.16.0.0 - 172.31.255.255

ˆ Classe C: 192.168.0.0 - 192.168.255.255 7.1.3 Netmask

La netmask è una sequenza di 32 bit costituita da un unica sequenza di 1 seguita da un'altra sequenza di 0 il cui scopo è quello di derivare il campo netid a partire da un generico indirizzo. Per far cioè è suciente eettuare l'AND bit a bit tra l'indirizzo IP originale e la netmask.

Ciascuna classe di indirizzi IP ha la propria netmask identicativa:

ˆ Classe A: 255.0.0.0

ˆ Classe B: 255.255.0.0

ˆ Classe C: 255.255.255.0

(12)

7.1.4 Tabella di routing ed inoltro dei pacchetti

A seconda di come vengono inviati i pacchetti da un router distinguiamo:

ˆ Inoltro diretto: La destinazione del pacchetto è nella stessa rete (locale)

ˆ Inoltro indiretto: La destinazione del pacchetto non è nella stessa rete (locale)

L'inoltro dei router è destination based (è basato solo sull'indirizzo di destinazione) ed è di tipo next hop routing (nelle tabelle di routing è presente solo l'informazione relativa al prossimo router (next hop) nel percorso verso la destinazione).

Quando un router riceve una trama valuta se procedere con l'inoltro diretto o indiretto.

L'inoltro è diretto se esiste una qualche interfaccia tale per cui l'and bit a bit tra l'indirizzo di destinazione e la netmask coincide all'and bit a bit tra l'indirizzo dell'interfaccia e la netmask.

Se nessuna interfaccia soddisfa i requisiti si procede con il check della tabella di routing: le entry che soddisfano il controllo sono tutte quelle per cui l'and tra la netmask della rete e l'indirizzo di destinazione coincide con l'and tra la netmask e l'indirizzo di rete memorizzate nella entry. Se il confronto dà esito positivo per più righe allora viene selezionata la entry cui appartiene la netmask con il maggior numero di 1 (longest prex matching). L'indirizzo relativo al prossimo salto è contenuto nella entry designata.

Il formato delle entry della tabella di routing è del tipo:

ˆ Netmask: 32 bit

ˆ Destination: indirizzo IP

ˆ Next hop: indirizzo IP

ˆ Flag: U (router attivo), G(destinatario fuori dalla sottorete), H (destinatario host specico), D (reindirizza- mento ICMP), M (reindirizzamento ICMP)

ˆ Reference count: numero di connessioni lungo il percorso

ˆ Use: numero di pacchetti verso la destinazione

ˆ Interface: nome simbolico associato al MAC address di un'interfaccia di uscita 7.1.5 Subnetting

E' possibile suddividere indirizzi di rete in sottoreti mediante la tecnica del subnetting. Per far ciò è suciente suddividere il campo host id in due parti:

ˆ subnet id: identica la sottorete. Per evitare ambiguità non può essere costituito da soli 1 o da soli 0.

ˆ host id: identica l'host all'interno della sottorete

Il campo net id non viene alterato. Ciascuna sottorete possiede il proprio subnet id che la identica in maniera univoca.

Al gruppo di subnet è associata una subnet mask: qualora volessimo suddividere un indirizzo di una certa classe usando n bit aggiuntivi è suciente sostituire ai primi n zeri della netmask altrettanti 1. Per evitare ambiguità, accanto agli indirizzi delle sottoreti viene accostata la notazione /n dove n indica il numero di 1 presenti nella subnetmask (a partire dall'inizio) (es: 159.100.8.0/21 indica che la subnetmask è 255.255.248.0).

La specicazione delle subnet mask all'interno delle tabelle di routing deve essere eettuata manualmente.

Giacchè il campo subnet id non può essere costituito da soli 1 o da soli 0 non è possibile suddividere la rete in 2 sole sottoreti: il numero minimo è 4.

E' possibile tuttavia suddividere le subnet a loro volta e quest'ultime ancora e così via modicando di volta in volta la sub-subnet mask: questa tecnica di suddivisione ricorsiva e selettiva è detta VLSM o variable length subnet mask.

7.1.6 Supernetting

E' possibile fondere tra loro indirizzi diversi purché contigui mediante la tecnica del supernetting. La tecnica è simile a quella del subnetting: se si ha intenzione di fondere 2n indirizzi contigui si sostituiscono gli ultimi n 1 della netmask con altrettanti 0 per dar luogo alla supernet mask.

(13)

7.2 Classless inter-domain routing (CIDR)

Con questa strategia le classi di indirizzi perdono di signicato: sia gli indirizzi IP che le rispettive netmask diventano totalmente essibili.

Un indirizzo CIDR della forma x.y.z.w/n indica che vi sono 232−n reti adiacenti i cui indirizzi IP partono da x.y.z.w. Il routing, ancora una volta, segue la tecnica del longest prex matching per ovviare alle ambiguità.

Secondo la notazione CIDR gli indirizzi privati diventano:

ˆ 10.0.0.0/8

ˆ 172.16.0.0/12

ˆ 192.168.0.0/16

Gli indirizzi in notazione CIDR possono essere segmentati mediante la tecnica del subnetting. In sostanza CIDR è una specie di supernetting globale.

7.3 NAT - Network Address Translation

La NAT è una tecnica che consiste nel tradurre gli indirizzi degli host appartenenti ad una rete in altri indirizzi visibili all'esterno. Lo scopo di questa tecnica è quello di permettere agli host che possiedono un indirizzo di rete privato di comunicare all'esterno usando uno o più indirizzi pubblici. Il dispositivo che eettua questa traduzione è in genere il router.

7.4 NAPT - Network Address Port Translation

E' una tecnica simile alla precedente solo che si usa anche il numero di porta per risparmiare indirizzi IP.

Usando questa tecnica uno stesso IP può essere associato a più host interni: il numero di porta da cui viene stabilita la connessione indica univocamente l'host all'interno della rete. Come per il NAT il dispositivo che eettua la conversione da IP:porta interno a IP:porta esterno e viceversa è il router.

(14)

8 Protocollo IP

Le caratteristiche principali del protocollo IP sono:

ˆ Protocollo di tipo connectionless

ˆ Le trame sono chiamate datagrammi IP

ˆ La consegna dei datagrammi non è assicurata

ˆ Esegue rilevazione e noticazione di errore

ˆ I datagrammi possiedono un time to live: quando raggiunge il valore 0 il datagramma vine distrutto.

Il servizio di comunicazione avviene mediante chiamate alle primitive di servizio, le quali lo descrivono, lo richiedono e ricevono informazioni su di esso da parte del fornitore. Ciascuna primitiva di servizio ammette dei parametri tra cui vi sono presenti le informazioni da trasferire, l'indirizzo del destinatario, le caratteristiche del servizio, ecc.

Il protocollo IP interagisce con i propri utenti TCP o UDP mediante due primitive: send e deliver.

La prima richiede la trasmissione di informazioni all'host remoto, la seconda passa ai livelli superiori le infor- mazioni ricevute da quest'ultimo.

Il formato della trama IP è il seguente:

ˆ Version: versione del protocollo IP (attualmente 4)

ˆ HLEN: lunghezza dell'header in unità da 32 bit l'una

ˆ Service type: tipo di servizio richiesto dai livelli superiori (minimize delay, maximize throughput, maximize reliability, minimize cost)

ˆ Total length: Lunghezza totale del datagramma (header incluso)

ˆ Identicazion: Identica i frammenti appartenenti ad un unico datagramma IP

ˆ Flags: D (do not fragment), M (more fragment, signca che questo non è l'ultimo frammento del datagramma ricevuto)

ˆ Fragment oset: oset del frammento (rispetto al datagramma originale) in multipli di 8 bytes

ˆ Time to live: usato per scartare i datagrammi smarriti (Il valore massimo è 255 e viene decrementato di 1 in ogni router: indica il numero massimo di salti eettuabili)

ˆ Protocol: protocollo di livello superiore usato per riepire il campo data eld

ˆ Header checksum: autoesplicativo

ˆ Source e destination address: indirizzi IP della sorgente e della destinazione

ˆ Options: opzioni varie ed eventuali (sicurezza, tipo di routing, timestamp)

ˆ Padding: Rende l'header un multiplo di 4 byte.

(15)

La lunghezza massima del datagramma (header + payload) è di 64 KByte, mentre i datagrammi troppo lunghi vengono spezzati in più frammenti: ciascuno di essi viene trattato come un pacchetto IP a sè stante (con tanto di header proprio) e viene inoltrato in maniera indipendente dagli altri. E' possibile che i frammenti si perdano o che arrivino a destinazione fuori sequenza. Il riassemblaggio viene eettuato alla destinazione usando il campo fragment oset e ags (per capire se si tratta dell'ultimo frammento).

I limiti più evidenti di IPv4 è che indirizza un numero troppo piccolo di host, la divisione in subnet è spesso ineciente, vengono assegnati indirizzi IP anche a sottoreti non usate, ecc.

IPv6 è la nuova versione del protocollo IP. Esso gode delle seguenti migliorie:

ˆ Spazio di indirizzamento enorme: indirizzi a 128 bit

ˆ Autocongurazione degli indirizzi: assegnazione dinamica degli indirizzi IPv6

ˆ Supporto all'allocazione delle risorse

ˆ Sicurezza: comprende meccanismi di autenticazione e privacy

(16)

9 Protocolli di controllo

9.1 ICMP - Internet Control Message Protocol

E' un protocollo usato per scambiare messaggi di servizio tra host e router circa errori e fasi di attraversamento rete. I messaggi ICMP vengono incapsulati e trasportati da IP e quindi sono un loro utente.

Il formato delle trame ICMP è del tipo:

ˆ Type: Indica il tipo di errore vericatosi (Destinazione irraggiungibile, Sorgente scollegata, Time out, Para- metro non valido, Ridirezione) o il tipo di diagnostica richiesta (richiesta ping, richiesta timestamp, richiesta maschera indirizzo, sollecitazione router)

ICMP non corregge gli errori ma si limita a noticarli alla sorgente che lo ha causato.

9.2 ARP - Address Resolution Protocol

Il protocollo è usato per mappare un indirizzo IP (livello 3) su un indirizzo di livello 2. Questo protocollo serve per scoprire l'indirizzo sico di dispositivi di cui si conosce il solo indirizzo IP (ad esempio router, gateway, ecc). Per far ciò un dispostivo invia una trama ARP in broadcast e accoglie la risposta da parte del dispositivo di cui si vuole conoscere il MAC address. Il formato della trama ARP è il seguente:

Il protocollo ARP è soggetto ad usi impropri quali spoong (o poisoning), attraverso i quali le tabelle ARP vengono riempite con dati alterati per ni dannosi.

9.3 RARP - Reverse ARP

E' un protocollo usato per mappare un indirizzo MAC (livello 2) su uno IP. Il suo utilizzo è quindi opposto ad ARP mentre la trama è identica.

9.4 DHCP - Dynamic Host Conguration Protocol

E' un protocollo usato per assegnare in manira dinamica gli indirizzi IP ai dispositivi che si connettono ad una rete.

Il protocollo è di tipo client-server derivato dal BOOTP.

Un client che deve congurare il proprio indirizzo IP invia una richiesta di discover (DHCP DISCOVER) contenente il proprio indirizzo sico. Il server risponde con un oer (DHCP OFFER) contenente il proprio indirizzo e l'indirizzo IP proposto per l'associazione. Se il client accetta l'oerta invia in broadcast una request (DHCP REQUEST) contenente l'identicativo del server. Il server crea l'associazione e manca un messaggio (DHCP PACK) contenente tutte le informazioni di congurazione necessarie (Tra cui indirizzo IP, netmask, gateway IP e DNS server). Quando il client desidera disconnettersi invia un messaggio di release (DHCP RELEASE) per terminare l'associazione.

(17)

10 Controllo di usso e di congestione

Le tecniche di controllo di usso e di congestione gestiscono la capacità del canale al ne di evitarne il collasso sotto un usso di input troppo grande.

NB: Pb è la capacità del canale in uscita, PS è la capacità del canale in ingresso.

10.1 Controllo di usso con leaky bucket

ˆ I pacchetti in ingresso vengono memorizzati all'interno di un buer FIFO di capacità W (pacchetti)

ˆ Ogniqualvolta un pacchetto viene trasmesso un permesso viene consumato

ˆ Ogni 1/ν secondi un permesso è generato

ˆ Ogni permesso non consumato viene scartato

ˆ Il sistema prevede la perdita di pacchetti solo quando il buer è pieno

ˆ La frequenza media in uscita dal dispositivo con pacchetti lunghi Lp bit è Ab max= Lp· ν ≤ Pb

10.2 Controllo di usso con token bucket

ˆ Sia i pacchetti in input che i permessi vengono memorizzati in due buer LIFO distinti al loro arrivo (Il buer dei permessi ha dimensione W (permessi))

ˆ Ogni 1/ν secondi un permesso è generato

ˆ Ogni pacchetto trasmesso consuma un permesso se disponibile nel buer

ˆ Il sistema prevede la perdita di permessi ma non di pacchetti (ideale per sorgenti bursty)

ˆ La frequenza media in uscita dal dispositivo con pacchetti lunghi Lp bit è Ab max= Lp· ν ≤ Pb

(18)

Parte III

Protocolli TCP / UDP

Deniamo processo un programma in esecuzione su un host.

I processi posti su due host dierenti comunicano tra loro scambiandosi messaggi. Questo scambio avviene usando dei servizi di livello inferiore mediante i cosiddetti SAP (Service Access Point), i quali sono associati a loro volta ai singoli processi. Nell'architettura internet i livelli di presentazione e di sessione sono bypassati, pertanto il livello applicativo usa i SAP per richiedere servizi direttamente al livello di trasporto.

I SAP tra il livello appliactivo ed il livello di trasporto sono chiamati socket. Quest'ultimi non sono altro che delle porte di comunicazione tra i due processi.

Siccome su un unico host coesistono diversi processi, l'indirizzo IP da solo non basta per identicare in maniera univoca il processo sull'host remoto. Per questo motivo all'indirizzo IP è associato anche un numero di porta (tra 0 e 64535) che lo identica.

Alcuni processi vengono associati a delle porte well-known (HTTP: 80, FTP: 21, Telnet: 23, ecc), tuttavia ve ne sono a disposizione altre per l'allocazione dinamica dei processi.

Il livello di trasporto ha il compito di instaurare il collegamento logico tra le applicazioni residenti su host remoti (rende in pratica trasparente il trasporto sico dei singoli messaggi).

A seconda del servizio richiesto dal livello applicativo il livello di trasporto può comportarsi in maniera adabile o no (garanzia di consegna dei messaggi nel corretto ordine) oppure può decidere di adoperare un trasporto orientato alla connessione o connectionless.

I due protocolli di trasporto deniti nella suite IP sono:

ˆ TCP: Transmission Control Protocol, connection oriented e adabile

ˆ UDP: User Datagram Protocol, connectionless e non adabile

Quando un processo viene associato ad una porta il sistema operativo provvede alla creazione di due buer (uno di input e uno di output) per lo scambio ed il buering dei dati.

(19)

11 Architettura Client-Server

In questo genere di architettura vi è un host che richiede servizi (client) ed uno che li fornisce (server).

Sul server è sempre attivo un processo in background che ascolta una determinata porta in attesa della connessione da parte di un client (il socket è in listening). Quando una richiesta del client è generata (il socket si sta connettendo al server), il server può decidere se accettare la richiesta (accept) o riutarla. Se l'accetta il server provvede a fornire le informazioni richieste al client il quale può procedere con l'inoltro di ulteriori richieste oppure può decidere di disconnettersi. I processi client si dicono ad active open (ad indicare il fatto che possono attivarsi in qualsiasi momento), mentre i processi server si dicono a passive open (si attivano cioè quando vengono

svegliati). Ciascun processo server può accogliere più richieste e soddisfarle in modo parallelo (parallelizzazione del servizio) oppure può decidere di soddisfare una richiesta alla volta (serializzazione del servizio).

(20)

12 Protocollo UDP

Il formato di un datagramma UDP è il seguente:

ˆ N. porta sorgente\destinazione: autoesplicativi

ˆ Lunghezza: lunghezza dell'header più quella dei dati

ˆ Checksum: la checksum protegge anche l'header

(21)

13 Protocollo TCP

Il protocollo TCP usa un controllo di usso, in cui il usso dei dati in ingresso viene regolato in basa alla capacità del ricevitore. Questo controllo è basato su un meccanismo di sliding window in cui il ricevitore trasmette al trasmettitore l'ampiezza della propria nestra di ricezione. La nestra scorrevole denisce i byte che possono essere trasmessi senza dover aspettare alcun ack (a dierenza di HDLC dove sono le PDU ad essere numerate, in TCP sono i byte ad esserlo).

Il formato di una trama TCP è la seguente:

ˆ Porta sorgente/destinazione: autoesplicativi

ˆ Numero di sequenza: usato per il meccanismo di acknowledgment (indica il numero progressivo del primo byte del campo dati)

ˆ Numero di riscontro: Successivo byte atteso

ˆ Finestra di ricezione:

ˆ URG: i dati sono urgenti

ˆ ACK: ACK valido (1) o ignora numero di ACK (0)

ˆ RST: Indicazione di resettare la connessione

ˆ SYN: Usato per instaurare una connessione

ˆ FIN: Richiede la ne della connessione

Pur appoggiandosi ad un livello di rete di tipo connectionless, il protocollo TCP è orientato alla connessione, pertanto, prima del trasferimento dei dati, è necessario instaurare una connessione mediante segnalazione.

Le connessione TCP sono sempre di tipo full-duplex.

Ciascuna connessione TCVP è identicata univocamente da 2 numeri di porta e 2 indirizzi IP.

Sul segmento di rete ogni byte deve avere il proprio numero di sequenza e pertanto si vengono a creare ambiguità se su un tratto transitano contemporanamente più di 232 byte.

Per evitare ciò la durata del segmento trasmesso (MSL, Maximum Segment Lifetime) deve essere tale per cui M SL < 232B·8 dove B la capacità della connessione in bps.

Normalmente il MSL vale 2 minuti.

13.1 Setup della connessione

Il setup della connessione avviene mediante un meccanismo di three-way handshake (punti 3, 4 e 5):

ˆ Il server fa una passive open e si mette in ascolto di nuove connessioni

ˆ Il client eettua una active open connettendosi al socket del server

ˆ Il client genera a caso un numero di sequenza iniziale (ISN) e manda un messaggio di sincronizzazione (SYN) (grazie a questo numero si evitano problemi causati da un setup non andato a buon ne).

(22)

ˆ Il server genera un altro numero a caso e lo invia al client assieme al numero casuale ricevuto (SYN\ACK)

ˆ Il client risponde rinviando il numero ricevuto con un pacchetto di ACK. Nel payload il client usa il numero casuale generato all'inizio per iniziare la numerazione dei pacchetti e dichiara al server la dimensione della sua nesta.

ˆ Quando le operazioni sono andate a buon ne sia il socket del client che quello del server noticano il livello applicativo dell'avvenuta connessione (connection open)

13.2 Rilascio della connessione

Il meccanismo di rilascio della connessione è attuato mediante two-way handshake (per ciascuna direzione)

ˆ Il TCP che chuide la connessione invia un messaggio di FIN con gli ultimi dati disponibili

ˆ Il TCP che riceve il messaggio di FIN invia un ACK per confermare

ˆ Il TCP che riceve il messaggio di FIN invia a sua volta un messaggio di FIN

ˆ L'altro TCP che aveva già dichiarato la chiusura della connessione invia un ACK nale per confermare La connessione può anche essere chiusa brutalmente mediante l'invio del messaggio di RESET: in questo caso il TCP che lo riceve interrompe la propria connessione e l'invio dei dati.

Se i dati da inviare sono troppo grandi il protocollo TCP spezza i dati in più pacchetti TCP..

La dimensione massima dei pacchetti TCP (Maximum Segment Size, MSS) dipende dalla specica implemen- tazione del TCP (tipicamente vale 1500 byte, 536 o 512).

13.3 Controllo di usso

Il ricevitore ha una nestra di ricezione (RCVWND) in cui può memorizzare i dati ricevuti no ad un massimo stabilito. La dimensione della nestra è dichiarata in ciascun pacchetto inviato al trasmettitore da parte del ricevitore.

Il trasmettitore memorizza un buer che tiene traccia sia dei dati inviati ma non ancora riscontrati e sia della dimensione della nestra di ricezione del ricevitore.

13.4 Speciche TCP

Il tempo di propagazione di una PDU TCP è variabile all'interno della rete e ci si riferisce ad esso con il termine Round Trip Time.

Il protocollo TCP basa la ritrasmissione dei pacchetti sulla scadenza di un timeout, tuttavia siccome il tempo di propagazione è variabile questi deve continuamente adattarsi alle variazioni di quest'ultimo.

Se il timeout fosse inferiore al RTT le ritrasmissioni sarebbero inutili (il pacchetto non è ancora arrivato a destinazione), mentre se fosse eccessivamente grande il protocollo sarebbe particolarmente ineciente.

Alla scadenza del timeout viene ritrasmesso solo il segmento per cui è scaduto il timeout.

I riscontri ricevuti sono cumulativi come nel GbN, inoltre si fa uso della tecnica del piggybacking.

Se i segmenti vengono ricevuti fuori sequenza i pacchetti possono essere scartati (come nel GbN) oppure me- morizzati purchè nella nestra di ricezione (come nel SR) a seconda dell'implementazione di TCP (nel primo caso detta Tahoe, nel secondo Reno).

Vi possono essere tre diversi problemi dal lato ricevitore:

ˆ Il ricevitore è troppo lento nel processing dei dati (svuota lentamente il buer)

ˆ La sua nestra in trasmissione è troppo piccola

ˆ Il trasmettitore invia segmenti corti con molto overhead

Questi tre problemi prendono il nome di Silly window syndrome. Per ovviare a questo problema il ricevitore può mentire al trasmettitore indicando di avere una nestra nulla ntantochè non riesce a svuotare il buer di ricezione di una quantità pari al minimo tra la metà della capacità del buer e l'MSS. Questa algoritmo è detto algoritmo di Clark.

Dal lato trasmettitore invece la silly window syndrome può essere causata da:

(23)

ˆ applicativi troppo lenti nel generare dati

ˆ invio di segmento molto piccoli man mano che vengono generati.

Per risolvere questo problema si adotta l'algoritmo di Nagle: il TCP sorgente invia la prima porzione di dati anche se corta, mentre tutti gli altri segmenti vengono generati ed inviati solo se o il buer di output contiene dati sucienti a riempire un MSS oppure si riceve l'ACK relativo al segmento precedentemente inviato.

13.5 Meccanismi di trasmissione

Per impostare un valore eciente di timeout è necessario prima stimare il round trip tipe (RTT).

Cambiare il timeout per ogni pacchetto valutando solo l'RTT dell'ultimo segmento inviato (RT Tlast) non terrebbe conto di tutti i segmenti che potrebbero essere stati ritrasmessi più volte, ricavando così una stima ineciente.

Per avere una stima più accurata (Smoothed RTT) si usa un valore medio di RTT (detto RT TAV) calcolato come segue:

RT TAV = (1 − α)RT TAV + α · RT Tlast La deviazione standard dell'RTT è data da:

RT TDev= (1 − β)RT Tdev+ β · |RT Tlast− RT Tav|

I valori α e β sono compresi tra 0 (escluso) ed 1 (incluso) e il loro valore tipico è α = 0.125, β = 0.25 I valori iniziali di RT Tlast e RT Tdev sono rispettivamente 0 ed 1.5.

Sapendo il valore stimato e la sua varianza, il timeout viene simato secondo la formula di Jacobson mediante la seguente:

To= RT Tav+ n · RT Tdev dove n vale tipicamente 2, 3 o 4.

Nonostante questa stima sia sucientemente precisa, in caso di congestione la rete si verrebbe a creare un circolo vizioso di ritrasmissioni dovuto al mancato aggiornamento del timeout (nessuna ritrasmissione, nessun aggiornamento del timeout), il quale a sua volta farebbe incrementare il numero di ritrasmissioni tentate.

Per ovviare a questo problema si ricorre al meccanismo di timer backo (o algoritmo di Karn)

ˆ Ad ogni ritrasmissione dovuta alla scadenza del timeout il timeout viene incrementato con tecnica moltipli- cativa (solitamente viene raddoppiato) no ad una soglia massima.

ˆ Al primo segmento ricevuto senza scadenza del timeout si torna alla procedura standard vista precedentemente

ˆ Se un segmento di una sequenza di dati viene perso, il ricevitore mantiene tutti i successivi nel buer ma ad ogni segmento ricevuto invia immediatamente il ACK di quello mancante (ACK ripetuti) ntantochè non riceve il segmento mancante

ˆ Il trasmettitore invia il segmento solo a timeout scaduto anche se sarebbe opportuno che venisse ritrasmesso al più presto.

Per ovviare al problema sorto nell'ultimo punto si eettua una rivisitazione del meccanismo di ritrasmissione (fast retransmit)

ˆ Alla ricezione di 3 ACK consecuitivi ripetuti si procede rapidamente alla ritrasmissione, anche prima che scatti il time-out.

ˆ Il nuovo upgrade richiede che il delayed ACK venga disabilitato.

Se il destinatario ssasse a zero la nestra di ricezione la sorgente interrompe la trasmissione immediatamente (e la riprende quando riceve un ACK in cui si dichiara che la dimensione è cambiata). Qualora questo ACK si perdesse, per evitare che la connessione rimanga bloccata, si usa un timer di persistenza che viene attivato ogniqualvolta arriva un segmento con nestra nulla: se questo timer scade, viene inviato un piccolo segmento sonda (probe segment) e qualora dovesse essere riscontrato allora si uscirebbe dallo stato critico, altrimenti al nuovo scadere del timeout si procederebbe con l'invio di un altro probe.

(24)

13.6 Controllo di congestione

Il controllo di usso dipende solo dalle capacità del ricevitore, tuttavia non è suciente ad evitare la congestione della rete.

Il trasmettitore maniene la cosiddetta congestion window (CWND) la quale varia in base agli eventi che si succedono sulla rete: il trasmettitore non può trasmettere più informazioni del minimo tra RCVWND e CWND.

Ogniqualvolta si verica un evento di congestione (un segmento viene perso ad esempio) la nestra CWND viene ridotta. Il modo in cui avviene l'aggiornamento della nestra è algoritmico e dipende dallo stato in cui si trova il trasmettitore.

ˆ Se CWND < SSTHRESH (slow start threshold, valore preimpostato) allora il trasmettitore è in slow start

ˆ Se CWND > SSTHRESH allora il trasmettitore è in congestion avoidance All'inizio il trasmettitore pone la CWND = MSS e SSTHRESH >> 0.

In slow start la CWND viene incrementata di 1 per ogni ACK ricevuto (invia 1 segmento, attende l'ACK, quindi CWND = 2. A questo punto invia 2 segmenti e aspetta i 2 ACK. Dopo aver aggiornato la CWND a 4 invia 4 segmenti e così via).

Questo incremento esponenziale può andare avanti no al primo evento di congestione o ntantochè CWND <

min( SSTHRESH, RCWND ).

Insieme alla nestra anche il rate di trasmissione aumenta secondo la seguente stima R = CW N DRT T .

Un evento di congestione si verica quando la somma dei ritmi di trasmissione dei ussi totali che lo attraversano è maggiore della capacità del canale comune.

A questo punto TCP reagisce ponendo SST HRESH = max(2 · MSS, F lightSize

2 )dove FlightSize è il numero di byte trasmessi ma non ancora riscontrati e ponendo CW ND = 1.

In congestion avoidance si incrementa la CWND di un valore pari a 1/CW ND per ogni ACK ricevuto: in questo modo se la CWND consente di trasmettere N segmenti, dopo il riscontro di tutti i segmenti la CWND aumenta di un segmento. Rispetto a slow start l'incremento della CWND è lineare.

(25)

Parte IV

Algoritmi di instradamento

A seconda di come operano, distinguiamo diverse tipologie di algoritmi di instradamento:

ˆ Instradamento senza tabella di routing

 Random: Il link uscente è scelto casualmente, cioè lo rende molto robusto ma soggetto a tempi di ritardo con altissima varianza. Inoltre la distribuzione del traco in rete non è uniforme. In alternativa è possibile sceglier casualmente il link d'uscita se e solo se la destinazione non è adiacente (selective random, richiede tuttabia una tabella delle adiacenze).

 Flooding: il pacchetto è replicato su tutti i link uscenti ad eccezione di quello di ingresso (i pacchetti vengono scartati se è scaduto il TTL o se il pacchetto è già transitato su uno stesso nodo della rete). Il metodo è robustissimo (usato in applicazioni militari) ma aumenta il traco interno. In alternativa è possibile scegliere un numero minore di linee d'uscita su cui inviare il pacchetto (selective ooding).

 Source routing: Il nodo sorgente predetermina la strada inserendola nel pacchetto (inserisce la sequenza di salti). La determinazione del percorso è adata ad un path server (semplice ma inadabile) o viene determinata secondo l'algoritmo di path discovery (viene eettuato un ooding preliminare al quale la destinazione risponde con il pacchetto che ha memorizzato il percorso migliore e poi viene seguita sempre quella strada per l'instradamento).

ˆ Instradamento gerarchico: i nodi vengono suddivisi in regioni e sottoregioni gerarchiche: le tabelle indi- rizzano i pacchetti gerarchicamente verso i gruppi più grandi che si occupano di recapitarli o ai sottogruppi interni (se la destinazione è interna alla regione) o alle altre regioni (se la destinazione non appartiene alla regione).

ˆ Instradamento con tabella: Ciascun nodo memorizza una tabella che indica per ciascuna destinazione qual'è il prossimo salto da eettuare. L'algoritmo di instradamento può essere sso (le tabelle vengono riempite a priori) oppure a distanza minima (viene valutato di volta in volta il percorso con costo (ritardo, numero salti, capacità dei link) minore.

 Dinamico

* Distance vector

* Link state

 Fisso: vedi IP static routing

(26)

14 IP static routing

A seconda se i router indirizzano i pacchetti verso nodi appartenenti allo stesso autonomous system o ad uno esterno riconosciamo i protocolli di routing interni o esterni (Interior Gateway Protocol, IGP e Exterior Gateway protocol EGP).

La selezione del percorso migliore avviene mediante cooperazione tra gli IGP e gli EGP.

Le routing tables contengono l'indirizzo IP del prossimo router che è necessario attraversare per raggiungere una data rete. Le entry pertanto memorizzano sia il destination network address e sia il next hop router ad esso relativo (sono entrambi indirizzi IP).

Il tipo di instradamento adottato può essere:

ˆ Diretto: la destinazione e la sorgente hanno lo stesso NETID (viene usata la subnet mask in questo caso)

ˆ Indiretto: la destinazione e la sorgente hanno NETID dierente. L'host decide quale subnet e quale router usare

ˆ Gerarchico: la sorgente e la destinazione si trovano su AS diversi: in questo caso i nodi interni e gli interior gateway inoltrano le informazioni sulla sola base del campo HOSTID, mentre gli exterior gateway le trasportano sulla base del campo NETID.

All'interno degli autonomous system si adotta la tecnica dell'instradamento IP statico (IP static routing), il quale non richiede che vi sia interazione tra i router e le routing table sono impostate manualmente dall'amministratore.

Nella fase di design, per ciascun router viene memorizzata una entry per ogni altro router relativo a tutte le altre sottoreti presenti nell'AS mediante il criterio ritenuto più opportuno. A questo punto si procede alla fase di congurazione in cui le tabelle sono sicamente congurate mediante opportune istruzioni.

L'IP static routing è appropriato quando l'AS possiede una scarsa connettività, la rete è periferica, la rete richiede un certo grado di sicurezza (il routing statico è più sicuro di quello dinamico), quando la rete l'AS è organizzato in maniera gerarchica e ogni subnet ha un proprio router di default.

Se una sottorete va giù tutte le sottoreti adiacenti se ne accorgono ed i rispettivi router reagiscono modicando tutte le entry relative alla subnet che ha accusato il problema e rimpiazzano il campo next hop con un altro. Se non è presente una seconda scelta per il next hop allora si procede al routing dinamico.

(27)

15 RIP - Routing information protocol

Il protocollo presentato si basa su un instradamento di tipo distance vector (usando l'algoritmo di Bellman-Ford per popolare le tabelle di routing). La metrica usata da RIP è il numero di salti che devono essere eettuati per raggiungere la destinazione prestabilita. Per questo motivo tutte le connessioni tra i vari router hanno costo unitario.

La massima distanza ammessa dal protocollo è 15, pertanto RIP non è compatibile con AS di dimensioni troppo grandi.

Siccome la topologia delle reti è soggetta a mutazioni, i messaggi RIP contenenti le informazioni sulle tabelle di instradamento vengono inviati ogni 30 secondi da ciascun router a tutti i nodi adiacenti. Una entry viene aggiornata solo se il nuovo valore di distanza è di almeno due unità inferiore al precedente valore.

I messaggi RIP (i quali possono trasportare al massimo 25 entry <rete, distanza>) sono trasportati mediante protocollo UDP.

Il protocollo RIP sore del problema count to innity e il tempo di convergenza dipende strettamente dalla dimensione della rete e dalla sua complessità.

15.1 Algoritmo di Bellman-Ford

Nell'algoritmo di distance vector ogni router possiede una tabella in cui è memorizzato il percorso minimo necessario per raggiungere tutti gli altri nodi della rete e, per ciascuno di essi, il prossimo salto (il link d'uscita del percorso minimo). Questa tabella viene periodicamente inviata agli altri router, i quali, incrociando i dati, possono mantenere sempre aggiornata la propria tabella delle distanze.

L'algoritmo per la determinazione delle tabelle di routing è risolto in un numero di passi pari al numero di collegamenti che costituiscono il percorso più lungo in assoluto della rete.

Sia denito Dhj costo della via a costo minimo dal nodo sorgente s al nodo j con un numero massimo h di salti e dijcosto del collegamento diretto tra i e j (innito se i nodi i e j non sono collegati tra loro direttamente), l'algoritmo di Bellman-Ford si compone dei seguenti passi:

ˆ h = 0

ˆ Dhj = ∞ ∀j 6= s

ˆ Dhs = 0

ˆ h = h + 1

ˆ Dhj = mini{Dh−1i + dij, Dh−1j }(La generica distanza Djhrelativa alla entry j è uguale al minimo del seguente insieme {Dh−1j , DAh−1+ dAj, DBh−1+ dBj, DCh−1+ dCj, ..., Dh−1i + dij} dove A,B,C,ecc sono tutti i nodi della rete)

ˆ se h = hmax allora l'algoritmo termina, altrimenti ripete a partire dal 3° passo.

Si consideri la seguente rete d'esempio:

L'algoritmo per la popolazione della tabella Dhj (j rappresenta le righe, h le colonne) si comporta come segue

0 1 2 3 4

A − − − − −

B − − − − −

C − − − − −

D − − − − −

E − − − − −

F − − − − −

−→

0 1 2 3 4

A 0 − − − −

B ∞ − − − −

C ∞ − − − −

D ∞ − − − −

E ∞ − − − −

F ∞ − − − −

−→

0 1 2 3 4

A 0 0 − − −

B ∞ 1(B) − − −

C ∞ ∞ − − −

D ∞ ∞ − − −

E ∞ ∞ − − −

F ∞ 3(F ) − − −

−→

(28)

−→

0 1 2 3 4

A 0 0 0 − −

B ∞ 1(B) 1(B) − −

C ∞ ∞ 4(B) − −

D ∞ ∞ 9(F ) − −

E ∞ ∞ 5(F ) − −

F ∞ 3(F ) 2(B) − −

−→

0 1 2 3 4

A 0 0 0 0 −

B ∞ 1(B) 1(B) 1(B) −

C ∞ ∞ 4(B) 4(B) −

D ∞ ∞ 9(F ) 6(B) −

E ∞ ∞ 5(F ) 4(B) −

F ∞ 3(F ) 2(B) 2(B) −

−→

0 1 2 3 4

A 0 0 0 0 0

B ∞ 1(B) 1(B) 1(B) 1(B)

C ∞ ∞ 4(B) 4(B) 4(B)

D ∞ ∞ 9(F ) 6(B) 5(B)

E ∞ ∞ 5(F ) 4(B) 4(B)

F ∞ 3(F ) 2(B) 2(B) 2(B) Il valore in parentesi indica il next hop

16 OSPF - Open shortest path rst

In questo protocollo ogni router, dopo aver valutato la distanza rispetto a tutti quelli adiacenti, comunica periodi- camente questi dati a tutti i router dell'AS mediante messaggi LSU (link state update) inviati mediante la tecnica del ooding. Ogniqualvolta un router riceve un messaggio di LSU risponde con un ACK (LSA) in quanto questi messaggi sono di vitale importanza per il corretto aggiornamento delle tabelle di routing.

Il protocollo è molto essibile in quanto la metrica dei costi può essere qualsiasi (numero dei salti, il throughput, l'adabilità, il ritardo ecc); difatti ciascun router memorizza una tabella di distanza minima per ogni metrica designata cosicchè ciascun pacchetto può instradato secondo le preferenze specicate nel campo Type of Service.

OSPF, inoltre, consente di bilanciare il carico su diversi percorsi per una data destinazione, ammette meccanismi di autenticazione tra router per garantire una sicurezza maggiore e consente la suddivisione gerarchica della rete in aree diverse, ciascuna delle quali può adottare un OSPF con metrica di costo arbitraria.

La conoscenza di tutte le distanze consente ad ogni router di conoscere le distanze minime verso tutti gli altri nodi e di costruire le tabelle di routing applicando l'algoritmo di Dijkstra (o algoritmo link state).

16.1 Algoritmo di Dijkstra

Nell'algoritmo link state ogni router valuta periodicamente secondo la metrica opportuna il costo per raggiungere tutti i nodi adiacenti e comunica questa informazione in maniera peridica a tutti i router in ooding.

L'algoritmo è quello usato attualmente su Internet e la metrica utilizzata è il ritardo di propagazione. Gli aggiornamenti avvengono ogni 10 secondi circa.

Sia Dj il costo della via a costo minimo dal nodo sorgente s al nodo j, dij costo del collegamento diretto tra i e j (come per l'algoritmo di Bellman-Ford vale innito se i due nodi non sono connessi tra loro direttamente), N l'insieme dei nodi della rete, M l'insieme dei nodi dell'albero corrente e V(M) insieme dei nodi adiacenti all'insieme M (ovvero raggiungibili in un solo salto da un qualunque nodo di M).

L'algoritmo di Dijkstra si compone dei seguenti passi:

ˆ M = {s}

ˆ Dj= dsj∀j ∈ V (s)

ˆ Dj= ∞ altrimenti

ˆ Selezione un nodo k ∈ V (M) tale per cui Dk= mini∈V (M ){Dj}(seleziona cioè il nodo in V(M) con costo più basso)

ˆ M = M + {k} (aggiunge k all'insieme M)

ˆ Dj = min{Dj,Dk+ djk} ∀j ∈ V (M )(La generica distanza Dj relativa alla entry j è uguale al minimo del seguente insieme {Dj, DA+ dAj, Db+ dBj, DC+ dCj, ..., Dk+ dkj} dove A,B,C,ecc sono tutti i nodi della rete)

ˆ Se M = N allora l'algoritmo termina, altrimenti l'algoritmo prosegue partendo dal passo 4

L'algoritmo per la popolazione della tabella Dj(j rappresenta le righe) si comporta come segue (le ultime due righe non appartengono a D ma sono usate per comodità, le colonne rappresentano un ciclo completo dell'algoritmo, mentre i valori in grassetto sono quelli non soggetti più a modica nei passi successivi):

(29)

A 0 0 0 0 0 0

B 1(B) 1(B) 1(B) 1(B) 1(B) 1(B)

C ∞ 4(B) 4(B) 4(B) 4(B) 4(B)

D ∞ ∞ 6(B) 5(B) 5(B) 5(B)

E ∞ 5(F ) 4(B) 4(B) 4(B) 4(B)

F 3(B) 2(B) 2(B) 2(B) 2(B) 2(B)

M A A, B A, B, F A, B, F, C A, B, F, C, E A, B, F, C, E, D

V(M) B, F F, C, E C, D, E D, E D ∅

17 BGP - Border gateway protocol

Il protocollo BGP rappresenta il pricipale protocollo di instradamento EGP. Esso permette ai router di diversi AS di scambiarsi le informazioni necessarie per determinare l'instradamento dei pacchetti attraverso Internet per raggiungere una data rete di destinazione. Le informazioni scambiate con questo protocollo rappresentano la sequenza di AS che è necessario attraversare per raggiungere una data destinazione e pertanto questo tipo di instradamento è detto di tipo path vector. La comunicazione dei messaggi BGP è assicurata dal protocollo TCP.

(30)

Parte V

Protocolli applicativi

18 HTTP - HyperText transfer protocol

Il protocollo HTTP è usato per lo scambio di ipertesti attraverso TCP nelle architetture client-server. Il protocollo in questione si dice stateless: nessuna memoria viene mantenuta sulle richieste eettuate dal client verso il server.

HTTP è usato per far richiesta di pagine web, le quali, a loro volta, sono identicate mediante un URL (uniform resource locator) del tipo [protocollo]://[indirizzo del server]/[indirizzo della pagina richiesta].

Quando viene eettuata la richiesta di una pagina web, viene aperta una connessione TCP sulla porta 80, la pagina viene trasferita, dopodiché la connessione viene immediatamente chiusa (se la connessione è di tipo non persistent) oppure rimane aperta per un certo periodo di tempo prima di essere chiusa a seguito di un timeout (connessione di tipo persistent).

Il client può decidere di eettuare più richieste consecutivamente (with pipelining) oppure inviano una nuova richiesta solo dopo che il server ha risposto alla richiesta precedente (without pipelining).

Alcuni esempi di metodi usati da HTTP:

ˆ GET: usato quando il client vuole scaricare un documento (specicato mediante URL) dal server.

ˆ HEAD: usato quando il client vuole scaricare informazioni su un documento.

ˆ POST: usato per fornire in input degli oggetti identicato mediante l'URL al server.

ˆ PUT: usato per memorizzare un documento nel server.

Ad ogni richiesta il server risponde con un valore numerico ad indicare l'esito:

ˆ da 100 a 199: risposta informativa generica

ˆ da 200 a 299: richiesta accolta (200 indica che la richiesta ha avuto successo)

ˆ da 300 a 399: ridirezione (302: oggetto spostato ad un altro URL in modo permanente; 304: oggetto spostato ad un altro URL temporaneamente)

ˆ da 400 a 499: errore client (400: richiesta errata; 401: richiesta non autorizzata; 404: oggetto inesistente)

ˆ da 500a 599: errore server (500: errore interno; 501: funzione non implementata; 503: servizio non disponibile) Gli header dei messaggi HTTP possono contenere informazioni di servizio.

18.1 Proxy

Il compito principale di un proxy server è quello di fornire una memoria di cache: se il client eettua una richiesta ad un server proxy e questi conosce già l'esito della risposta allora il documento viene scaricato più velocemente.

I proxy sono degli application gateway, ovvero lavorano sul livello applicativo sia dal lato client che dal lato server ma il loro funzionamento è trasparente.

18.2 Cookie

Per risolvere alcuni problemi derivanti dalla natura stateless del protocollo HTTP, il server può salvare sul client alcuni le testuali noti come cookies in cui possono memorizzare (e leggere successivamente) informazioni di servizio.

(31)

18.3 HTML - HyperText markup language

Le pagine web richieste con HTTP sono scritte in HTML, ovvero un linguaggio a marcatori in grado di descrivere l'aspetto del documento e l'insieme delle parti che lo compongono (immagini, link ad altre pagine, ecc.).

Se una pagina web è memorizzata nel server e viene inviata su richiesta allora la pagina si dice statica.

Se la pagina web è generata dal server ad ogni richiesta allora la pagina si dice dinamica.

19 FTP - File transfer protocol

E' un protocollo usato per il trasferimento di le tra due host remoti che si poggia su TCP. Il servizio è associato alla porta 21. Se la connessione è di controllo allora il servizio è persistent, se la connessione è dati, invece, il servizio è non persistent (ogni le trasferito provoca la chiusura della connessione).

La connessione dati ammette due tipi di trasmissione:

ˆ Con la stream mode il le viene trasferito come una sequenza non strutturata di byte

ˆ Con la block mode il le viene trasferito a blocchi in cui i primi 3 byte rappresentano l'header

20 SMTP - Simple mail transfer protocol

E' un protocollo usato per il trasferimento delle mail tra i vari server che richiede che il corpo sia formato di soli caratteri ASCII (qualora non lo fossero il documento deve essere preventivamente convertito).

Per ovviare al problema del trasferimento di le binari è stata introdotta un'estensione nota come MIME (Multipurpose internet mail extensions) la quale codica i dati da trasferire usando la codica Base64: ogni gruppo di 6 bit viene converito in uno univoco a 8 bit (tutte le lettere maiuscole, minuscole, tutti i numeri e ulteriori due simboli noti). Per accedere alla mailbox il client usa diveri protocolli quali POP3 (Post Oce Protocol v.3) o IMAP (Internet Mail Access Protocol).

21 TELNET - Terminal Network

E' un semplice applicativo che consente di aprire un terminale remoto mediante connessione TCP.

22 DNS - Domain Name Sytem

Un server DNS è un server che fornisce una mappatura univoca di alcuni indirizzi IP con un nome simbolico più semplice da ricordare. Il servizio è un'applicazione IP che usa il protocollo UDP per trasferire i messaggi.

I server DNS sono di tipo gerarchico.

Riferimenti

Documenti correlati

La richiesta viene inviata all'indirizzo di broadcast di livello 2, perché deve essere elaborata da tutte le macchine; contiene inoltre l'indirizzo di livello 2 e quello di livello

Poiché il packet filter già analizza i pacchetti, può facilmente identificare i pacchetti che sono destinati ad un particolare host che si trovi nella VPN, cifrare tali pacchetti

Prova a completare il percorso ricordando che ogni numero è maggiore di uno rispetto al suo precedente:. Ecco formato il numero cento

(3 punti) Una misura effettuata su un collegamento in fibra ottica lungo 4 km indica che la frequenza massima che può essere inviata su tale fibra è di 250 MHz.. Qual è la

[ ] due host appartenenti allo stesso dominio DNS (es. diegm.uniud.it) devono avere indirizzi IP appartenenti alla stessa subnet. [ ] due host appartenenti allo stesso dominio

[ ] il progetto non può funzionare perché non è possibile definire una sequenza di indirizzi IP in modo che gli host comunichino secondo uno schema ad anello?. [ ] la

© 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 2 Questo insieme di trasparenze (detto nel seguito slide) è protetto dalle leggi sul copyright e dalle disposizioni

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