Il livello Network del TCP/IP.



Documenti analoghi
network subnet host Classe A poche reti di dimensioni molto grandi 127

Il livello Network del TCP/IP. Il protocollo IP (versione 4)

Protocolli di Comunicazione

Protocollo IP e collegati

IP (Internet Protocol) sta al livello 2 della scala Tcp/Ip o al livello 3 della scala ISO/OSI. Un indirizzo IP identifica in modo logico (non fisico

SWITCH. 100 Mb/s (UTP cat. 5E) Mb/s SWITCH. (UTP cat. 5E) 100 Mb/s. (UTP cat.

Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete

Reti di Calcolatori. Il software

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori I

Determinare la grandezza della sottorete

IP Internet Protocol

Reti di Telecomunicazione Lezione 8

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Parte II Lezione 5

Reti di Calcolatori

Reti di calcolatori. Lezione del 10 giugno 2004

INDIRIZZI IP ARCHITETTURA GENERALE DEGLI INDIRIZZI IP FORME DI INDIRIZZI IP CINQUE FORME DI INDIRIZZI IP

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori (a.a. 2010/11)

Inizializzazione degli Host. BOOTP e DHCP

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

Internetworking TCP/IP: esercizi

ARCHITETTURA DI RETE FOLEGNANI ANDREA

Interconnessione di reti

Linux User Group Cremona CORSO RETI

Introduzione al TCP/IP Indirizzi IP Subnet Mask Frame IP Meccanismi di comunicazione tra reti diverse Classi di indirizzi IP Indirizzi IP privati e

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

Corso di Sistemi di Elaborazione delle informazioni. Reti di calcolatori 2 a lezione a.a. 2009/2010 Francesco Fontanella

Il routing in Internet Exterior Gateway Protocols

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori a.a. 2009/10

IL LIVELLO RETE IN INTERNET Protocollo IP

Reti. Reti. IPv4: concetti fondamentali. arp (address resolution protocol) Architettura a livelli (modello OSI)

ICMP OSI. Internet Protocol Suite. Telnet FTP SMTP SNMP TCP e UDP NFS. Application XDR. Presentation. Session RPC. Transport.

Internet e protocollo TCP/IP

Politecnico di Bari. Facoltà di Ingegneria Elettronica. Corso di Reti di Telecomunicazioni

Dal protocollo IP ai livelli superiori

GLI INDIRIZZI DELL INTERNET PROTOCOL (IP ADDRESS) 2. Fondamenti sugli indirizzi dell Internet Protocol 2. Struttura di un indirizzo IP 2

DA SA Type Data (IP, ARP, etc.) Padding FCS

ARP e instradamento IP

Transmission Control Protocol

Il modello TCP/IP. Sommario

Gestione degli indirizzi

UDP. Livello di Trasporto. Demultiplexing dei Messaggi. Esempio di Demultiplexing

Elementi di Informatica e Programmazione

PARTE 1 richiami. SUITE PROTOCOLLI TCP/IP ( I protocolli di Internet )

ARP (Address Resolution Protocol)

Indirizzi IP. Indirizzi IP

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI

Lo scenario: la definizione di Internet

GLI APPARATI PER L INTERCONNESSIONE DI RETI LOCALI 1. Il Repeater 2. L Hub 2. Il Bridge 4. Lo Switch 4. Router 6

Firewall e NAT A.A. 2005/2006. Walter Cerroni. Protezione di host: personal firewall

CORSO DI RETI SSIS. Lezione n.2. 2 Novembre 2005 Laura Ricci

COMPLESSO SCOLASTICO INTERNAZIONALE GIOVANNI PAOLO II. Pianificazione di reti IP (subnetting)

Forme di indirizzamento

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Venerdì 18 Febbraio 2005, ore 9.30

Gestione degli indirizzi

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

Identità sulla rete protocolli di trasmissione (TCP-IP) L architettura del sistema. Dal livello A al livello B

ESERCIZIO NUMERO 1 ESERCIZIO NUM. 2

Università degli Studi di Pisa Dipartimento di Informatica. NAT & Firewalls

INTRODUZIONE ALLE RETI: UN APPROCCIO PRATICO

Il livello 3 della pila ISO/OSI. Il protocollo IP e il protocollo ICMP

3. Introduzione all'internetworking

Gli indirizzi dell Internet Protocol. IP Address

Reti di Telecomunicazione Lezione 6

10. Stratificazione dei protocolli

Elementi di Informatica e Programmazione

5. Traduzione degli indirizzi di rete in indirizzi fisici: ARP

Indirizzo IP. Come si distinguono? Indirizzo IP : Network address : Host address: : 134

VPN CIRCUITI VIRTUALI

Livello di Rete. Gaia Maselli

Informatica per la comunicazione" - lezione 8 -

Reti LAN. IZ3MEZ Francesco Canova

8. IP: Instradamento dei datagrammi

Informazioni Generali (1/2)

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Reti diverse: la soluzione nativa

Protocollo ICMP, comandi ping e traceroute

Standard di comunicazione

L'indirizzo IP. Prof.ssa Sara Michelangeli

Cos è. Protocollo TCP/IP e indirizzi IP. Cos è. Cos è

P2-11: BOOTP e DHCP (Capitolo 23)

TCP/IP. Principali caratteristiche

Livello di Rete. Prof. Filippo Lanubile. Obiettivo

Altro esempio di HTML

PROF. Filippo CAPUANI TCP/IP

TEST DI RETI DI CALCOLATORI I (9400N) anno 1999/2000

INTERNET e RETI di CALCOLATORI A.A. 2011/2012 Capitolo 4 DHCP Dynamic Host Configuration Protocol Fausto Marcantoni fausto.marcantoni@unicam.

Access Control List (I parte)

Laboratorio di reti Relazione N 5 Gruppo 9. Vettorato Mattia Mesin Alberto

INFOCOM Dept. Antonio Cianfrani. Virtual LAN (VLAN)

Internet. Introduzione alle comunicazioni tra computer

Reti di calcolatori ed indirizzi IP

Prova di autovalutazione del modulo di Reti di Calcolatori IFTS Docente: Luciano Bononi


Gestione della memoria centrale

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Martedì 15 Novembre 2005

ASSEGNAZIONE INDIRIZZI IP

Progetto di RHS MicroAODV per Reti di Sensori A.A. 2007/2008

Calcolatrice IP Online

Laurea in INFORMATICA

Transcript:

Il livello Network del TCP/IP. Il protocollo IP (versione 4) L architettura TCP/IP (il cui nome più preciso è Internet Protocol Suite) è formata da diversi componenti, che si posizionano nello stack dei protocolli a partire dal livello 3 (network). I protocolli appartenenti a questa architettura sono specificati tramite standard denominati RFC (Request For Comments) disponibili in rete. Ad es. l RFC 791 specifica il protocollo IP. Il protocollo IP (Internet Protocol) è il protocollo principale del livello 3 dell architettura TCP/IP. Si tratta di un protocollo semplice, di tipo datagram ovvero senza connessione e non affidabile; non affidabile: il pacchetto inviato può essere perso, duplicato ritardato o consegnato fuori sequenza, ma il protocollo IP non informerà nè il trasmettitore nè il ricevitore. senza connessione: ogni pacchetto viene trattato in maniera indipendente dagli altri, pacchetti diversi aventi stesso mittente e stesso destinatario possono seguire percorsi diversi, alcuni possono essere consegnati ed altri no. Se le risorse della rete lo consentono il pacchetto viene portato a destinazione, in caso contrario 42 verrà scartato.

Il protocollo IP versione 6 Attualmente lo standard per il livello network dello stack TCP/IP è rappresentato dal protocollo IP versione 4, ma già dal 1995 è stata proposta una nuova versione del protocollo IP, nota col nome di IP versione 6 (RFC 1883: Internet Protocol, Version 6 (IPv6) Specification, December 1995 R. Hinden, S. Deering ). IP versione 4 versione soffre di almeno 3 problemi principali, che IPv6 vuole correggere: numero degli indirizzi IP disponibili ormai insufficiente: gli indirizzi IP sono composti da 4 byte (32 bit) e a causa del grande incremento del numero degli hosts nel mondo la disponibilità degli indirizzi è in forte calo. Il protocollo IPv6 prevede invece indirizzi formati da 16 byte (128 bit) e quindi rende disponibili un numero enorme di indirizzi. traffico gestito esclusivamente in modo best-effort: in IPv4 tutti i pacchetti sono trattati allo stesso modo dai router, anche se esiste nell header dei pacchetti IPv4 un campo priorità, che però non viene utilizzato. Con IPv6 si vuole definire delle classi di servizio a cui assegnare priorità diverse. Si vuole anche gestire la comunicazione con un meccanismo simile ad un protocollo con connessione, cioè implementando un flusso di dati. sicurezza: in IPv6 saranno rese standard e disponibili alcune primitive per l autenticazione e la cifratura dei dati. Nonostante queste prospettive, il protocollo IP versione 6 è ancora poco diffuso, e rimane ancora a livello di sperimentazione, forse perchè l adozione del nuovo protocollo costringerebbe a modificare fortemente gli apparati di rete esistenti, con un grande dispendio di denaro. Esistono a tuttoggi, in un oceano IPv4, solo delle isole in cui si parla IPv6. Nel seguito parleremo di IPv4, che rappresenta ancora lo standard più diffuso. 43

Funzioni del protocollo IPv4 Il protocollo IP svolge le seguenti funzioni: distingue ogni hosts, o meglio ogni scheda di rete mediante un identificatore, detto indirizzo IP. Un indirizzo IP di tipo single o unicast identifica un unico host, ma uno stesso host può avere più indirizzi IP unicast, tanti quante sono le schede di rete che possiede. Si parla allora di MultiHomed Systems. Ad es. i router hanno più indirizzi, perchè dovendo fungere da centri di smistamento dispongono di più schede di rete. Un host può comunque disporre di più schede di rete anche senza essere un router, cioè anche se non effettua un servizio di instradamento per pacchetti destinati ad altri hosts, ma dovrà prevedere una politica che definisca quale scheda di rete utilizzare per inviare i dati. riceve i dati (una sequenza di PDU) dal livello trasporto (4). incapsula ciascuna PDU ricevuta in pacchetti di dimensione massima 64 Kbyte (normalmente circa 1500 byte), aggiungendovi un proprio header (o intestazione). header del Datagram IP area dati del Datagram IP (PDU del livello trasporto) eventualmente frammenta i dati dei pacchetti all inizio o durante il trasporto, per inserirli nei frame di livello 2. instrada i pacchetti sulla rete, effettua la rilevazione, non la correzione, degli errori, alla destinazione, se necessario, riassembla i frammenti ricostruendo i pacchetti originali, estrae dai pacchetti i dati (PDU) del livello trasporto, consegna al livello trasporto i dati nell ordine in cui sono arrivati a destinazione, che può essere diverso dall ordine in cui sono partiti. 44

Un pacchetto IP è costituito da un header e da una parte dati, che rappresenta la porzione di dati del livello trasporto da trasferire. L header IP ha: una prima parte fissa di 20 bye, una seconda parte, opzionale, di lunghezza variabile, ma sempre multiplo di 4 byte ed è strutturato come segue. byte 0-3 byte 4-7 byte 8-11 byte 12-15 byte 16-19 byte... Il pacchetto IPv4: lo HEADER header del Datagram IP area dati del Datagram IP (PDU del livello trasporto) Version HLEN Type of service Total length Identification 32 bit 4 4 8 1 1 1 Il campo Version (di 4 bit) indica la versione del protocollo IP che ha generato il pacchetto. Serve al ricevente per capire il formato del pacchetto che stà ricevendo. Se lo standard cambia, ad es. il passaggio da IPv4 (Version=4) ad IPv6 (version=6) il ricevente capisce da questo campo come deve trattare il pacchetto. Il campo HLEN (anch esso di 4 bit) indica la lunghezza dell Header IP misurata in word di 4 byte. Se HLEN vale 7 l header è lungo 4*7=28 byte. Tutti i campi dell header hanno lunghezza fissa, tranne il campo Options, di lunghezza variabile, ed il corrispondente campo PAD (Riempimento) che serve a 45 rendere l header lungo un multiplo di 4 byte. D F M F Fragment offset Time to live Protocol Header checksum Source IP address Destination IP address Options Pad (Riempimento)

HEADER IPv4 (2) Il campo Total Length (di 16 bit) indica la lunghezza totale del pacchetto IP, espressa in byte, e comprende sia l header che il campo dati. Quindi se Total Length = 50 il pacchetto IP è lungo 50 byte. Poichè il campo è lungo 16 bit la massima lunghezza possibile per un pacchetto IP è di 2 16-1=65535 byte. Il campo Type of Service (di 8 bit) rappresenta un indicazione ai router sulla qualità del trasporto che possibilmente il pacchetto IP dovrebbe sperimentare. Il router dovrebbe basarsi anche su queste indicazioni per decidere la precedenza dei pacchetti nelle sue code, e l instradamento. Ad es. se il pacchetto richiede un certo ritardo massimo, il router potrebbe decidere di instradarlo su un percorso attraverso una rete ATM a cui chiedere garanzie sul ritardo massimo piuttosto che attraverso una rete con servizio di tipo Best Effort che non può offrire garanzie. 0 1 2 3 4 5 6 7 Precedenza D T R Non Usati I primi 3 bit definiscono un campo Precedenza con valori da 0 a 7, al crescere del quale cresce l importanza del pacchetto IP. Il valore 0 indica precedenza normale, il valore 7 un pacchetto di controllo della rete, e quindi maggiore importanza. I bit 3 (D=Delay), 4 (T=Throughput) e 5 (R=Reliability) indicano il tipo di trasporto preferito: D settato (D=1) indica richiesta di basso ritardo, T settato chiede un elevato throughtput (ampia banda di trasmissione), R settato indica richiesta di massima affidabilità. I bit 6 e 7 non sono usati. Di solito però i router non tengono conto delle preferenze espresse mediante il campo Type of Service. Attualmente si studiano delle politiche (note come Differentiated Services) che cercano di realizzare routing e buffering basandosi sulla classificazione 46 delle applicazioni proprio in base a indicazioni di questo tipo.

La Frammentazione dei pacchetti IP L hardware di ogni tipo di rete impone un limite superiore alla dimensione del frame di livello 2, e quindi anche alla quantità di dati di livello 3 che possono essere trasportati in un unico frame a livello 2. La dimensione massima di dati di livello 3 che possono essere trasportati in un frame del Data Link viene chiamata Massima Unità di Trasferimento (MTU: Maximum Transfer Unit), ed è caratteristico di ogni tipologia di rete. Per Ethernet MTU=1500 bytes. Se la porzione dati di un datagram IP (più la dimensione dell header IP) è più piccola della MTU della rete sottostante, il datagram IP potrà essere inserito completamente in un frame di livello 2 e inviato a destinazione. Header Datagram IP Area Dati Datagram IP Header Frame Area Dati Frame Se invece la porzione dati del datagram IP ( più la dimensione dell header IP) è più grande della MTU della rete sottostante, la porzione dati dovrà essere spezzata in più pezzi che verranno incapsulati in datagram IP (detti frammenti) più piccoli della MTU, e ciascun frammento dovrà essere inserito in un frame diverso e verrà spedito separatamente dagli altri verso la destinazione finale, dove il protocollo IP provvederà a rimettere assieme i diversi frammenti e a ricostituire il datagram originale. Nell esempio un pacchetto IP con 3260 byte di dati frammentato per una MTU di 1500 byte. header datagram IP (20 byte) Dati 1 (1480 byte) Dati 2 (1480 byte) Dati 3 (300 byte) header frammento 1 (20 byte) header frammento 2 (20 byte) Dati 1 (1480 byte) Dati 2 (1480 byte) frammento 1 (offset 0) (MF=1) frammento 2 (offset 1480)( MF=1) header frammento 3 (20 byte) Dati 3 (300 byte) frammento 3 (offset 2960) (MF=0) 47

La Frammentazione dei pacchetti IP il problema della frammentazione si propone ogni volta che nel percorso seguito dai pacchetti IP, si deve attraversare una porzione di rete avente una MTU minore della porzione di rete precedentemente attraversata, sempre se la dimensione dei pacchetti IP è maggiore della MTU più piccola. Il router preleva allora la porzione dati del datagram IP e lo spezza in più porzioni, in modo che ciascuna (aggiungendovi l header) stia in un frame, e in modo che ogni frammento dei dati, tranne l ultimo, abbia dimensione multipla di 8 byte, perchè così è definito il campo offset dell header IP. L ultimo pezzo in genere sarà il più corto e verrà identificato come ultimo settandovi a zero il flag MoreFragment, ad indicare che è l ultimo frammento. Negli altri frammenti MF è settato a 1. Il protocollo IP usa tre campi dell header per controllare il meccanismo della frammentazione e permettere il riassemblaggio dei datagram frammentati. Questi campi sono Identification (16 bit), Fragment Offset (15 bit) e il flag More Fragment (MF). 32 bit 4 4 8 1 1 1 Version HLEN Type of service Total length Identification Time to live Protocol Header checksum D F M F Source IP address Destination IP address Fragment offset Options Pad (Riempimento) 48

La Frammentazione dei pacchetti IP L header del datagram originale verrà copiato integralmente nei frammenti (con qualche modifica per il campo Options) e in più verrà cambiato il campo Fragment Offset che indica il punto dell area dati del datagram originale in cui comincia la porzione di dati trasportata nel frammento. Tale offset è pensato come un multiplo di 8 byte. Se l offset indica ad es. 185, il frammento porta la porzione di dati che inizia nella posizione 185*8=1480 byte. Tutti i frammenti sono caratterizzati dall avere lo stesso identificatore (il campo Identification) del datagram originale. Tale numero è assegnato univocamente dal trasmettitore (che mantiene un contatore dei datagram IP trasmessi), e la coppia (IP Provenienza, Identification) rende univocamente identificabile un certo datagram IP, e tutti i suoi frammenti. 49

Esempio di Frammentazione Un datagram di 3760 byte, inviato da S=130.136.2.204 a D=137.204.72.49, tutti i tratti di rete hanno MTU di 1500 byte, tranne uno che ha MTU pari a 500 byte pacchetti invariati, tranne TTL decrementato 4 5 1500 0 999 1 0 255 17 UDP chsum1 130.136.2.204 137.204.72.49 0x8=0 DATI: 0-1479 riassemblaggio dei frammenti D 137.204.72.49 MTU 1500 4 5 500 999 370 254 17 chsum4 1 130.136.2.204 137.204.72.49 DATI: 2960-3439 MTU 1500 4 5 340 999 430 254 17 chsum5 0 130.136.2.204 137.204.72.49 DATI: 3440-3759 MTU MTU 1500 MTU 1500 MTU 1500 500 4 5 820 frammentazione del frammento 999 370 255 17 UDP chsum3 0 130.136.2.204 137.204.72.49 DATI: 2960-3759 1500 999 185 255 17 UDP chsum2 1 130.136.2.204 137.204.72.49 0 1479 1480 2959 2960 3759 1480 1480 480 320 DATI: 1480-2959 0 1479 1480 2959 2960 3439 3440 3759 430x8=3440 4 5 S 130.136.2.204 370x8=2960 185x8=1480 1480 1480 800 frammentazione iniziale 49b

Il Riassemblaggio dei Frammenti Dopo la frammentazione, ogni frammento viaggia separatamente dagli altri fino alla destinazione finale. Solo alla fine del viaggio avrà luogo il riassemblaggio dei frammenti, nel tentativo di ricostruire il datagram Originale. Il ricevitore riconosce di avere ricevuto un frammento e non un datagram intero in due modi: il pacchetto IP ricevuto ha un offset uguale a zero, ma ha il flag More Fragment settato ad uno (è il primo frammento). il pacchetto IP ricevuto ha un offset diverso da zero (è un frammento successivo). Se il More Fragment è zero è l ultimo frammento. Il protocollo IP del ricevente identifica univocamente i frammenti di uno stesso datagram mediante la coppia (IP trasmettitore, Identification del datagram). Il ricevente non conosce la dimensione del datagram originale perchè ogni frammento mantiene nel campo Total Length la lunghezza del frammento stesso, e non quella del datagram originale. Solo quando riceverà il frammento con il flag More Fragment settato a zero (che indica l ultimo frammento del datagram originale), si potrà capire la dimensione totale del datagram originale sommando all offset dell ultimo frammento la lunghezza dei dati trasportati nell ultimo frammento. Se un solo frammento viene perso, è impossibile ricostruire il datagram IP originale. Per evitare di aspettare inutilmente un frammento perso, il ricevitore nel momento in cui riceve un primo frammento inizializza un timer. Se il timer scade prima che tutti i frammenti siano giunti a 50 destinazione il ricevitore butta via tutti i frammenti.

HEADER IPv4 (continua 3) Il campo Time To Live (TTL, tempo di vita, di 8 bit) indica in modo approssimato il tempo, in secondi, che un pacchetto IP può rimanere all interno di una rete prima di essere scartato. -Tale valore viene inizializzato a 255 dall host che spedisce il pacchetto IP. Ogni volta che un router processa quel pacchetto IP, decrementa di una unità questo contatore. Quando il contatore raggiunge il valore zero, il router scarta il pacchetto. -Per ovviare al problema della congestione della rete che causa lunghe attese in coda, quando il router riceve un pacchetto e lo mette in coda in attesa per spedirlo, salva il valore corrente dell orologio. -Quando il pacchetto deve essere spedito si calcola il tempo (in secondi) trascorso in coda e si decrementa di questo tempo il contatore TTL. -Grazie al contatore TTL, i pacchetti IP non possono viaggiare in eterno nella rete anche se per un errore i router li instradano in un percorso ciclico, e si evitano così congestioni nella rete. -Quando un pacchetto IP viene frammentato durante il percorso, tutti i suoi frammenti vengono incapsulati con il TTL residuo del pacchetto. Il campo Protocol (di 8 bit) indica di quale tipo è il dato trasportato nell area dati del pacchetto IP, ovvero indica qual è il protocollo di livello 4 (o 3) che ha generato i dati trasportati dal pacchetto IP. In tal modo il livello Network sa a quale protocollo dovrà consegnare i dati trasportati. Tra i protocolli che possono essere trasportati nell area dati ricordiamo: 0 ICMP Internet Control Message Protocol 4 IP IP in IP (incapsulamento, tunneling) 6 TCP Transmission Control Protocol 17 UDP User Datagram Protocol 29 ISO-TP4 ISO Transport Protocol Class 4 51 93 AX.25 AX.25 frames

HEADER IPv4 (4) Il campo Header Checksum (di 16 bit) serve a verificare che lo header IP sia arrivato integro a destinazione. Viene codificato utilizzando i byte del solo header. Se durante il trasporto l header subisce delle modifiche, la checksum risulta diversa e il protocollo IP capisce che c è stato un errore. Notare che la checksum verifica l integrità del solo header, e non dei dati trasportati. Il vantaggio di avere una checksum separata per header e dati è che: i protocolli di livello superiore possono scegliere una loro codifica per il controllo degli errori, i router diminuiscono il tempo necessario a calcolare la checksum, perchè devono processare solo l header, che di solito è più piccolo dei dati trasportati. Di contro, lo svantaggio di avere a livello IP una checksum solo per l header IP impedisce al livello 3 di accorgersi di eventuali errori sui dati di livello 4, fino a che tali dati non sono giunti a destinazione finale, e solo allora il protocollo di livello 4 effettuerà il controllo sui dati con delle proprie checksum. Però il livello 2 potrebbe avere già riconosciuto un errore e scartato il frame. I campi Source IP address e Destination IP address contengono gli indirizzi IPv4 a 32 bit della provenienza originale e della destinazione finale del datagramma IP. Tali indirizzi quindi non cambiano mai durante tutto il percorso, comunque venga instradato il pacchetto, e comunque venga frammentato. Il campo Options, è di lunghezza variabile, e poichè l header IP deve avere lunghezza pari ad un multiplo di 4 byte, viene introdotto ove necessario un ultimo campo Padding di riempimento, 52 per arrivare alla giusta lunghezza.

HEADER IPv4 (5) Il campo Options non è necessario in tutti i datagram IP. Le opzioni sono utilizzate allo scopo di testare la funzionalità della rete sottostante. Evitiamo di addentrarci su come sono organizzati i sottocampi del campo Opzioni IP, e analizziamone soltanto le funzionalità previste. Essenzialmente le opzioni sono classificabili in 3 categorie: 1) Opzione di registrazione del percorso. Quando il trasmettitore setta l opzione di registrazione del percorso, indica il numero massimo di hop che vuole memorizzare e crea spazio sufficiente nel campo opzioni per memorizzare tali hop, 32 bit per ogni indirizzo IP da memorizzare. Quando il pacchetto IP viaggia per la rete, ogni router toccato dal datagram IP aggiunge il proprio indirizzo IP alla lista di registrazione del percorso, almeno fino a che tale lista non è piena, nel qual caso il router si limita ad inoltrare il messaggio. Quando il pacchetto IP giunge alla destinazione finale, il protocollo IP, se vuole, può estrarre la lista dei router toccati dal pacchetto. Questa opzione viene utilizzata ad es. per implementare l applicazione detta traceroute che visualizza i router toccati da un pacchetto. 2) Opzioni di Instradamento di Provenienza. Le opzioni di Instradamento di Provenienza, consentono al trasmettitore di imporre ad un pacchetto IP un certo percorso attraverso la rete, anche se i router normalmente sceglierebbero un percorso diverso. Ciò può essere utile per effettuare dei test sulla rete. Naturalmente per imporre l instradamento è necessario conoscere la topologia della rete. Esistono due modalità per l instradamento di provenienza. la prima, detta instradamento di provenienza severo specifica una sequenza di salti consecutivi, e causa errore se due router non sono consecutivi nella rete, cioè non stanno sulla stessa rete fisica o se il router non può seguire quel percorso. La seconda detta instradamento di provenienza permissivo specifica una sequenza di indirizzi IP, ma consente 53 di attraversare più reti tra due indirizzi consecutivi.

