Emulatore di reti - 1 - Ripasso sulle reti IP

Internet

  • Internet è una rete di reti
  • Quindi i protocolli di Internet si pongono ai livelli 3 (network layer) e superiori
  • Vale a dire che Internet si appoggia a reti locali e connessioni esistenti
  • Le reti locali e occupano i livelli 1 e 2 (physical layer e data connection layer) di ISO-OSI

Indirizzi IP - IPv4

  • Gli indirizzi IPv4 sono numeri a 32 bit, qundi il massimo teroico di indirizzi è 4.294.967.296
  • L`indirizzo viene scritto suddiviso nei byte che lo compongono.
  • L'indirizzo è diviso in duel parti:
    • Indirizzo della rete o net
    • Indirizzo della macchina nella rete o host
  • i bit piu significativi del numero indicano la rete mentre i meno significativi la macchina all`interno della rete

Indirizzi IP - IPv4

  • Ogni byte viene scritto in decimale, separato con un punto dal successivo.
  • adesempio, l`indirizzo 00001010 00000000 11001000 01101000 viene scritto come 10.0.200.104

livello IP

  • Internet Protocol o IP è il primo livello di Internet Protocol Suite e si occupa di consentire ai pacchetti di rete di raggiungere macchine in qualunque rete connessa
  • Si pone quindi a livello 3 di ISO-OSI o network layer
  • A differenza del livello 3 di ISO-OSI, IP è un protocollo daragram.
  • Per svolgere questa funzione IP deve svolgere due compiti:
    • Assegnare indirizzi ad ogni interfaccia
    • Gestire l`instradamento dei pacchetti

