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.
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.
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
PRINCIPI DELLA PROGETTAZIONE INTERNET
Assicurarsi che funzioni, prima di dichiarare terminato lo standard
Renderlo semplice
Fare scelte chiare (resistere alla ridondanza)
78 107
Pag. a
Sfruttare la modularità (per non dover modificare tutto)
Aspettarsi eterogeneità (sottoreti con caratteristiche molto diverse)
Per questo, evitare opzioni e parametri statici
Mirare ad un buon progetto non necessariamente perfetto
Essere rigorosi nella trasmissione e tolleranti nella ricezione
Sì alla scalabilità (es. database distribuiti)
Considerare prestazioni e costi
PROTOCOLLO IP
Protocollo senza connessione, non garantisce l'ordine né l'arrivo dei pacchetti, e usa
ICMP per il controllo errori. Garantisce solo Best Effort: servizi non garantiti perché si
appoggia su reti di cui non sa niente => non garantisce niente, né l’ordine dei
pacchetti, né il loro arrivo.
Indirizza, inoltra, frammenta e riassembla pacchetti. Si usa ICMP per risolvere i
problemi.
Funzionalità: tipiche dello strato di rete: indirizzamento, inoltro, frammentazione e
riassemblaggio pacchetti
FORMATO DATAGRAMMA IPV4
Versione 4 bit: versione del protocollo
adottata. E’ la più diffusa, ma possono
coesistere più versioni IP
contemporaneamente.
IHL (Ip Header Lenght): Poiché la lunghezza
dell’intestazione non è costante, c’è
bisogno di un campo che indichi la lunghezza dell’intestazione in
parole da 32 bit (min. 5-20 byte, max. 15-60 byte). Poi payload.
INTESTAZIONE: parte fissa 20byte
PAYLOAD: Opzionale, lunghezza variabile
Differentiated Service (type of service = 8 bit; 6 bit per classi di priorità, 2 bit
per segnali di explicit congestion):Specifica i livelli di qualità richiesti host per
host per quel particolare datagramma.
Vers. RFC791
o Bit 1-3 per indicare l’importanza del datagramma da 0 a 7
Bit 4 (D-bit) per richiedere basso Delay (1000)
Bit 5 (T-bit): per richiedere il massimo throughput (0100)
Bit 6 (R-bit): per richiedere alta affidabilità (0010)
Bit 7-8: per usi futuri
Vers. RFC1349
o Bit 1-6: come nella versione RFC791
o Bit 7: per richiedere minimo costo
o
Total Lenght: Specifica la lunghezza totale (intestazione + payload) del
16
datagramma 16 bit (2 -1 = 65535byte (troppi per Internet); i campi successivi
sono dedicati alla frammentazione.
Identification (16 bit): è il numero del datagramma assegnato dal processo
sorgente. E’ importante in caso di frammentazione per ricostruire il
datagramma completo. Viene incrementato per ogni datagramma inviato. Il
router, che frammenta il datagramma, copia questo valore in ogni frammento.
Flags (3 bit): X, DF, MF
o X per usi futuri
DF (don’t fragment): se DF==1, il datagramma non può essere
frammentato; se DF == 0 sì.
79 107
Pag. a
MF (more fragment): se MF == 0 è l’ultimo frammento; se ==1
altri frammenti seguiranno
Fragment Offset (13 bit): indica la posizione dei dati nel frammento originale in
13
parole di 8 byte. Possono essere supportati fino a 2 = 8192 frammenti. Se
anche un solo pacchetto non arriva a destinazione, viene scartato l’intero
datagramma.
Time to Live (8 bit): tempo di vita, è contatore utilizzato per limitare la vita del
pacchetto (se ci sono loop bisogna evitare che circoli per sempre); inizializzato
dalla sorgente e decrementato ad ogni router attraversato (salto); quando
raggiunge lo zero, il datagramma è scartato; il datagramma può attraversare
8
fino a 2 -1 router = 254
Protocol (8 bit): indica a quale processo di trasporto deve essere consegnato il
payload del datagramma: TCP, UDP o altri.
Header Checksum (16 bit): verifica la correttezza dell’intestazione; l’algoritmo
somma tutti i gruppi di 16 bit e ne considera il complemento ad 1: deve essere
0 all’arrivo; deve essere ricalcolato ad ogni salto perché il campo time-to-live
cambia sempre
Source Address (32 bit) e Destination Address (32 bit):
indirizzo IP dell’interfaccia sorgente (numero di rete e di
host), non dell’utente
Options (lunghezza variabile a multipli di 4 byte): per
includere nuove info non presenti nel formato originale o
raramente usate->
Padding (variabile): rende l’intestazione di lunghezza multipla di 32 bit
FRAMMENTAZIONE DEL DATAGRAMMA
Due strategie: trasparente e non trasparente. iP implementa la strategia non
trasparente: una volta che il datagramma è stato frammentato, ogni frammento è
trattato come se fosse un pacchetto originale.
l’host sorgente invia datagramma IP scegliendo la dimensione uguale alla MTU
della rete sorgente
forse verrà frammentato: scambiando info, si adatta alla minima MTU delle
sottoreti attraversate.
l’intestazione è copiata in ogni frammento. Inoltre ogni frammento ha anche
altre informazioni relative al datagramma originale come “l’identification”
(numero del programma)
ogni datagramma è riassemblato a destinazione. Se manca un pezzo, viene
scartato.
se il datagramma ha DF = 1 (non può essere frammentato), passa in una
sottorete con MTU inferiore e viene scartato con messaggio ICMP.
INDIRIZZAMENTO E INSTRADAMENTO INTERNET
L’indirizzo IP è universale nel mondo. Tutti gli host sono raggiunti in modo univoco.
Ovviamente non ci possono essere due host nel mondo con lo stesso indirizzo IP.
L’IP identifica l’interfaccia di rete di un host sorgente/destinatario, non specifica
l’utente a livello applicativo.
Se l’host è collegato a 2 reti, ha 2 ip address.
Lo schema di indirizzamento gerarchico è sovrapposto agli indirizzi della rete
attraversata: il computer ha un indirizzo che lo rende utente di Internet, ma anche un
indirizzo MAC Ethernet che lo rende utente della rete Ethernet.
STRATEGIE DI INDIRIZZAMENTO:
classfull
80 107
Pag. a
subnet mask
CIDR
NAT
CLASSFULL (prima del 1993): indirizzo a 32 bit diviso in 5 classi di indirizzi: A B C D E
32
2 indirizzi divisi in due parti:
porzione rete (prefix)
porzione host IP_address = Net_id.Host_id
Notazione decimale puntata.
Classe A:
1 bit (0) di intestazione, 7 bit indirizzo di rete (Net_id),
24 bit indirizzo host (Host_id)
:
Classe B
2 bit (10) di intestazione, 14 bit indirizzo di rete, 16 bit
indirizzo host
Classe C:
3 bit (110) di intestazione, 21 bit indirizzo rete, 8 bit indirizzo host
Classe D: usata per il multicast, cioè spedizione a gruppi di host.
4 bit (1110) di intestazione, 28 bit indirizzo unico, condiviso da tutti gli host del gruppo
che ha quell'indirizzo
Classe E: indirizzi riservati per scopi di ricerca, usi futuri.
4 bit 1111 di intestazione, 28 bit di indirizzo unico.
Di fatto, le classi normalmente utilizzabili sono solo A,B,C. Ognuno dei 4 byte è
rappresentato in forma decimale con un numero che varia tra 0 e 255.
L’assegnamento è gestito da ente no-profit chiamato ICANN. Lo schema di
indirizzamento IP è gerarchico: gli indirizzi nella stessa rete hanno blocchi contigui. La
suddivisione tra Net_id e Host_id non è fissa.
Indirizzamenti speciali: tutti 0 = a questo host, tutti 1 = a tutti, 127.xx.yy.zz
(01111111.xx.yy.zz) = loopback (invia indietro a te stesso)
INSTRADAMENTO PER PROTOCOLLO IP
Sappiamo che i router processano i datagrammi in due fasi:
Routing: creazione delle tabelle di instradamento e
loro gestione
Forwarding: vero e proprio inoltro
Instradamento: scegliere un percorso per permettere ai
datagrammi di arrivare a destinazione.
Ogni datagramma passa attraverso vari router e sottoreti. I
router inoltrano i datagrammi verso la sottorete in cui si
trova l’host destinazione considerando solo la parte Net_id
dell’indirizzo. La parte Host_id viene considerata quando il
datagramma arriva nella sottorete dell’host di
destinazione. Esempio di instradamento per il protocollo IP
->
Inoltro:
Diretto: host sorgente e host destinazione sono nella stessa sottorete; Net_id
coincidono; il mittente, guardando l’ip della destinazione, capisce che si trova
nella sua stessa rete; consulta la tabella di corrispondenza tra indirizzi IP e MAC
nel caso di rete locale; passa pacchetti a livello inferiore con header MAC del
destinatario
Indiretto: i due host non si trovano nella stessa rete => il mittente deve
scegliere il router a cui inviare il datagramma; due possibilità:
81 107
Pag. a
invia il pacchetto ad un altro router con inoltro diretto (tabelle di routing),
o passandolo a livello inferiore con header MAC
invia il pacchetto all’host destinazione se si trova nella stessa sottorete
o del router (attraverso inoltro diretto)
Le tabelle di routing contengono triple:
indirizzo della rete di destinazione (R)
indirizzo del prossimo router IP (I)
linea di uscita (T)
Come nei protocolli senza connessione, indicano solo il passo successivo, non il
percorso completo. Ogni router prende decisioni indipendentemente dagli altri router
(in locale).
Necessità di avere Tabelle di routing Dinamiche: ogni router impara nel tempo e le
tiene costantemente aggiornate. A causa di instabilità di Internet, nuovi host e reti
vengono costantemente aggiunti/rimossi. In caso di errore alcuni percorsi potrebbero
non essere usati ulteriormente. Imparato un percorso, un router lo memorizza e
continua ad usalo per un certo periodo di tempo. Alcuni protocolli sono concepiti per il
controllo e la gestione della rete (es. SNMP, CMOT).
ALGORITMO DI INOLTRO
Si applica al generico router x (IP_addr_X) per ogni pacchetto ricevuto:
estrai l’indirizzo IP nel campo “destination IP address” del pacchetto ricevuto
(IP_addr_Y)
se nel campo “source route option” è richiesto uno specifico percorso, inoltralo
su quello
se l’indirizzo coincide con il router x stesso, estrai il payload e passalo allo strato
superiore secondo quanto indicato nel campo “protocol”
decrementa il TTL del datagramma
se TTL == 0, scarta il pacchetto e invia un messaggio all’host sorgente tramite
ICMP, altrimenti valuta Net_id
se Net_id coincide con una delle reti a cui è connesso il router x, inoltralo
direttamente traducendo l’indirizzo IP in indirizzo fisico
altrimenti, se Net_id è in tabella di routing, inoltralo secondo la tabella
altrimenti, invia pacchetto a router di default
altrimenti dichiara errore e scarta il pacchet