HEADER IPv4 (6) 3) Opzione di contrassegno temporale. E simile all opzione di registrazione del percorso, ma aggiunge all indirizzo IP di ogni router attraversato anche la data e l ora in cui il router gestisce il datagram IP, espresso secondo l ora del meridiano di Greenwich. Elaborazione delle Opzioni durante la frammentazione. Ciascuna Opzione IP, viene identificata mediante un byte nel campo Opzioni. Il primo bit (detto bit COPIA) di questo byte stabilisce, quando posto ad 1, che l opzione deve essere copiata in tutti gli eventuali frammenti del pacchetto IP. In caso contrario l opzione verrà copiata solo in uno dei frammenti. Questo diverso comportamento viene configurato in modo diverso per le diverse Opzioni IP. Per l opzione di registrazione del percorso, si vuole che l opzione sia copiata in uno solo dei frammenti, perchè essendo ogni frammento gestito separatamente, potrebbe seguire percorsi diversi verso la destinazione. Si avrebbero così più liste di registrazione del percorso potenzialmente diverse. Il flag COPIA viene perciò posto a zero, e l opzione copiata in uno solo dei frammenti. Al contrario, per l opzione di instradamento di provenienza si vuole che tutti i frammenti seguano lo stesso percorso, e quindi il flag COPIA viene posto ad uno. 54