livello IP

  • Per quanto riguarda l'indirizzo, a differenza di quello di livello 2 (MAC), oltre all'identità dell`interfaccia, deve indicare la rete cui appartiene.

Classi

  • La dimensione del campo net non è fissa, ma dipende dalla classe.
  • esistono cinque classi, di cui tre utilizzate per le normali reti:
    ClasseNetHostFormatoIntervalloEsempio
    a 8 24 0XXXXXXX.....0..127 80.0.0.0
    b 16 16 10XXXXXX.....128..191 190.220.0.0
    c 24 8 110XXXXX.....192..223 194.189.96.0
    d 0 32 1110XXXX.....224..239 230.19.196.222
    e 0 32 1111XXXX.....240..255 242.139.125.244

Routing

  • Abbiamo visto che Internet è una rete di reti, quindi quando iviamo un pacchetto ci possono essere due casi:
    1. la destinazione appartiene ad una delle reti cui siamo direttamente collegati tramite una scheda di rete (locale)
    2. la destinazione appartiene ad una rete raggiunhgibile tramite un ruoter presente in una delle reti cui siamo connessi (remoto)
  • Dato che IP è un protocollo Datagram, il procedimento descritto viene fatto per ogni pacchetto inviato, quindi sia per le richieste che per le risposte.

Routing

  • A sua volta il router, ricevendo un pacchetto del quale non è il destinatario, eseguirà lo stesso procedimento, inviando il pacchetto a destinazione o al successivo router.
  • Nel secondo caso invece dovrà individuare l'indirizzo MAC del router tramite ARP ed invierà ad esso il pacchetto contenete l'indirizzo IP del destinatario finale.
  • Nel primo caso, come abbiamo visto, la nostra macchina individuerà l'indirizzo MAC della destinazione tramite il protocollo ARP, quindi invierà il pacchetto direttamente alla macchina destinataria.

Connessione tra switch

  • E' possibile connettere una porta di uno switch ad una porta di un'altro switch.
  • A sua volta, l'altro switch, non conoscendo la porta di destinazione, inoltrerà la trama a tutte le porte, compreso il trunk.
  • Se questa trama viene inoltrata ad ogni porta, verrà inviata anche all'altro switch tramite il trunk.
  • Di mano in mano entrambi gli switch impareranno gli indirizzi delle schede collegate all'altro switch, analizzando le trame che entrano dalla connessione tra gli switch.

Connessione tra switch

  • Utilizzando un trunk si può venire a creare un problema se viene trasmessa una trama per una destinazione inesistente.
  • Questa connessione tra switch prende il nome di trunk. E' anche possibile utilizzare più cavi per realizzare un trunk con maggire banda, creando un channel
  • La trama verrà quindi palleggiata tra i due switch all'infinito impegnando tutta la banda del trunk.
  • Per evitare questo basta evitare di inoltrare una trama per una destinazione ignota verso la porta da cui la si è ricevuta. Questa tecnica si chiama split horizon.

VLAN

  • Gli switch più sofisticati, detti managed, sono in grado di raggruppare porte in sottoswitch indipendenti, detti Virtual LAN o VLAN
  • Con questa tecnica all'interno della trama viene inserito un codice di VLAN che consente di far viaggiare all'insieme interno di un trunk, ma separate, le trame di ogni VLAN.
  • In questo modo è possibile creare connessioni complesse, per esempio all'interno di una sala server, senza necessità di utilizzare un numero elevato di switch.
  • Questo numero o vlan tag verrà poi eliminato quando le trame verranno inviate a porte normali dello switch.

VLAN

  • Questa vosa può essere evitata utilizzando il vlan tagging IEEE 802.1Q.
  • Naturralmente le VLAN sono viste come switch indipendenti all'interno dello stesso apparato, quindi se dobbiamo connettere due diverse VLAN tra due diversi switch dovremmo utilizare due diversi trunk, uno per VLAN.

Notazione CIDR

  • Nel nostro caso le due nuove sottoreti si indicheranno quindi 192.168.2.0/25 e 192.168.2.128/25 rispettivamente
  • Se definiamo in questo modo le sottoreti, la dimensione del campo net comleto (comprensivo anche della parte usata per le sottoreti) non è più determinabile immediatamente dalla classe
  • Occorre precisare quindi in maniera esplicita la dimensione del campo net di una rete/sottorete.
  • Un modo semplice è quello di indicare il numero di bit che fanno parte del campo net dopo una /.

Notazione CIDR

  • Ricordiamo naturalmente se abbiamo indicato 24 bit di net non è detto che abbiamo a che fare con una rete di clase C, ma magari una sottorete con 8 bit di host di una rete di classe B o A.
  • Il nome di questa notazione è CIDR che indica Classless Inter-Domain Routing.
  • Naturalmente in questa notazione dovremo aggiungere:
    • /8 alle reti di classe A
    • /16 alle reti di classe B
    • /24 alle reti di classe C

Notazione CIDR

  • Notiamo che l'indirizzo che contiene il numero di host 0 viene utilizzato per indicare l'intera rete e normalmente non viene associato ad alcun host reale, per evitare confizione.

Sottoreti

  • Se ci viene assegnata una rete IP e dovessimo utilizzarla, probabilmente la troveremmo troppo grande e vorremmo suddividerla in parti.
  • Questo corrisponde ad assegnare al bit più significativo del campo host il compito di discernere tra le nuove sottoreti.
  • Gli enti internazionali (ICANN) o nazionali (GARR) assegnano a grossi privati o a provider reti IP in base alle classi definite precedentemente

Sottoreti

  • Se, ad esempio, volessimo suddividere in due parti la rete di classe c 192.168.2.0 potremmo mettere gli host dal 192.168.2.0 al 192.168.2.127 in una sottorete e quelli dal 192.168.2.128 al 192.168.2.255 nell'altra
  • Per fare questo dovremmo assegnare al campo net alcuni bit del campo host.

Protocollo ARP

  • E' quindi indispensabile trovare un metodo per trasformare un indirizzo IP nel corrispondente indirizzo MAC.
  • Abbiamo visto come sono costruiti gli indirizzi IP, ma Internet Protocol, per inviare pacchetti ad altre macchine della stessa rete locale deve appoggiarsi sulla rete locale sottostante, che non conosce nulla di indirizzi IP
  • Questo metodo consiste nell' Address Resolution Protocol o ARP.
  • Il pacchetto da trasmettere contiene però esclusivamente l'indirizzo IP del destinatario

Protocollo ARP

  • Per inviare un pacchetto (o meglio una trama) ad una macchina tramite una rete locale dobbiamo indicare l'indirizzo MAC della macchina di destinazione.
  • Questo protocollo consiste nell'inviare un pacchetto ARP di richiesta in broadcst a tutte le schede presenti sulla rete, contente l'indirizzo IP da trovare.
  • Il protocollo ARP della macchina che possiede quell'indirizzo, se esiste, risponderà con un pacchetto unicast contente tra l'altro il suo MAC address.

Protocollo ARP

  • Il protocollo ARP memorizzerà per un certo tempo l'associazione tra IP e MAC, in modo da non dover inviare pacchetti in broadcast ogni volta che si deve inviare un pacchetto IP

Switch

  • In questo livello, ogni scheda di rete (interfaccia) è identificata da un numero a 48 bit, indicato con sei coppie di cifre esadecimali, solitamente separate da :, ad esempio 00:23:54:62:d8:4e
  • Oltre ai normali indirizzi MAC ne esiste uno particolare, FF:FF:FF:FF:FF:FF, chiamato indirizzo di broadcast, che viene ricevuto da tutte le schede connesse.
  • Questi indirizzi sono costituiti da due parti: i primi 24 bit indicano il costruttore, mentre i rimanenti bit sono il numero progressivo della scheda.

Switch

  • Partiamo dalla connessione di rete di basso livello, quindi Ethernet ed il livello Media Access Protocol (MAC)
  • Le schede di rete sono connesse tra loro tramite un apparato chiamato switch. Questo apparato riceve le trame da ogni scheda e lo inoltra alla scheda destinataria.
  • Ogni trama trasmesa conterrà due indirizzi MAC, uno sarà l'indirizzo della scheda stessa, il mittente e l'altro quello della o delle schede da raggiungere, il destinatario.

Switch

  • Lo switch impara l'indirizzo MAC della o delle schede connesse ad una certa porta (presa) analizzando l'indirizzo del mittente delle trame che entrano da quella porta.
  • Se uno switch riceve una trama destinata ad un indirizzo che non conosce, la inotlra su tutte le porte, per essere sicuro di raggiungere il destinatario.

ICMP

  • Nel caso si stia inviando un pacchetto ad una macchina inesistente o spenta della nostra rete, lo scoriremo immediatamente in quanto non avremo risposta ad ARP, e quindi il programma riceverà un errore.
  • Esistono anche altri tipi di messaggio, per indicare errori oppure per informazioni di servizio. Alcuni li vedremo in seguito.
  • Per risolvere questa situazione, oltre ad altre, viene introdotto Internet Control Message Protocol (ICMP).
  • Sebbene ICMP sia utilizzato anche da IP, di livello 3, è un protocollo di livello 4.

ICMP

  • Se invece lo stiamo inviando ad una macchina inesistente di una rete remota o ad una subnet inesistente di una rete remota, ARP non ci avvisa dell'errore.
  • Il router che non riesce ad inoltrare il pacchetto risponderà con un pacchetto ICMP del tipo destination unreachable che ci indicherà se la rete o l'host sono irraggiungibili

IPv6

  • Questa nuova versione, oltre a nuove caratteristiche e semplificazioni varie, possiede un indirizzo a 128 bit.
  • Gli indirizzi IPv6 vengono indicati divisi in 8 gruppi di cifre esadecimali, ognuno rappresentante 16 bit, separati da :
  • Le reti disponibili in IPv4 sono state esaurite lo scorso luglio.
  • Gli 0 non significativi di ogni gruppo possono venire omessi. Una sequenza (ed una sola) di gruppi a 0 può essere sostituita da ::

IPv6

  • Ad esempio, localhost (127.0.0.1 in IPv4) corrisponde all'indirizzo 1 a 128 bit, che si scrive ::1
  • Un indirizzo di una scheda reale invece potrebbe essere fe80::223:54ff:fe62:d84e
  • Per fortuna da parecchi anni è disponibile la prossima versione di IP, IPv6.

Netmask

  • La notazione CIDR è estremamente compatta e facile da usare per noi, ma non è comoda per il computer.
  • Che, riconvertito in decimale come indirizzo IP risulta 192.168.2.128, quindi il nostro IP appartiene alla seconda sottorete.
  • Converiamo in binario l'indirizzo IP e facciamo l'operazione:
    11000000 10101000 00000010 10100000 &
    11111111 11111111 11111111 10000000 =
    11000000 10101000 00000010 10000000 .

Netmask

  • Se ad esempio abbiamo l'indirizzo 192.168.2.160 possiamo fare fare un'operazione di and con un numero che abbia tutti i bit corrispondenti al campo net ad 1 e tutti quelli del campo host a 0, quindi 15 bit a 1 seguiti da 7 a 0.
  • Il numero che abbiamo utilizzato prende il nome di netmask, e viene normalmente scritto nella forma degli indirizzi IP, quindi 255.255.255.128
  • Per il computer è molto più semplice utilizzare l'operazione di and bit a bit indicata con & (semplice, non doppio) in C o dal opcode come AND o ANL in Assembler.

Tabella di routing

  • Per scoprirle si deve utilizzare una tabella di routing, che ha tre colonne principlai:
    • rete (in notazione CIDR o come indirizzo e maschera)
    • gateway (router)
    • interfaccia (scheda di rete)
  • Per prime verranno elencate le reti direttamente connesse. Esse avranno 0 nel campo gateway.
  • Queste informazioni sono necessarie allo stesso modo sia per i router che per i normali host

Tabella di routing

  • Naturalmnete, se dovessimo indicare in questo modo tutte le reti raggiungibili tramite Internet, la tabella sarebbe infinita.
  • Naturalmente questi ragionamenti hanno senso se è possibile conoscere quali sono le reti locali, le reti remote ed i router (gateway) per raggiungerle.
  • Successivamnete verranno elencate le altre reti note, indicando nel campo gateway l'indirizzo del router da utilizzare. Questo gaeway dovrà essere raggiunto direttamente tramite l'interfaccia idicata nellla riga.

Tabella di routing

  • La rete del default gateway viene indicata come 0/0. Se appichiamo l'operazione di AND indicata precedentemente vediamo che questa rete corrisponde a qualunque indirizzo IP.
  • D'altronde normalmente la connessione ad Internet avviene solitamente tramite una sola connessione, quindi un solo gateway.
  • Potremo quindi indicare questo come il default gateway, vale a dire il gateway cui inviare tutti i pacchetti per i quali non conosciamo altrimenti la rete.

Routing Loop e TTL

  • Se inviamo un pacchetto ad una rete esistente ed i router sono configurati correttamente, non ci saranno problemi.
  • Per evitare questo viene inserito nella intestazione IP un campo, chiamato Time To Live o TTL, che viene decrementato all'attraversamento di ogni router.
  • Normalmente questo campo è impostato ad un valore tale da riuscire a raggiungere qualunque destinazione (ha un massimo di 255)

Routing Loop e TTL

  • In alcuni casi, magari per semplificare le regole di routing, è possibile che i default gateway facciano un anello, vale a dire, dl'ultimo gateway punta al primo.
  • In questo caso, se si invia un pacchetto ad una rete o subnet inesistente, verrebbe continuamente rimbalzato tra i router dell'anello occupando tutta la banda disponibile.
  • Se però il pacchetto viene rimbalzato tra i router, in breve questo campo raggiungerà il valore 0

Routing Loop e TTL

  • Quando un router, decrementando il TTL, arriva 0, scarta il pacchetto ed invia al mittente un pacchetto ICMP time exceeded.

Echo e PING

  • Alla ricezione di un pacchetto ICMP echo, il protocollo ICMP risponde inviando um pacchetto echo reply con lo stesso contenuto.
  • Si può quindi verificare, se si fanno inviare piû pacchetti, se la connettività é stabile o se vengono persi dei pacchetti.
  • Questo comando invia uno o più pacchetti echo all'host che indichiamo e misura il tempo che passa per ricevere la risposta, se arriva.
  • Un utile messaggio ICMP è l`echo con il relativo echo reply.

