Ripresa concetti di networking Orazio Battaglia
Il modello OSI (Open Systems Interconnection) 1/2 Ogni livello rende indipendente il livello superiore dai meccanismi e dalle tecnologie di trasmissione usate dai livelli inferiori. 2
Il modello OSI (Open Systems Interconnection) 2/2 3
Sintesi delle funzioni dei diversi livelli, Livello Fisico La rete viene identificata in un segmento di rete locale. La rete è cioè un semplice mezzo di trasmissione condiviso tra uno o più dispositivi. Servono regole per codificare e trasmettere i dati: Le tensioni scelte per rappresentare i valori logici La durata in microsecondi del segnale elettrico che identifica un bit La modulazione e la codifica utilizzata L eventuale trasmissione simultanea in due direzioni La forma e la meccanica dei connettori usati per collegare l hardware al mezzo trasmissivo Unità di trasmissione: Bit. 4
Sintesi delle funzioni dei diversi livelli, Livello Collegamento Questo livello si occupa in primis di formare i dati da inviare attraverso il livello fisico, incapsulando il pacchetto proveniente dallo strato superiore in un nuovo pacchetto provvisto di un nuovo header (intestazione) e tail (coda), usati anche per sequenze di controllo. Questa frammentazione dei dati in specifici pacchetti è detta framing e i singoli pacchetti sono i frame. Questo livello si occupa anche di controllare il flusso di dati (controllo di flusso): in caso di sbilanciamento della velocità di trasmissione tra mittente e destinatario, si occupa di rallentare l'opera della macchina più veloce, accordandola all'altra e minimizzando così le perdite dovute a sovraccarico. Unità di trasmissione: Frame. 5
Sintesi delle funzioni dei diversi livelli, Livello Rete La rete è una collezione di reti (uscita dalla rete locale), e assume una struttura gerarchica (reti di reti locali, reti di reti, sottoreti). Sono definite le regole per: definire indirizzi logici di rete, che nascondano i dettagli delle reti locali definire nuovi dispositivi (router) che smistano i pacchetti di dati tra rete e rete aggiornare i cammini per i dati (routing) tra mittenti e destinatari gestire la frammentazione e inoltro dei dati in singoli pacchetti autonomi Unità di trasmissione: Packet/Datagram (in genere Packet quando la comunicazione è affidabile (usa il TCP del livello superiore) e Datagram quando la comunicazione è inaffidabile (usa l UDP del livello superiore)). 6
Sintesi delle funzioni dei diversi livelli, Livello Trasporto La rete è una collezione di reti organizzate gerarchicamente. Sono definite le regole per: la spedizione affidabile di pacchetti: ordinamento dei dati, ritrasmissione dei pacchetti perduti, eliminazione dei pacchetti duplicati controllo della congestione della rete: il cui scopo è il massimo utilizzo della rete evitando saturazione dei router sul cammino percorso dai pacchetti controllo di flusso: il cui scopo è il massimo ritmo di invio dei pacchetti, evitando la saturazione del destinatario finale Unità di trasmissione: Segment. 7
Sintesi delle funzioni dei diversi livelli, Livello Sessione Livello implementato sotto forma di gestione e coordinamento tra applicazioni. Sono definite le regole per: gestione delle caratteristiche del collegamento gestione della storia dell evoluzione del collegamento Unità di trasmissione: Data (generico pacchetto di dati). 8
Sintesi delle funzioni dei diversi livelli, Livello Presentazione Implementa funzioni di conversione per risolvere le possibili eterogeneità che sorgano sull interpretazione dei dati tra mittente e destinatario. Principalmente, si realizzano in modo automatico e trasparente all utente e all applicazione: conversioni di formato dei dati Unità di trasmissione: Data (generico pacchetto di dati). 9
Sintesi delle funzioni dei diversi livelli, Livello Applicazione E il livello più vicino all utente finale. A questo livello si realizzano le primitive dei protocolli che realizzano i principali servizi e applicazioni di rete. Esempi di protocolli di questo livello: HTTP FTP SMTP DNS Telnet Unità di trasmissione: Data (generico pacchetto di dati). 10
Il modello OSI e il modello Internet I tre livelli Sessione, Presentazione e Applicazione si dice che collassano nel più ampio livello Applicazione. 11
Pacchetto dati di livello 2: Frame Notare che al livello 2 le informazioni di origine e destinazione sono i MAC address. I frame vengono consegnati a livello di rete locale. Con queste sole informazioni non è possibile fare uscire i dati dalla rete locale. 12
Pacchetto dati di livello 3: Packet/Datagram Il livello 3 trasporta il frame di livello 2. Il frame di livello 2 inserito nel pacchetto di livello 3 diventa routabile. Può cioè uscire dalla rete locale. Questo avviene grazie alle informazioni di IP di origine e IP di destinazione. 13
Pacchetto dati di livello 4: TCP Segment (1/2) Al livello 4 vengono aggiunte le informazioni circa il servizio richiesto. I servizi sono in ascolto su determinate porte e le richieste vengono fatte su queste porte. Notare infatti la presenza delle porte sorgente e destinazione. Nel segmento sono presenti le altre informazioni per la comunicazione affidabile tra due host, per il controllo della congestione e per il controllo di flusso. 14
Pacchetto dati di livello 4: UDP Segment (2/2) Al livello 4 vengono aggiunte le informazioni circa il servizio richiesto. I servizi sono in ascolto su determinate porte e le richieste vengono fatte su queste porte. Notare infatti la presenza delle porte sorgente e destinazione. Il segmento UDP non garantisce la consegna del pacchetto e per questo richiede meno informazioni. Il segmento UDP è più snello rispetto a quello a TCP e quindi più performante. 15
Apparati di rete ai diversi livelli del modello OSI Livello fisico: Schede di rete. Livello collegamento: Hub e Switch. Gli Hub ricevono un pacchetto su una porta e lo replicano su tutte le altre. Gli Switch costruiscono delle tabelle che mettono in relazione le porte con i MAC address e instradano i pacchetti solo verso le porte utili. Livello rete: Router. In base alle informazioni di IP origine e destinazione instradano i pacchetti sulle varie destinazioni. Costruiscono a questo scopo delle tabelle di routing. Livello trasporto: Firewall. Leggono le informazioni circa i protocolli e le porte usate e in base a queste informazioni abilitano o negano il transito dei pacchetti. Livello applicazione: Client, Server. I Client chiedono servizi ai Server. Le comunicazioni Client/Server avvengono su determinate porte. 16
Classi di indirizzi IP Le classi di indirizzi IP sono cambiate nel tempo poiché ci si accorse che il primo criterio di organizzazione sprecava indirizzi IP e non rispondeva in modo puntuale a tutte le esigenze. I due approcci principali alla costruzione delle classi di di indirizzi IP (insiemi di indirizzi IP) sono: Classfull addressing Classless Inter-Domain Routing (CIDR) 17
Classi di indirizzi IP Classfull addressing (1/2) classe A: il primo byte rappresenta la rete, gli altri l'host; [0-127].x.x.x. La maschera di rete è 255.0.0.0, o /8. Questi indirizzi iniziano tutti con un bit a 0. classe B: i primi due byte rappresentano la rete, gli altri l'host; [128-191].y.x.x (gli y sono parte dell'indirizzo di rete, gli x dell'indirizzo di host). La maschera di rete è 255.255.0.0, o /16. Questi indirizzi iniziano con la sequenza 10. classe C: i primi 3 byte rappresentano la rete, l'altro l'host; [192-223].y.y.x. La maschera di rete è 255.255.255.0, o /24. Questi indirizzi iniziano con la sequenza 110. 18
Classi di indirizzi IP Classfull addressing (2/2) Alcuni numeri del Classfull addressing. 19
Classi di indirizzi IP Classless Inter-Domain Routing (CIDR) Il CIDR è un nuovo schema di indirizzamento introdotto nel 1993 per sostituire lo schema classful. Questo nuovo schema di indirizzamento consente una migliore gestione degli indirizzi di rete che diventano sempre più scarsi con il crescere di Internet ed inoltre migliora le prestazioni dell'instradamento IP grazie ad una più efficiente organizzazione delle tabelle di routing. Permette, in un indirizzo IP, di definire quale parte indichi la sotto rete e quale gli host. La notazione usata per esprimere indirizzi CIDR è la seguente: a.b.c.d/x, dove x è il numero di bit (contati partendo da sinistra) che compongono la parte di indirizzo della rete. I rimanenti y=(32-x) bit consentono di calcolare il numero di host della sottorete pari a 2^y - 2. Il (- 2) della precedente formula è dovuto al fatto che il primo e l'ultimo indirizzo di ogni rete non sono assegnabili ad alcun host, in quanto riservati rispettivamente come indirizzo della rete in generale (usato ad esempio nelle tabelle dei router) e come indirizzo di broadcast (ovvero un indirizzo che comprende indistintamente ogni altro indirizzo all'interno di quella rete: viene usato ad esempio in alcuni protocolli di routing). 20
Esempi subnet CIDR Tabella subnet mask per la rete 192.168.1.0 Rete Subnet mask Range IP 192.168.1.0 11111111.11111111.11111111.00000000 (255.255.255.0 o /24) (1 rete di classe C) 192.168.1.0 11111111.11111111.11111111.10000000 (255.255.255.128 o /25) (2 reti) 192.168.1.0-192.168.1.255 192.168.1.0-192.168.1.127 192.168.1.128-192.168.1.255 192.168.1.0 11111111.11111111.11111111.11000000 (255.255.255.192 o /26) (4 reti) 192.168.1.0 11111111.11111111.11111111.11100000 (255.255.255.224 o /27) (8 reti) 192.168.1.0 11111111.11111111.11111111.11111100 (255.255.255.252 o /30) (64 reti) 21 192.168.1.0-192.168.1.63 192.168.1.64-192.168.1.127 192.168.1.128-192.168.1.191 192.168.1.192-192.128.1.255 192.168.1.0-192.168.1.31 192.168.1.32-192.168.1.63 192.168.1.192-192.168.1.223 192.168.1.224-192.168.1.255 192.168.1.0-192.168.1.3 192.168.1.4-192.168.1.7 192.168.1.248-192.168.1.251 192.168.1.252-192.168.1.255
Indirizzi IP privati Gli indirizzi IP privati, per convenzione, non vengono presi in considerazione dai router di Internet. Sono destinati all uso su reti private. Classi di indirizzi privati Rappresentazione in bit 22
Esempio uso subnet mask Supponiamo che il protocollo IP del nostro computer sia configurato come segue: indirizzo IP: 192.168.32.97 subnet mask: 255.255.255.224 e che richiediamo di connetterci all'indirizzo IP 192.168.32.130 prima di tutto trasformiamo in notazione binaria gli indirizzi IP e la subnet mask: 23
Esempio uso subnet mask Allora il livello IP calcolerà (indirizzo sorgente): Ora ripetiamo l'operazione con l'ip di destinazione: I risultati 192.168.32.96 e 192.168.32.128 indicano due sottoreti differenti, e quindi le macchine appartengono a sottoreti differenti. 24
Esempio uso subnet mask Notiamo che con una subnet mask 255.255.255.224 è possibile avere un range di 30 indirizzi utili per subnet, in quanto 2 5-2 = 30. L'indirizzo 192.168.32.97 appartiene al range tra 192.168.32.96 e 192.168.32.127 L'indirizzo 192.168.32.130 appartiene al range tra 192.168.32.128 e 192.168.32.159 Se l'ip destinazione fosse stato 192.168.32.100, i due indirizzi avrebbero indicato macchine appartenenti alla medesima sottorete: 25
NAT (Network Address Translation) Il NAT è una tecnica con cui vengono modificati gli indirizzi IP nei pacchetti in transito su di un router (o firewall). Si agisce quindi al livello 3. Con il NAT è possibile modificare anche le porte dei pacchetti in transito. Si agisce quindi al livello 4. Si distinguono due tipi di NAT principali: 1. Source NAT: viene modificato l indirizzo IP sorgente del pacchetto IP ed eventualmente la porta (sorgente) del pacchetto TCP/UDP 2. Destination NAT: viene modificato l indirizzo IP destinazione del pacchetto IP ed eventualmente la porta (destinazione) del pacchetto TCP/UDP Quando si parla di NAT in modo generico ci si riferisce al Source NAT. 26
NAT (Network Address Translation) Esempio di Source NAT (1/2). Supponiamo di avere una rete interna con indirizzi IP 192.168.1.0/24. Il nostro router ha interfaccia interna 192.168.1.254 e interfaccia esterna 84.220.173.36. Supponiamo adesso che due client interni alla nostra rete con IP 192.168.1.10 e 192.168.1.11 vogliano andare sul sito www.repubblica.it (213.92.16.171). Supponiamo che le connessioni di partenza siano: 192.168.1.10:1500 -> 213.92.16.171:80 192.168.1.11:1620 -> 213.92.16.171:80 Nota: la connessione va dalla rete interna verso Internet. 27
NAT (Network Address Translation) Esempio di Source NAT (2/2). Il nostro router (192.168.1.254) su cui è configurato il NAT si occuperà di sostituire l IP sorgente delle due connessioni con il suo IP pubblico esterno. Per fare questa operazione usa la tabella di NAT: Protocol Source IP Source Port Public IP Public Port Destination IP Destination Port TCP 192.168.1.10 1500 84.220.173.36 1500 213.92.16.171 80 TCP 192.168.1.11 1620 84.220.173.36 1620 213.92.16.171 80 Se le porte dei due client sono uguali il router sostituisce anche quelle in modo da poter identificare in modo univoco le connessioni. L accoppiata IP:Port viene definita socket. Una connessione è identificata in modo univoco dalle coppie IP:Port sorgente, IP:Port destinazione. 28
NAT (Network Address Translation) Il Source NAT viene usato tipicamente per poter permettere l accesso ad Internet da reti configurate con IP privati. Ad esempio è usato dai router ADSL. I principali vantaggi dell uso del NAT sono: Possibilità di usare indirizzi IP privati e quindi risparmio dei carenti IP pubblici (IPv4) Sicurezza della macchine interne configurate con IP privati che non sono direttamente raggiungibili dall esterno 29
NAT (Network Address Translation) Esempio di Destination NAT (1/2). Supponiamo di avere un server web dentro la nostra solita rete 192.168.1.0/24 con IP 192.168.1.150. Il server ha IP privato e non è direttamente raggiungibile dall esterno. Configurando il DNS posso fare in modo che sia visto dall esterno con l IP pubblico del mio router 84.220.173.36. Il mio router configurato con il Destination NAT allora si occuperà di redirezionare le connessioni a 84.220.173.36 verso il server web 192.168.1.150. Questo particolare tipo di Destination NAT è chiamato Port Forwarding. Nota: la connessione va da Internet verso la rete interna. 30
NAT (Network Address Translation) Esempio di Destination NAT (2/2). Nel caso del Port Forwarding la tabella di NAT sarebbe simile alla seguente Public IP Public Port Destination IP Destination Port 84.220.173.36 80 192.168.1.150 80 84.220.173.36 25 192.168.1.180 25 Nella tabelle è mostrata una seconda riga che gira le connessioni alla porta 25 (SMTP) verso il server di posta interno 192.168.1.180 31