INDIRIZZAMENTO IP Gli indirizzi IP, che devono essere univoci sulla rete, sono lunghi 32 bit (quattro byte) e sono tradizionalmente visualizzati scrivendo i valori decimali di ciascun byte separati dal carattere punto. Gli indirizzi IP comprendono due o tre parti. La prima parte indica l'indirizzo della rete (network), la seconda (se presente) quello della sottorete (subnet) e la terza quello dell'host. Si noti che non sono gli hosts ad avere un indirizzo IP, bensì le interfacce di rete. Quindi se un nodo ha tre interfacce, esso ha tre indirizzi IP. Poichè la maggior parte degli hosts ha una sola interfaccia di rete, parlando di indirizzo IP di un host si fa riferimento all indirizzo della sola interfaccia di rete presente. Gli indirizzi IP sono suddivisi in cinque classi, di cui le prime 3, denominate A, B e C, servono ad individuare singole interfacce di rete e differiscono per il numero di host che ciascuna rete può indirizzare, mentre le altre due classi D ed E sono utilizzate per servizi assai differenti. Ad es. le reti dell Università di Bologna (130.136.*.*, 137.204.*.* ) sono di classe B. - Classe A. Sono concepiti per poche reti di dimensioni molto grandi. Gli indirizzi di classe A sono riconoscibili in quanto il il bit più significativo del primo byte è posto a zero, e quindi il primo campo dell'indirizzo è compreso tra 0 e 127. I bit che indicano la rete sono 7 e quelli che indicano l'host 24. Quindi si possono avere al massimo 128 reti di classe A, ciascuna con una dimensione massima di circa 16 milioni di indirizzi. 55