Echo e PING

  • Questo consente di creare il comando diagnostico ping.
  • Con questo comando si può in primo luogo verificare se esiste la connettività sia per raggiungere la destinazione che per il ritorno.
  • Perfinire si può verificare la velocità del collegamento, controllando il tempo della risposta.

Traceroute

  • Il meccanismo del TTL ed dell'ICMP time exceeded consente di realizzare un interessante strumento diagnostico
  • Il primo pacchetto verrà scartato dal primo router, che invierà un ICMP time exceeded rivelando il proprio IP.
  • Il comando traceroute è in grado di individuare i router che il nostro pacchetto attraversa per giungere a destinazione.
  • Per questo traceroute inviauna serie di pacchetti con TTL crescente a partire da 1.

Traceroute

  • I successivi pacchetti individueranno i successivi router fino a quando non arriverà un errore dall'host di destinazione.

IPv6 - Compatibilità

  • Gli indirizzi IPv6 ed IPv4 sono incompatibili e quindi se la nonstra macchina non è configurata per IPv6 non possiamo raggiungere macchine con indirizzi IPv6 e viceversa.
  • Dato che attualmente la situazione è mista, con una parte della rete con indirizzi IPv4 ed un'altra con indirizzi IPv6, la maggior parte delle macchine possiede due stack IP: uno IPv4 ed uno IPv6.
  • Se così non è, è possibile configurare dei tunnel che trasferiscano pacchetti di un protocollo inseriti in pacchetti dell'altro.

