39
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

Protocollo IP 2014 - poliba.it · Il protocollo IP Corso di Reti di Telecomunicazione a.a. 2013/14 - Ingegneria Elettronica e delle Telecomunicazioni – - Ingegneria Informatica

  • Upload
    others

  • View
    3

  • 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)