INDIRIZZAMENTO IP (2) - Classe B. Sono pensati per un numero medio reti di dimensioni medio-grandi. Gli indirizzi di classe B si riconosconno perchè i 2 bit più significativi del primo byte sono posti a 10, quindi il primo campo dell'indirizzo è compreso tra 128 e 191. I bit che indicano la rete sono 14 e quelli che indicano l'host 16. Si possono avere circa 16000 reti di classe B, ciascuna con circa 64000 indirizzi. - Classe C. Sono concepiti per identificare molte reti di dimensioni piccole. Gli indirizzi di classe C hanno i primi 3 bit settati a 110 e quindi il primo campo dell'indirizzo è compreso tra 192 e 223. I bit che indicano la rete sono 21 e quelli che indicano l'host 8. Quindi si possono avere al massimo 2 milioni di reti di classe C, ciascuna con una dimensione massima di 256 indirizzi. -ClasseD. Sono indirizzi usati per applicazioni di multicast. Gli indirizzi di classe D si riconoscono perchè i primi 4 bit del primo byte sono settati a 1110, e quindi il primo campo dell'indirizzo è compreso tra 224 e 239. -ClasseE. Questi indirizzi sono riservati per usi futuri. Gli indirizzi di classe E hanno i 4 bit più significativi settati a 1111, e quindi il primo campo dell'indirizzo è compreso tra 240 e 255. 56