IPv6 - Compatibilità

  • In questo modo, se tutto è configurato correttamente, ogni scheda possiede almeno due indirizzi: uno IPv4 ed uno IPv6, potrà quindi comunicare con ogni tipo di macchina.
  • Occorre però che anche la rete sia configurata per trasferire pacchetti di entrambi i protocolli, altrimenti non potremo trovare rotte per la destinazione.

Servizi base

  • Non possiamo entrare in questa sede nel dettaglio dei vari protocolli, ma elenchiamo i principali, con i reltativi well known port:
    Portprotocollosiglafunzione
    21File Transfer ProtocolFTPtrasfermiento file
    22Secure ShellSSHTerminale Remoto Sicuro (anche trasferimento file e port forwarding)
    23TelnetTelnetTerminale remoto base
    25Simple Mail Transfer ProtocolSMTPTrasmissione mail
    53Domain Name SystemDNSRicerca degli IP in base al nome
    80HyperText Transfer ProtocolHTTPTrasferimento contenuti WEB
    110Post Office Protocol v3POP3Recupero mail da casella di posta remota
    143-220Internet Message Access ProtocolIMAPGestione completa casella di posta remota
    443HyperText Transfer Protocol SecureHTTPSTrasferimento contenuti WEB in maniera sicura
    520Routing Information ProtocolRIPCompila automaticamente le tabelle di routing

