Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
IP
macchina sorgente a una destinazione, che sia trasparente alla presenza di reti intermedie.
Formato del pacchetto IP
Un pacchetto è costituito da un'intestazione, composta da una parte fissa di 20 byte e da una parte variabile
(il tutto al più 60 byte), seguita dai dati.
La dimensione del frammento elementare è di 8 byte.
Campi dell'intestazione:
version: 4 bit, versione del protocollo usato per il datagramma
IHL: 4 bit, lunghezza dell'intestazione espressa in 4 byte (poiché l'intestazione ha almeno 20 byte, il
campo IHL varia da 5 a 15, cioè da 20 byte a 60 byte)
type of service: 6 bit, serve ad indicare la classe di servizio a cui è destinato il datagramma – i primi
3 bit indicano la priorità del datagramma (0 = normale, 7 = pacchetto di controllo), gli altri 3 sono bit si
segnalazione che indicano rispettivamente ritardo, capacità di trasporto e affidabilità, e servono per indicare al
router quale servizio offrire al pacchetto
total lenght: 16 bit, lunghezza totale in byte (intestazione + dati), questo impone la dimensione
massima del pacchetto a 65.535 byte
identification: 16 bit, identificatore di un pacchetto frammentato (indica al ricevitore a quale
pacchetto appartiene il frammento ricevuto)
DF (Don't Fragment): 1 bit, impone al router di non frammentare il datagramma (perché il ricevitore
non è in grado di ricomporlo)
MF (More Fragments): 1 bit, indica che il pacchetto è un frammento (l'ultimo frammento lo imposta
a 0)
Fragment offset: 13 bit, indica la posizione del frammento del datagramma corrente (pertanto ogni
datagramma può essere diviso al più in 8.192 frammenti, per una dimensione massima del datagramma di
8.192x8=65.536)
time to live: 8 bit, contatore usato per limitare la vita di un pacchetto (viene decrementato ad ogni
salto)
protocol: 8 bit, contiene il codice del protocollo di trasporto al quale passare i dati (ad es. TCP o
UDP)
header checksum: 16 bit, somma (in complemento a 1) le 5 parole da 16 bit precedenti, e ne
prende il complemento a 1 della somma (in ricezione, eseguendo la somma delle 6 parole dovrebbe venire 0)
source/destination address: entrambi da 32 bit, specificano il numero della rete, e il numero
dell'host in tale rete, delle macchine in gioco
options: 0 o più byte (multipli di 4)
Ogni opzione inizia con un byte che la identifica, e può essere seguita da un altro byte, option lenght, che ne
indica la lunghezza (in byte).
Opzioni principali:
security: indica il livello di segretezza delle informazioni contenute (in realtà facilitano la rilevazione
di informazioni segrete)
strict source routing (instradamento definito strettamente dalla sorgente): specifica il percorso
completo dalla sorgente alla destinazione mediante una lista di indirizzi IP
loose source routing (instradamento definito lascamente dalla sorgente): specifica un'insieme
di router che devono essere percorsi (funge da guida all'instradamento)
record route: dice ad ogni router di aggiungere il proprio indirizzo IP al campo delle opzioni (usato
per individuare errori negli algoritmi di routing)
timestamp: dice ad ogni router di registrare la data e l'ora di elaborazione (32 bit)
Indirizzi IP
Ogni host e router possiede un indirizzo, lungo 32 bit, che identifica la rete (dall'esterno) e l'host
(dall'interno). In realtà questi indirizzi non si riferiscono agli host, ma alle loro schede di rete, quindi deve
esistere un'associazione tra indirizzo IP e indirizzo MAC.
Per evitare conflitti tali numeri vengono gestiti da un ente chiamato .
ICANN
Gli indirizzi sono divisi in cinque categorie, che vengono discriminate in base al valore dei primi bit (quelli più
significativi):
classe A: inizia con 0 – 7 bit rete + 24 bit host
classe B: 10 – 14 bit rete + 16 bit host
classe C: 110 – 21 bit rete + 8 bit host
classe D: 1110 – 28 bit per indirizzi in multicast
classe E: 1111 – 28 bit riservati a scopi futuri
Per la gestione di questi indirizzi ogni router ha una tabella interna contenente indirizzi verso reti esterne
(indirizzi IP con host=0) e indirizzi locali (indirizzi IP con rete locale e host impostato) che usa per inoltrare i
pacchetti sulla linea appropriata.
Se il router non conosce l'indirizzo di rete di un pacchetto, inoltra il pacchetto verso un router predefinito
contenente tabelle più estese.
Indirizzi speciali:
0.0.0.0: usato dagli host al momento del boot
255.255.255.255: broadcast sulla rete locale
rete=0...0: identificano la rete locale; gli host possono inviare pacchetti ad altri host nella rete locale
senza conoscerne l'indirizzo (purché sappiano la classe usata, per sapere quanto è grande il campo del
numero di rete)
rete specificata, host=1...1: trasmissione broadcast sulla rete esterna specificata (tale rete deve
supportare questa modalità)
indirizzi del tipo 127.x.y.z: riservati per le prove di loopback; i pacchetti inviati a questo indirizzo
vengono riconosciuti dal proprio strato network, e trattati come pacchetti in arrivo.
Sottoreti
Una rete con indirizzo di classe B può possedere fino a 65.534 host. Una tale rete può essere difficile da
gestire in quanto il router principale dovrebbe contenere una tabella molto grande (per tutti gli host della
rete).
Una soluzione potrebbe essere l'utilizzo di diversi indirizzi di rete. In Internet però gli indirizzi sono preziosi,
quindi la soluzione consiste nel suddividere la rete in più sottoreti. Questo può essere implementato,
mantenendo l'indirizzo di rete, “rubando” i bit necessari al campo host, ed è del tutto invisibile all'esterno
della rete.
Ad esempio, un indirizzo di classe B usa 14 bit per il numero di rete e 16 bit per il numero di host. Usando 5
bit per il numero di sottorete è possibile creare fino a 32 sottoreti da 2046 host ciascuna.
Per implementare la sottorete, il router deve sapere quanti bit usare per il numero di sottorete. A questo
scopo viene usato un numero di 32 bit, detto maschera di sottorete (subnet mask), che applicato ad un
indirizzo tramite l'and binario ne elimina il numero di host.
Una subnet mask può essere scritta come 255.255.248.0, oppure esplicitando il numero di bit a 1, nella
forma /21.
Il sistema d'indirizzamento senza sottoreti può essere visto come caso particolare del sistema con sottoreti,
infatti, ad esempio, un indirizzo di classe A non ha un numero di sottorete, quindi la subnet mask è /8.
Questo rende l'implementazione della tecnica delle sottoreti molto semplice: basta consentire ad ogni router
di applicare la subnet mask agli indirizzi per eliminarne il numero di host e cercare il risultato nelle proprie
tabelle. Questo comporta anche una diminuzione della dimensione delle tabelle di routing in quanto viene
creata una gerarchia a tre livelli: rete, sottorete, host.
NAT (Network Address Translation)
Il NAT fornisce una soluzione temporanea (prima del passaggio a Ipv6) al problema dell'esaurimento degli
indirizzi. Anziché assegnare ad ogni host di una rete un proprio IP si assegna alla singola rete (che viene
“vista come un grande host”) un unico indirizzo. Questa sistema prevede che l'intera rete sia collegata ad
Internet tramite un router, che gestisce il NAT.
Gli host della rete sono “privati”, quindi sono estranei alla rete, pertanto sono stati previsti tre intervalli di
indirizzi IP da riservare all'uso interno (le classi sono ignorate):
10.0.0.0 – 10.255.255.255/24 172.16.0.0 – 172.32.255.255/20 192.168.0.0 – 192.168.255.255/16
I pacchetti uscenti dalla rete passano attraverso un dispositivo NAT che sostituisce l'indirizzo IP sorgente con
l'indirizzo della rete. I pacchetti entranti devono essere inoltrati al giusto host. A tal fine risulta necessario
violare il principio secondo il quale uno strato non deve saper nulla dello strato superiore, infatti lo strato
network deve esaminare il carico contenuto nel pacchetto per vedere la porta sorgente. Il dispositivo
sostituisce quindi tale porta con una sua porta libera, che usa come indice per determinare l'host su cui
inoltrare poi i pacchetti in arrivo. La modifica del pacchetto IP e del carico comporta il ricalcolo dei checksum.
Lo strato trasporto
è è
Lo strato trasporto non uno strato qualsiasi: il cuore dell'intera gerarchia di protocolli.
n è
suo compito fornire il trasporto dei dati. affidabile ed efficiente in termini di costi, dal
computer di origine a quello di destinazione. indipendentemente dalla rete o dalle reti fisiche
effettivamente utilizzate.
I
6.1.1 servizi offerti agii strati superiori
L'obiettivo finale dello strato trasporto è fornire un servizio efficace, affidabile ed efficiente
in termini di costi ai suoi utenti, che normalmente sono processi nello strato niti dallo strato network. L'hardware
applicazione. Per raggiungere questo obiettivo, lo strato trasporto utilizza i servizi for
e10 il software all'interno dello strato trasporto che
svolge il lavoro chiamato entità di trasporto. L'entità di trasporto può essere situata
è
nel kernel del sistema operativo.
In sostanza, l'esistenza dello strato trasporto consente al servizio di trasporto di essere più
I
affidabile del sottostante servizio di rete. pacchetti persi e i dati danneggiati possono
essere rilevati e compensati dallo strato trasporto. I quattro strati inferiori possono essere visti come
i fornitori del servizio di trasporto, mentre gli strati superiori sono gli utenti del servizio
di trasporto.
Le
6.1.2 del di
primitive servizio trasporto
Per consentire agli utenti di accedere al servizio di trasporto, lo strato trasporto deve fornire
alcune funzioni ai programmi applicativi, vale a un'interfaccia per il servizio di trasporto.
dire
Ogni servizio di trasporto ha la propria interfaccia.
Una differenza tra il servizio network e il servizio di trasporto riguarda i destinatari
il servizio network utilizzato solo dalle entità di trasporto. Pochi utenti scrivono le loro
è
entità di trasporto, quindi pochi utenti o programmi hanno visibilità del nudo servizio network.
e
Al contrario, molti programmi (e programmatori) vedono le primitive di trasporto. Di
conseguenza, il servizio di trasporto deve essere conveniente e facile utilizzare.
da
ora necessaria una breve nota sulla terminologia. In mancanza di un termine migliore,
è TPDU
utilizzeremo in modo riluttante lo sgraziato acronimo (Transport Prorocol Data
unità dati del protocollo trasporto) per i messaggi inviati da entità di trasporto
unit, di
verso entità di