INDIRIZZAMENTO IP (3) Esistono inoltre indirizzi IP con significato particolare, ad esempio per gli indirizzi di broadcast e per il loopback. questo host 0 1 2 7 8 31 tutti 0 (suggerimento: provare su s.o. Linux il comando ping 0.0.0.0) broadcast su 0 1 2 7 8 31 questa network tutti 1 (non ammesso come indi_ rizzo di provenienza) (suggerimento: provare il comando ping 255.255.255.255) 0 1 2 15 16 31 l host specificato in questa rete (non ammesso come indi_ rizzo di destinazione) (serve solo all avviamento) tutti 0 host (suggerimento: provare il comando ping 0.0.0.204) 0 1 2 15 16 31 Broadcast per la rete specificata (non ammesso come indi_ rizzo di provenienza) rete tutti 1 loopback 0 1 2 7 8 31 127 qualunque numero (suggerimento:staccare il cavo di rete e provare il comando ping 127.5.6.7) Quando si utilizza il loopback, il pacchetto non viene inviato sulla rete ma viene passato ai moduli IP di ricezione, ed elaborato come se fosse in arrivo: ciò serve ad es. per effettuare localmente dei test su un software di rete in fase di sviluppo. 57

L ORDINE dei BYTE in RETE E necessario creare un insieme di protocolli di rete che non dipendano dall architettura del computer o della scheda di rete. Non tutte le architetture di calcolatori memorizzano i dati nello stesso modo. In particolare gli interi di 32 bit (le dimensioni dell indirizzo IP)sono memorizzati in due modi diversi: le macchine LittleEndian mantengono il byte meno significativo nell indirizzo di memoria più basso, le macchine BigEndian mantengono il byte più significativo nell indirizzo di memoria più basso. byte 3 byte 2 byte 1 byte 0 Per evitare confusione, ovvero per evitare che un indirizzo IP possa venire scritto in due modi diversi, i protocolli TCP/IP definiscono un ordine di byte standard della rete, che tutte le macchine devono usare per i campi dei protocolli IP, ovviamente non per la parte dati. In trasmissione, prima di scrivere ad es. un indirizzo IP nel campo destinazione del pacchetto IP, l host deve convertire il numero IP dalla sua propria rappresentazione alla rappresentazione standard per la rete. In ricezione, prima di valutare l indirizzo IP contenuto nel campo provenienza del pacchetto IP, deve convertire tale campo dal formato di rete standard nel formato interno della macchina. Internet stabilisce come ordine standard per gli interi a 32 bit, quello che prevede che i byte più significativi siano trasmessi per primi (stile Big Endian). Guardando viaggiare i dati da una macchina all altra, un intero a 32 bit comincia ad essere trasmesso dal byte più significativo, cioè col byte più significativo più vicino all inizio del pacchetto. Le librerie socket forniscono per le conversioni delle funzioni inizio che sono: ntohs,ntohl, htons,htonl. pacchetto Big Endian byte 3 byte 2 byte 1 byte 0 direzione di trasmissione fine pacchetto byte address 58