Servizi base

  • In Internet, i server dei vari protocolli di livello applicativo possono essere associati a qualunque porta, ma per semlicità vengono spesso associati ad dei port standard chiamati well known ports.
  • Sopra il livello 4, Internet Protocol Suite prevede un solo ulteriore livello, il livello applicativo.
  • TCP ed UDP consentono di comunicare, ma non entrano nel merito della comunicazione.

Lo schema logico

TCP ed UDP

  • Il protocollo IP, di livello 3, consente la comunicazione tra macchine, ma non di far comunicare specifici programmi all'interno di una macchina.
  • Inoltre è un protocollo datagram, quindi non garantisce la correttezza e completezza delle informazioni ricevute, cosa che la maggior parte dei protocolli richiede.
  • Viene inoltre introdotto Transfer Control Protocol, TCP, che gestisce comnnessioni prive di errori, sempre utilizzando una porta mittente ed una destinataria e quindi più programmi.

TCP ed UDP

  • Per risolvere il primo problema, viene introdotto il concetto di porta, che è un numero a 16 bit che identifica una comunicazione, quindi i programmi che comunicano
  • Essendo TCP ed UDP due protocolli diversi, un numero di porta associato ad uno dei due identifica un diverso interlocutore rispetto allo stesso numero, associato all'altro protocollo (la porta 200 TCP va as un diverso programma dalla porta 200 UDP).
  • Siccome non tutti i protocolli richiedono una comunicazione confermata a connessa (sicura e completa), vengono introdotti due diversi protocolli di livello 4.

