Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
Il protocollo IP
Corso di Reti di Telecomunicazione
a.a. 2013/14 - Ingegneria Elettronica e delle Telecomunicazioni –
- Ingegneria Informatica e dell’Automazione -
-
Ing. G. Boggia
2
Internet Protocol (IP)
• È responsabile dell’instradamento delle informazioni immesse nella rete
• Offre un servizio connection less (datagram) inaffidabile
• Ogni nodo della rete è individuato da almeno un indirizzo IP
• Ogni interfaccia (collegamento fisico) ha un indirizzo IP
• Ogni PDU di livello 3 contiene gli indirizzi IP degli host mittente e destinatario
• Ogni Router (dispositivo di forwarding di livello 3) inoltra le PDU ricevute sulla base di un algoritmo di routing
• I router si basano sul paradigma store&forward
• I router hanno l’unico ruolo di instradare i datagram IP senza garantire che i datagrammi giungano effettivamente a destinazione (servizio best effort)
• I router isolano i domini di broadcast
3
Reti IP: Esempio • Interconnessione di reti (es. LAN, WAN) mediante router • Ogni router interconnette almeno due reti diverse • Ogni rete è caratterizzata da un suo indirizzo di rete
– Anche una connessione punto-punto tra le interfacce di due router è una rete
Reti Host
4
Datagramma IP: formato generale
Version
32 bit
Type Of Service Total Length
Identification Fragment Offset Flag
TTL Protocol Header checksum
Source address
Destination address
Options
Data
• Viene comunemente rappresentato IN righe multiple di 32 bit
• L’intestazione ha dimensione variabile (minimo 20 byte) in funzione della presenza o meno delle opzioni (campo Options nell’intestazione)
Header Length
Header
Payload
5
Datagramma IP: Version
Version
32 bit
Header Length Type Of Service Total Length
Identification Fragment Offset Flag
TTL Protocol Header checksum
Source address
Destination address
Options
Data
Version (4 bit):
Definisce la versione del protocollo (IPv4 o IPv6)
Es. IPv4 → Version = 4 (0100)
6
Datagramma IP: Header Length
Version
32 bit
Header Length Type Of Service Total Length
Identification Fragment Offset Flag
TTL Protocol Header checksum
Source address
Destination address
Options
Data
Header Length (4 bit):
• Lunghezza dell’intestazione del pacchetto IP, espressa in multipli di 4 byte
• Es. Se non ci sono le opzioni (come accade in genere) si ha
Header Length = 5 (0101)
7
Datagramma IP: Type Of Service
Version
32 bit
Header Length Type Of Service Total Length
Identification Fragment Offset Flag
TTL Protocol Header checksum
Source address
Destination address
Options
Data
Type Of Service (8 bit):
• Distingue i diversi tipi di pacchetti e, quindi, i requisiti di QoS (Quality of Service) richiesti dal flusso dati cui appartiene il datagramma
8
Quality of Service e Campo ToS • Il campo TOS viene utilizzato per definire il livello di Quality of
Service con cui trattare il pacchetto di un determinato flusso
Precedence D T R C 0
Utilizzo “classico” del TOS (poco usato)
DSCP ECN
• Definizione secondo lo standard Differentiated Services (come inoltrare il datagram: forwarding behavior)
• In base al DSCP si utilizzano politiche differenti di gestione del pacchetto
Differentiated Service Code Point (6 bit)
bit D - Utilizzare il path con delay minimo bit T - Utilizzare il path con throughput massimo bit R - Utilizzare il path con massima affidabilità bit C – Utilizzare il path con costo economico minimo
Utilizzo “moderno” del TOS
Explicit Congestion Notification
Precedenza del pacchetto (3 bit)
• Avverte il livello TCP di una congestione incipiente
9
Datagramma IP: Total Length
Version
32 bit
Header Length Type Of Service Total Length
Identification Fragment Offset Flag
TTL Protocol Header checksum
Source address
Destination address
Options
Data
Total Length (16 bit):
Lunghezza totale del datagramma espressa in byte (dim. max 65535 byte)
10
Datagramma IP: Total Length
Version
32 bit
Header Length Type Of Service Total Length
Identification Fragment Offset Flag
TTL Protocol Header checksum
Source address
Destination address
Options
Data
Identification (16 bit):
• Identifica in modo univoco un datagramma generato dal mittente • Utilizzato per la gestione della frammentazione dei pacchetti IP
11
Datagramma IP: Flag
Version
32 bit
Header Length Type Of Service Total Length
Identification Fragment Offset Flag
TTL Protocol Header checksum
Source address
Destination address
Options
Data
Flag (3 bit):
Informazioni utili alla frammentazione
- MF indica se il datagramma è l’ultimo dei frammenti
- DF indica se il datagramma puo’ o meno essere frammentato
DF MF not used DF = Don’t Fragment; MF = More Fragment
12
Datagramma IP: Fragment Offset
Version
32 bit
Header Length Type Of Service Total Length
Identification Fragment Offset Flag
TTL Protocol Header checksum
Source address
Destination address
Options
Data
Fragment Offset (13 bit): • Identifica lo spiazzamento dei dati nel caso essi siano un frammento di un
datagramma frammentato • Lo spiazzamento è espresso in multipli di 8 byte • L’offset fa riferimento alla posizione dei dati nel pacchetto originario
13
Frammentazione dei pacchetti IP
• Il pacchetto è frammentato da ogni router che ne verifica la lunghezza superiore alla MTU della linea di uscita
• Il nodo ricevente ricostruisce il pacchetto utilizzando i singoli frammenti
• Maximum Transmission U n i t ( M T U ) : m a s s i m a dimensione del payload a livello data-link (es. Ethernet: MTU = 1500 Byte)
• La MTU limita la dimensione del datagram IP
Id=776 Offset=0 MF=0
4000 Byte
MTU=1500
Id=776 Offset=0xB9* MF=1
Id=776 Offset=0 MF=1
Id=776 Offset=0x172** MF=0
1500 Byte
1500 Byte
1040 Byte
*0xB9 = 185 → 185·8=1480 Byte **0x172= 370 → 370·8=2960 Byte
14
Datagramma IP: TTL
Version
32 bit
Header Length Type Of Service Total Length
Identification Fragment Offset Flag
TTL Protocol Header checksum
Source address
Destination address
Options
Data
Time To Live (8 bit): • È impostato dal mittente (es. 128). • Impedisce che un pacchetto permanga indefinitamente in rete • Ogni router decrementa tale valore. Lo standard considera tale valore in secondi
e indica di ridurlo del tempo speso dal pacchetto nel router, riducendolo almeno di 1 se tale tempo è inferiore a 1 secondo. In pratica, ogni router lo riduce di 1.
• Quando raggiunge il valore 0 il datagram è scartato
15
Datagramma IP: Protocol
Version
32 bit
Header Length Type Of Service Total Length
Identification Fragment Offset Flag
TTL Protocol Header checksum
Source address
Destination address
Options
Data
Protocol (8 bit):
Indica il protocollo utilizzato dalla PDU incapsulata dal datagram (campo Data)
Es: TCP = 6
UDP = 17
16
Datagramma IP: Header Checksum
Version
32 bit
Header Length Type Of Service Total Length
Identification Fragment Offset Flag
TTL Protocol Header checksum
Source address
Destination address
Options
Data
Header Checksum (16 bit): • Si ottiene seguendo la procedura
- somma 16 bit a 16 bit tutti gli altri byte dell’header - somma dell’eventuale resto - complemento a 1 del risultato
• Se c’è un errore in fase di verifica del checksum, normalmente il pacchetto viene scartato
17
Datagramma IP: Source Address
Version
32 bit
Header Length Type Of Service Total Length
Identification Fragment Offset Flag
TTL Protocol Header checksum
Source address
Destination address
Options
Data
Source Address (32 bit): • Indirizzo IP host mittente
18
Datagramma IP: Destination Address
Version
32 bit
Header Length Type Of Service Total Length
Identification Fragment Offset Flag
TTL Protocol Header checksum
Source address
Destination address
Options
Data
Destination Address (32 bit): • Indirizzo IP host destinatario
19
Datagramma IP: Options
Version
32 bit
Header Length Type Of Service Total Length
Identification Fragment Offset Flag
TTL Protocol Header checksum
Source address
Destination address
Options
Data
Options • Opzioni per il routing del pacchetto • Estensioni delle intestazioni di IP • Poiché richiedono un carico di elaborazione molto variabile nei vari
router, sono poco usate
20
Indirizzamento IP
Host-id Net-id 32 bit
§ È composto da 32 bit § Si esprime in forma decimale puntata, es. 193.204.49.40 § È suddiviso in una porzione dedicata all’identificativo della rete (Net-id) ed una
all’identificativo degli host (host-id) § Nell’indirizzamento classico (classful addressing) si introducono 5 classi di
indirizzi IP: A, B, C, D, E § Attualmente si utilizza l’indirizzamento “senza classi” CIDR (Classless
InterDomain Routing) § L’assegnazione degli indirizzi è compito dell’Internet Assigned Number
Authority (IANA) gestita dall’ICANN (Internet Corporation for Assigned Names and Numbers)
§ Ogni interfaccia (host) della rete IP ha un suo indirizzo
Identifica una rete
Identifica un host della rete
21
Indirizzamento Classless
• È ormai comunemente usato al posto dell’indirizzamento classful • CIDR (Classless InterDomain Routing) considera la parte di
indirizzo IP relativa alla rete di lunghezza qualsiasi • Il formato dell’indirizzo è del tipo a.b.c.d/x dove x, maschera di rete,
indica il numero di bit più significativi che individua la rete • Si riducono le dimensioni delle tabelle di routing
Host-id Net-id
Es. 192.168.0.0/16
Indirizzo IP
Maschera di rete (Subnet Mask)
• La maschera stabilisce il numero di bit dell’indirizzo che rappresentano la rete
• I restanti bit rappresentano l’host
• La maschera può anche essere rappresentata in forma decimale puntata
- Es. /20 → 255.255.240.0
22
Indirizzi di rete IP
• Un indirizzo di rete ha tutti 0 nella porzione di host – Es. 193.204.49.0/24 (i primi 24 bit sono quelli della rete, gli ultimi 8 quelli
di host; poiché questi ultimi sono nulli, si tratta di un indirizzo di rete) – Es. 193.205.49.192/24 (stavolta i bit di host sono 11000000, per cui non
sono tutti nulli, l’indirizzo considerato è quello di un host della rete 193.205.49.0/24)
• Assegnato un indirizzo di rete, è possibile partizionare tale rete in sottoreti modificando la maschera
• Una parte dei bit adibiti all’identificazione dell’host sono dedicati alla definizione di una sottorete (subnet-id)
• La suddivisione in sottoreti è “invisibile” all’esterno della rete
Host-id Net-id 32 bit
Identifica una rete
Identifica un host della rete
Identifica una sottorete
Subnet-id
23
Subnetting: esempio1
• Rete: 172.10.0.0 (Classe B)
• 4 sottoreti à 2 bit per subnet-id
• Subnet mask: 255.255.192.0 à /18
11111111 11111111 000000 00000000 11
Subnet-id=00
Subnet-id=01
Subnet-id=10
Subnet-id=11
24
Subnetting: esempio2
• Rete: 172.10.0.0 (Classe B)
• 8 sottoreti à 3 bit per subnet-id
• Subnet mask: 255.255.224.0 à /19
11111111 11111111 00000 00000000 111
Subnet-id 000
Subnet-id 001
Subnet-id 010
Subnet-id 111
25
Net-id
Classi di Indirizzi IP (classful addressing)
Host-id Net-id 0 Classe A:
0.0.0.0 – 127.255.255.255
Host-id 10 Classe B:
128.0.0.0 – 191.255.255.255
Host-id Net-id 110 Classe C:
192.0.0.0 – 223.255.255.255
32 bit
Indirizzo Multicast 1110 Classe D:
224.0.0.0 – 239.255.255.255
riservato 1111 Classe E:
240.0.0.0 – 255.255.255.255
0-127
128-191
192-223
224-239
240-255
26
Indirizzi IP: classificazione • Pubblici: l’indirizzo può essere utilizzato esclusivamente da una
specifica organizzazione e sono usati per instradare pacchetti in Internet.
• Privati: possono essere usati solo in una rete privata, ma non si possono instradare pacchetti con tali indirizzi in Internet (utili per motivi di sicurezza e/o per risolvere il problema dello spazio di indirizzamento)
– 10.0.0.0/8
– 172.16.0.0/12
– 192.168.0.0/16
• Statici: l’indirizzo IP dell’host non varia nel tempo
• Dinamici: l’indirizzo IP dell’host varia nel tempo (es. connessione non permanente ad Internet tramite ISP, Internet Service Provider)
27
Variable Length Subnet Mask (VLSM)
5 Subnet ⇒ 3 bit
25-2=30 host per subnet
Divisione classica VLSM
11111111 00000 111 11111111 11111111
Net A: 192.168.1.0/27 (14 host su 30)
Net B: 192.168.1.32/27 (28 host su 30)
Net C: 192.168.1.64/27 (2 host su 30)
Net D: 192.168.1.96/27 (7 host su 30)
Net E: 192.168.1.128/27 (28 host su 30)
192.168.1.160/27 (unused)
192.168.1.192/27 (unused)
192.168.1.224/27 (unused)
Net B: 192.168.1.0/27 (28 host su 30)
Net E: 192.168.1.32/27 (28 host su 30)
Net A: 192.168.1.64/28 (14 host su 14)
Net D: 192.168.1.80/28 (7 host su 14)
Net C: 192.168.1.96/30 (2 host su 2)
unused
• 5 Subnet ⇒ n° bit variabile • Si parte dalla rete con maggiori
esigenze (B e E) – 5 bit x host: B e E – 4 bit x host: A e D – 2 bit x host: C
• Minore spreco di indirizzi • Maggiore disponibilità per espansioni
della rete • Maggiore difficoltà nel realizzare il
piano di indirizzamento
Rete: 192.168.10.0/24
NetA:14 host
NetE:28 hostNetB:
28 host
NetD:7 host
NetC:2 host
28
Indirizzi IP speciali
net ID subnet ID host ID Source ? Dest.? Description
0 0 OK Mai Questo host su questa rete
0 hostID OK Mai Host specifico su questa rete
127 Qualunque OK OK Indirizzo di loopback
255 255 Mai OK Broadcast Limitato localmente (mai inoltrato)
Netid 255 Mai OK Broadcast diretto alla rete
Netid subnetID 255 Mai OK Broadcast diretto alla sottorete
29
Address Resolution Protocol (ARP)
• Protocollo di risoluzione degli indirizzi MAC • È utilizzato per conoscere il MAC address corrispondente ad un
determinato indirizzo IP • Siano A l’host mittente e B l’host di cui non si conosce il MAC address • L’host A invia una richiesta in Broadcast indicando l’indirizzo IP di B • B risponderà ad A con una reply Unicast • Ogni PC ha una cache in cui memorizza le risoluzioni più recenti
Ethernet Dest. Add. Type Hw
size Sender
Eth. Addr. Hw type
Ethernet Sour. Add.
6 6 2
Prot. type
2 2
Prot size
1 1
Sender IP Addr.
Target Eth. Addr.
Target IP Addr.
6 6 4 4
28 byte ARP request/reply
op.
2
Eth. vII header
Ethernet Padding FCS
4 18
30
ARP esempio
Eth. DA - FF:FF:FF:FF:FF:FF Eth. SA - aa:bb:cc:00:11:22 Arp type – 0x0806 op – 1 (ARP request) Sender Hw Add - aa:bb:cc:00:11:22 Sender IP Add - 192.168.10.10 Target Eth. Add.- 0:0:0:0:0:0 Target IP Add. – 192.168.10.30
Hw - aa:bb:cc:00:11:22 IP - 192.168.10.10
Hw - 00:ee:cc:00:11:33 IP - 192.168.10.30
2. Arp Reply
Eth. DA – aa:bb:cc:00:11:22 Eth. SA – 00:ee:cc:00:11:33 Arp type – 0x0806 op – 2 (ARP reply) Sender Hw Add – 00:ee:cc:00:11:33 Sender IP Add - 192.168.10.30 Target Eth. Add.- aa:bb:cc:00:11:22 Target IP Add. – 192.168.10.10
1. Arp request
31
Trasferimento di pacchetti tra reti diverse (1)
• A conosce l’indirizzo IP di B (destinatario) • Considerando la propria maschera, verifica se la rete di B coincide con la sua rete • Se ciò non accade, A capisce che B è in una rete esterna • A si rivolge al proprio default gateway (router che interconnette la sua LAN con l’esterno, nell’esempio R1)
• A deve conoscere l’indirizzo IP del default gateway (tramite DHCP oppure configurato a mano da un operatore)
• Se A non conosce il MAC address di R1, invia una richiesta ARP con target address l’indirizzo IP di R1
• A invia il pacchetto IP con destinatario B al router R1 (a livello MAC il destinatario è R1)
IP Source A IP Dest. B
MAC Dest. R1 MAC Source A
A B
R1
R2 R3
R4
A R1 R2 R4 B
IP Source A IP Dest. B
L2 Dest. R2 L2 Source R1
IP Source A IP Dest. B
MAC Dest. B MAC Source R4
32
Trasferimento di pacchetti tra reti diverse (2)
• R1 legge il pacchetto a livello IP e consulta la propria tabella di routing per stabilire a chi inoltrare il pacchetto
• R1 inoltra il pacchetto a R2. In qualche modo conosce o apprende l’indirizzo di livello 2 di R2 e invia un frame con, a livello 2, il proprio indirizzo mittente e l’indirizzo di livello 2 di R2. A livello IP l’indirizzo mittente è sempre quello di A e il destinatario quello di B.
• Attraverso i vari router, il pacchetto giunge al router R4 collegato alla rete di B • Se R4 non conosce il MAC address di B, invia una richiesta ARP con target address l’indirizzo IP di B e invia il pacchetto utilizzando, a livello MAC, il proprio MAC address come source address e quello di B come destination address
• B leggendo i livelli 2 e 3 riconosce i propri indirizzi MAC e IP e passa il payload ai livelli superiori.
IP Source A IP Dest. B
MAC Dest. R1 MAC Source A
A B
R1
R2 R3
R4
A R1 R2 R4 B
IP Source A IP Dest. B
L2 Dest. R2 L2 Source R1
IP Source A IP Dest. B
MAC Dest. B MAC Source R4
33
Trasferimento di pacchetti nella stessa rete
A B
• A conosce l’indirizzo IP di B (destinatario) • Considerando la propria maschera, verifica se la rete di B coincide con la sua rete • Se ciò accade, A capisce che B è nella sua rete • Se A non conosce il MAC address di B, invia una richiesta ARP con target address l’indirizzo IP di B
• A invia il pacchetto IP a B (a livello MAC il destinatario è sempre B)
IP Source A IP Dest. B
MAC Dest. B MAC Source A
A B
34
Dynamic Host Configuration Protocol (DHCP) • Consente ad un host di ottenere da un DHCP server:
– indirizzo IP
– indirizzo IP del router di default
– indirizzo IP del server DNS
• La richiesta è inviata dall’host in broadcast sulla rete locale
– Source IP address = 0.0.0.0 (indica che l’host non ha un indirizzo)
– Dest IP Address = 255.255.255.255
• Se non è disponibile alcun DHCP server nella rete locale, la richiesta può essere inoltrata verso un’altra rete (se il router di frontiera è opportunamente istruito)
• Se sono presenti più DHCP server nella medesima rete locale, dopo una fase di contesa, l’indirizzo IP è fornito dal server che per primo ha ricevuto la richiesta
35
Zero Configuration Networking
• Configurazione della rete in assenza di server e amministratori
• Sviluppato da IETF
• Ideale solo per piccole reti (dove non ci sono DHCP e DNS)
• Link-Local Address 169.254.0.0/16 (riservato dalla IANA) – estrazione casuale (distr. uniforme) di un indirizzo nel range [169.254.1.1 – 169.254.254.254]
– I primi e gli ultimi 256 indirizzi sono riservati per usi futuri
– Il generatore di numeri casuali inizializza il suo seed (seme) partendo dall’indirizzo MAC della scheda di rete
– Probing dell’indirizzo mediante ARP Probe, cioè un ARP Request con
“Sender IP Add.= all 0”; “Target HW Add. = all 0”; “Target IP Add. = IP da provare”
– Se un altro host ha lo stesso indirizzo, si sceglie casualmente un nuovo indirizzo
– Se nessun host ha l’indirizzo scelto, si annuncia tale indirizzo con un ARP Announcement con “Sender IP Add.= Target IP Add. = IP scelto”.
• Gli indirizzo Link-local sono di tipo privato e non possono essere usati per il forwarding di dati fuori dalla rete locale
36
Network Address Translation (NAT)
Internet
193.204.49.40
LAN
192.168.10.4
192.168.10.3
• Tutti gli host della rete locale possono usare l’indirizzo IP del router di frontiera per connettersi ad Internet
• Il NAT è un software eseguito presso il router di frontiera • Ogni host della LAN ha un indirizzo IP non visibile all’esterno della LAN • Tutti i datagram IP che viaggiano da (verso) la LAN hanno il medesimo indirizzo IP
mittente (destinazione) • Il NAT utilizza una Tabella di traduzione per selezionare a quale host della LAN è diretto
un datagram che proviene dall’esterno • La tabella di traduzione è costruita osservando le coppie indirizzo IP mittente-porta
mittente dei datagrammi in uscita • Se all’interno della LAN c’è un server che deve essere raggiunto dall’esterno, si crea
un’associazione statica tra indirizzo privato del server e un indirizzo pubblico del router di frontiera (NAT statico)
37
Esempio di funzionamento del NAT
Translated Response
Source 195.210.91.83 80
Destination 10.0.0.1 7000
Request
Source 10.0.0.1 7000
Destination 195.210.91.83 80
NAT
Client 10.0.0.1
Server 195.210.91.83
Translated Request
Source 193.204.49.40 7224
Destination 195.210.91.83 80
Response
Source 195.210.91.83 80
Destination 193.204.49.40 7224
Rete Privata
Internet
38
Internet Control Message Protocol (ICMP)
• È utilizzato per segnalare informazioni di controllo relative al livello di rete (quali l’occorrenza di una situazione di errore)
• I messaggi ICMP sono trasportati direttamente come payload di IP (Protocol type 1) • Un messaggio ICMP ha un campo tipo e codice e contiene l’header IP e i primi 8 byte
del datagram IP che causa la generazione del messaggio stesso • Possono essere comunicati altri dati (es. nome router e ind. IP nei TTL expired) • Si dividono in messaggi di errore e messaggi di richiesta
ICMP type Code Description
0 0 Echo replay – risposta al messaggio di eco (ping)
3 0 Destination network unreachable
3 1 Destination host unreachable
3 2 Destination protocol unreachable 3 3 Destination port unreachable 3 6 Cestination network unknown
3 7 Destination host unknown
4 0 Source quench – riduzione data rate
8 0 Echo request
9 0 Router advertisement
10 0 Router discovery
11 0 TTL expired
12 0 IP header bad
39
Esempio uso ICMP
• Ping (uso messaggi echo request e echo replay)
• Traceroute (invio di normali datagram IP con TTL crescente e ricezione di messaggi TTL expired)
Ping (Echo Request)
ICMP type 8 – Code 0
Ping (Echo Replay)
ICMP type 0 – Code 0
TTL=1
ICMP TTL expired (TTL iniziale 1)
TTL=2 TTL=3 TTL=4
ICMP TTL expired (TTL iniziale 2) IP datagram
ICMP TTL expired (TTL iniziale 3)
ICMP TTL expired (TTL iniziale 4)