Approccio al ROUTING IP (1) Il routing IP, ovvero l instradamento di un pacchetto IP verso la destinazione specificata nell header del pacchetto IP viene effettuato secondo le seguenti modalità: Un certo host deve inviare un pacchetto IP verso una destinazione IP_D (oppure un router ha ricevuto un pacchetto e deve instradarlo verso la destinazione IP_D). l host controlla l indirizzo IP di destinazione per capire se l indirizzo IP_D appartiene alla sua stessa sottorete cioè se la destinazione è raggiungibile in modo diretto mediante il MAC address cioè sfruttando il solo livello 2, ovvero se per raggiungere la destinazione non è necessario attraversare router (livello 3) ma al massimo si attraversano dei bridge (vedi subnetting). Se la destinazione sta sulla stessa sottorete dell host, si usa la consegna diretta, cioè l host trova (col protocollo ARP) l indirizzo di livello 2 di destinazione (MAC_D), incapsula il pacchetto IP in un pacchetto di livello 2 con quell indirizzo MAC_D come destinazione, e lo invia in rete. La destinazione MAC_D a livello 2 vede passare il pacchetto, vede il proprio indirizzo MAC_D e carica il pacchetto passandolo al livello IP ed il gioco è fatto. Se invece la destinazione non sta sulla stessa sottorete si usa la consegna indiretta, cioè l host deve inviare il pacchetto IP al router di default, ovvero un router che l host conosce e che sta sulla stessa sottorete dell host. L host cerca (ancora con il protocollo ARP) l indirizzo di livello 2 del default router (MAC_R), incapsula il pacchetto IP in un pacchetto di livello 2 con quell indirizzo MAC_R come destinazione, e lo invia in rete. Il router vede passare il pacchetto con il proprio MAC address, lo carica, estrae il pacchetto IP, vede che l indirizzo IP_D non è 59 il suo e lo instrada con lo stesso meccanismo già visto.

Approccio al ROUTING IP (2) Consegna Diretta (via MAC address) Sorgente S e destinazione D appartengono alla stessa sottorete anche se in mezzo c e un bridge, perchè lavorando a livello 2 instrada i pacchetti mediante i MAC address, e non gli indirizzi IP S cagnina 130.136.3.204 sangiovese 130.136.3.203 D S cagnina 130.136.3.204 BRIDGE sangiovese 130.136.3.203 D bridge (quindi livello 2), invisibile al livello IP, instrada i pacchetti tramite il MAC address Consegna Indiretta (via IP address) Sorgente S e destinazione D non stanno sulla stessa sottorete in mezzo c e un router, che lavora a livello 3, necessario routing a livello IP S cagnina 130.136.3.8 ROUTER 130.136.3.252 130.136.2.253 D sarastro.cs.unibo.it 130.136.2.10 MAC_S MAC_R3 MAC_R2 MAC_D 60