TCP ed UDP

  • In questo modo lo stack potrà contrassegnare i paccheti uscenti con la porta scelta ed inviare al giusto programma i paccheti entranti in base al protocollo (TCP o UDP) e alla porta.
  • I programmi che desiderano inviare o ricevere dati si devono registrare nello stack indicando il tipo di protocollo e la porta cu si assoceranno.
  • Per primo, User Datagram Protocol, UDP, si limita ad introdurre la porta del mittente e quella del destinatario, consentendo a più programmi di comunicare contemporanemante in maniera datagram.

La rete del Fermi - Gli Switch e le VLAN

  • L'utilizzo di vlan consente inoltre di creare dei trunk, per connettere più reti:
    • in rame verso lo scantinato, per la rete del centralino e quella che connette il router della biblioteca e del CAD
    • in fibra verso il biennio, che trasporta la WiFi, il laboratorio 80 e l'aula insegnanti
    • in doppia fibra che trasporta la WiFi ed il centralino ed il totem del liceo

La rete del Fermi - Gli Switch e le VLAN

  • In particolare, i due armadi dei server sono connessi tramite switch managed, in modo da semplificare le connessioni e renderle più flessibili
  • Per connettere le macchine vengono usati sia switch semplici che switch programmabili (managed)
  • Oltre a queste, sono state create anche alcune reti di servizio, come ad esempio quella a cui sono connessi i totem dell'ingresso o quella che consente di configurare gli switch managed, separata dalle reti degli utenti

La rete del Fermi - Le reti ed i server

  • La nostra rete è sostanzialmente suddivisa in tre livelli:
    1. Le connessioni ad Internet
    2. La connessione tra i server e la DMZ
    3. Le reti dei singoli laboratori

La rete del Fermi - Le reti ed i server

  • Tra le linee internet e l'isituto è posizionato unn firewall, che separa le macchine interne in due reti principali:
    • il backbone che contiene i server interni
    • la DMZ con i server connessi ad Internet e quindi insicuri

La rete del Fermi - Le reti ed i server

  • Alla DMZ sono connessi i server connessi ad Internet, vale a dire:
    • Il server WEB
    • il proxy e DNS interno (per i laboratori)
    • il server Mstercom del registro
    • il firewall/proxy Mastercom per la WiFi

La rete del Fermi - Le reti ed i server

  • La scuola è connessa ad Internet tramite due connesioni da 10 Mbps:
    • una linea in fibra di TEAnet
    • una connessione con ponte radio a MyNET
  • Al backbone sono connessi i server:
    • ntmail per i database e l'autentica degli utenti
    • nt4 (l'unico Windows) per le chiavi di Autocad ed il server Wins
    • nt6, nt7 ed nt8 che contengono le directory degli utenti, ognuno connesso ai sui laboratori

Lo Schema Fisico

[any material that should appear in print but not on the slide]