SUBNET IP (1) Un certo indirizzo di rete di classe A, B o C permette di mappare un certo numero di hosts, come appartenenti ad una stessa rete. Però una rete fisica, a seconda della sua topologia, della disposizione degli apparati di routing e bridging, e di criteri di opportunità vari, può essere intrinsecamente costituita da più parti, connesse in varia maniera, ciascuna delle quali costituisce una rete broadcast a livello 2. Si è cercato di indirizzare ciascuna di queste porzioni di rete in modo separato, senza essere costretti ad utilizzare per ciascuna di esse una diversa rete (non sono poi così tante le reti disponibili). Il meccanismo del subneting serve proprio a descrivere la situazione in cui alcuni host sono in grado di comunicare tra loro in modo diretto via livello 2, in modo da dar loro la possibilità di scambiarsi direttamente i pacchetti IP senza utilizzare un router, e si dice allora che gli host appartengono alla stessa sottorete. Il meccanismo consiste nel considerare la parte host del indirizzo IP di un host, come formato da due parti, la subnet e l host. A seconda dell ampiezza del campo dedicato alla subnet, si possono ottenere molte subnet contenenti ciascuna pochi host, o poche subnet contenenti molti hosts. L ampiezza dei campi subnet e host viene definita mediante un parametro, detto netmask, configurato uguale per tutti gli host della stessa subnet. La netmask contiene i bit ad uno in corrispondenza dei campi network e subnet dell indirizzo IP, e a zero in corrispondenza del campo host. Ad es. una netmask 11111111111111111111111100000000, più comunemente scritta come indirizzo IP 255.255.255.0 (o in esadecimale ffffff00), indica che il campo host coincide con l ultimo byte dell indirizzo IP 61

SUBNET IP (2) Vediamo un esempio di indirizzo di una classe B, a cui viene applicata una netmask 255.255.255.0, in modo che la parte host viene partizionata in una parte subnet ed una host di 8 bit ciascuna. indirizzo di classe B netmask subnetting 0 1 2 7 8 15 16 23 24 31 1 0 network Con il subnetting dell esempio qui sopra, a partire da uno stesso indirizzo di classe B, otteniamo 256 diverse sottoreti, ciascuna con 254 indirizzi disponibili per gli host (256 -broadcast(1) -questo(0)) Algoritmo di Riconoscimento di Appartenenza a stessa subnet. Dato un indirizzo IP di un host, e la netmask per la sua sottorete, dato un altro indirizzo IP (ad. es. di un host a cui il primo deve spedire un pacchetto) per capire se i due indirizzi appartengono alla stessa sottorete, ogni indirizzo viene messo in AND bit a bit con la netmask, ottenendo due valori che sono la parte network e subnet dei due indirizzi. Se questi due valori sono uguali, allora i due indirizzi IP stanno sulla stessa sottorete, altrimenti stanno su sottoreti diverse. Ad es., una rete (classe B) 130.136.*.* con netmask 255.255.255.0, i due indirizzi 130.136.3.204 e 130.136.3.203 stanno sulla stessa sotorete, perchè dall AND bit a bit di indirizzi e netmask si 62 ottiene 130.136.3.0, quindi i due IP sono nella stessa subnet. host 0 1 2 7 8 15 16 23 24 31 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 0 netmask 0 1 2 7 8 15 16 23 24 31 network subnet host

Come abbiamo visto poco fa (slide 59) l importanza di capire se due host stanno sulla stessa sottorete risiede nel fatto che in IP il routing minimo (consegna diretta) è realizzabile solo se i due hosts stanno sulla stessa sottorete. Quindi, in tecnologia IP una subnet deve coincidere con una rete fisica (*), o meglio deve coincidere con l insieme degli host che possono comunicare tra loro via broadcast di livello2, e quindi può coincidere anche con un insieme di più reti fisiche connesse mediante bridges (livello 2). 130.136.3.0 SUBNET IP (3) 130.136.3.251 cagnina 130.136.3.204 sangio vese 130.136.3.203 130.136.2.0 Router 130.136.2.253 timur 130.136.2.7 130.136.2.0 Bridge sarastro 130.136.2.10 (*) In realtà, il concetto di subnet è stato rilassato, e si permette che: una stessa rete fisica (una LAN) (o più reti fisiche interconnesse da bridge) possa contenere più subnet IP, qualora sia necessario partizionare una rete fisica in modo logico. Invece una subnet IP non può mai contenere più reti fisiche interconnesse da router, cioè una subnet IP non può mai attraversare dei router. (**) (**) Anche questa affermazione è messa in forse dall avvento di concetti quali le LAN virtuali, che però non è chiaro a quale livello debbano essere collocate. Quindi per ora ci teniamo il concetto di subnet IP come rete capace di comunicare per mezzo del broadcast di livello 2. 63

Informazioni per Routing in un Host Per come viene effettuato il routing in IP, le informazioni che un host deve conoscere per poter instradare correttamente i pacchetti che vuole spedire sono: il proprio indirizzo MAC, che legge nella sua scheda di rete, il proprio indirizzo IP, che può essere assegnato e salvato su file o gli può essere assegnato al boot (per i sistemi diskless, mediante il protocollo RARP a partire dal MAC address), l indirizzo IP di un router di default, a cui consegnare tutti i pacchetti IP per indirizzi che non stanno nella sua stessa sottorete, un criterio per sapere quali hosts stanno nella sua sottorete, in modo da poter decidere se spedire i pacchetti direttamente (previa richiesta ARP) o se instradarli via default router. Tale criterio è costituito dalla cosiddetta netmask, che l amministratore di rete assegna ad ogni host, la stessa per tutti gli hosts della sottorete. La sottorete a cui un host (un IP address) appartiene è costituita da quegli host che: 1) appartengono alla stessa rete IP, cioè hanno stesso indirizzo di rete (sia essa di classe A B o C), 2) appartengono alla stessa rete fisica (o a reti fisiche diverse ma separate solo da bridge, che inoltrano via MAC address) e quindi propagano i broadcast di livello 2, per permettere ad es. di comunicare tramite livello 2 direttamente e di effettuare la chiamata al protocollo ARP, 3) hanno avuto assegnata la stessa netmask, che individua l appartenenza ad una stessa sottorete, 4) hanno indirizzo IP e netmask tali che l AND bit a bit tra indirizzo IP e netmask da lo stesso risultato per tutti gli IP della sottorete (criterio di appartenenza ad una stessa sottorete). 64

Il Routing in Internet Protocol --- Ogni host deve mantenere le seguenti informazioni: il proprio indirizzo MAC, il proprio indirizzo IP, l indirizzo IP di un router di default nella stessa sottorete, la netmask della sua sottorete (riconoscere gli IP della sottorete). --- Un host per inviare un datagram IP, fa l AND bit a bit della netmask, una volta con l indirizzo di destinazione, ed una volta con il proprio indirizzo IP. Se i due risultati sono uguali l indirizzo di destinazione appartiene alla sua stessa sottorete, e l host usa l instradamento diretto, inviando il datagram in un frame di livello 2 avente, come indirizzo di livello 2, il MAC address della destinazione. In caso contrario l host invia il pacchetto IP (che ha nell header l indirizzo di destinazione IP) incapsulato in un frame destinato al router di default cioè avente MAC address del router sulla stessa rete, ed il salto successivo lo deciderà il router (Next Hop). Qualunque sia la destinazione a livello 2 (il router per il primo salto o l host destinazione in caso di consegna diretta) il MAC address verrà ottenuto con chiamata ARP o alla cache ARP. La destinazione a livello 2 vede transitare il proprio indirizzo MAC, carica il frame, toglie l incapsulamento e passa al livello IP. Nell host di destinazione, il livello IP riconosce nell indirizzo IP di destinazione del pacchetto IP il proprio indirizzo IP e consegna il pacchetto IP al protocollo superiore. Invece il router si accorge che il pacchetto IP non è per lui, e decide di instradarlo, consulta delle tabelle di instradamento (coppie (subnet, interface)) e se l IP destinazione del pacchetto sta nella sottorete di una interfaccia instrada in modo diretto, altrimenti 65 sceglie (tra i router a lui direttamente collegati) quale usare per instradare il pacchetto; il prossimo router sceglie il successivo hop.

Routing Gerarchico Il concetto di subnet introduce quindi un livello di gerarchia nelle reti TCP/IP. Il routing si scinde in: un routing all interno della subnet, un routing tra subnet diverse ma gestite da una stessa autorità, i cosiddetti autonomous systems (es. l Univ. di Bologna), un routing tra diversi autonomous systems. Il routing all interno della subnet è banale (* in teoria) perchè la subnet coincide con una rete fisica, che consente la consegna diretta tra le stazioni mediante una trasmissione broadcast. Serve solo mappare indirizzi IP in indirizzi MAC con ARP e RARP. (*) In realtà la faccenda può complicarsi se si vuole minimizzare lo scambio di pacchetti in reti fisiche costituite da più sottoreti fisiche collegate da bridge. Alcuni bridge intelligenti monitorano il traffico a livello 2, memorizzando gli indirizzi MAC contenuti nei campi provenienza dei pacchetti di livello 2 che li attraversano. In tal modo capiscono automaticamente in che direzione sono collocati gli hosts con quei MAC address, ed instradano i pacchetti MAC ad essi destinati solo in quella direzione. I pacchetti broadcast sono invece propagati a tutti. Il routing tra le subnet, cioè all interno di un autonomous system è gestito dai router (detti Interior Router), mediante tabelle di instradamento che possono essere scritte (in toto o in parte) manualmente dal gestore della rete o calcolate automaticamente con algoritmi dei cosiddetti tipi distance vector o link state packet. Tra i più recenti ricordiamo OSPF (Open Shortest Path First) che effettua il bilanciamento di carico tra percorsi paralleli ed e standard. Il routing tra autonomous systems risponde più ad esigenze amministrative che non tecniche, ed è gestito con algoritmi detti Exterior Gateway Protocol, quali BGP (Border Gat. Prot.). 66

Link Punto a Punto tra Router (1) Chiamiamo Interfaccia di un router, i simboli con cui il router indica una certa scheda di rete avente un certo indirizzo IP. In ambito IP, due host o router sono direttamente collegati se e solo se appartengono ad una stessa sottorete. Quindi un router che sia connesso direttamente mediante un canale punto a punto con un altro router, deve utilizzare per quel link una subnet, utilizzando perciò 4 indirizzi (router1 + router2 + broadcast (1) + questo host(0) ) e sprecando tutti gli altri indirizzi della subnet. Se le sottoreti sono delle intere reti di classe B, cioè la netmask è 255.255.0.0 ogni sottorete ha 65536 hosts e ne spreca 65532, come esemplificato nel disegno qui sotto. rete 130.134.*.* 130.134.10.4 130.139.27.21 Router1 rete 130.139.*.* 130.134.2.20 130.134.2.20 rete 130.133.*.* rete 130.137.*.* Router2 130.137.2.20 130.136.1.1 rete 130.136.*.* Un risparmio di indirizzi si ha invece se le sottoreti sono ottenute da una classe B usando netmask 255.255.255.0 per cui ogni sottorete ha 256 hosts e ne spreca perciò 252 per ogni link punto punto. rete 130.136.2.* 130.136.2.253 130.136.3.252 Router1 rete 130.136.3.* netmask 255.255.255.0 130.134.4.20 130.134.4.20 rete 130.136.4.* rete 130.136.6.* Router2 130.136.6.15 130.136.8.250 rete 130.136.8.* 67

Link Punto a Punto tra Router (2) IP UNNUMBERED Un ulteriore modo di risparmiare indirizzi di rete per link punto a punto tra router consiste nello sfruttare la tecnica detta IP UnNumbered, che non assegna un indirizzo IP ad una interfaccia di rete, ma solo un simbolo, e per l update delle informazioni di routing prende in prestito un indirizzo IP di un altra interfaccia NUMBERED (cioè con un indirizzo IP) sullo stesso router. Se tutte le interfacce del router sono unnumbered, si assegna all interfaccia di loopback del router un indirizzo, e si prende a prestito quella. 68