prof. S. Masetta Programma di Sistemi Classi quinte Agg. 21/09/2013 Sistemi www.sezioneb.com SOMMARIO 1 Pila ISO OSI ________________________________________________________________________ 4 1.1 Introduzione ___________________________________________________________________ 4 1.2 Livello 1: fisico (Physical Layer)_____________________________________________________ 4 1.2.1 Mezzi trasmissivi ____________________________________________________________ 5 1.2.2 Tipologie di mezzi trasmissivi __________________________________________________ 5 1.2.3 Caratteristiche dei mezzi trasmissivi ____________________________________________ 6 1.2.4 Classificazione delle reti ______________________________________________________ 7 1.2.5 LAN ______________________________________________________________________ 7 1.2.6 MAN _____________________________________________________________________ 7 Sono reti ad estensione metropolitana ovvero per collegare fisicamente i nodi di una città ________ 7 1.2.7 WAN _____________________________________________________________________ 7 1.2.8 Topologie di rete____________________________________________________________ 8 1.3 Livello 2: Data Link ______________________________________________________________ 8 1.3.1 Framing ___________________________________________________________________ 8 1.3.2 Controllo degli Errori ________________________________________________________ 9 1.3.3 Controllo di Flusso _________________________________________________________ 10 1.3.4 Sottolivello MAC [modifica] __________________________________________________ 10 1.4 Livello 3: Rete _________________________________________________________________ 11 1 1.4.1 Funzioni del livello di rete____________________________________________________ 11 1.4.2 Livello rete in IP ___________________________________________________________ 12 1.4.3 Instradamento ____________________________________________________________ 12 1.4.3.1 Commutazione di Pacchetto________________________________________________ 12 1.4.3.2 switching _______________________________________________________________ 12 1.4.3.3 routing ________________________________________________________________ 13 1.4.4 Indirizzo IP _______________________________________________________________ 13 1.4.5 Classi di indirizzi IP _________________________________________________________ 14 1.4.5.1 Host___________________________________________________________________ 18 1.4.5.2 Subnet mask ____________________________________________________________ 18 1.4.5.3 Precisazioni _____________________________________________________________ 21 1.4.5.4 Un esempio pratico ______________________________________________________ 21 1.4.5.5 Subnet mask ____________________________________________________________ 22 1.4.6 1.4.6.1 Network address translation _________________________________________________ 23 Tipi di NAT______________________________________________________________ 24 1.5 Livello 4: Trasporto _____________________________________________________________ 24 1.6 Livello 5: Sessione ______________________________________________________________ 26 1.7 Livello 6: Presentazione _________________________________________________________ 26 1.8 Livello 7: Applicazione __________________________________________________________ 27 1.8.1 Domain Name System ______________________________________________________ 27 1.8.2 Indirizzamento IP statico e dinamico ___________________________________________ 28 1.8.3 Indirizzi dinamici ___________________________________________________________ 28 1.8.4 Indirizzi __________________________________________________________________ 28 Versioni _________________________________________________________________________ 28 IPv4 ___________________________________________________________________________ 28 IPv6 ___________________________________________________________________________ 28 2 Comandi _________________________________________________________________________ 30 2 2.1 ipconfig ______________________________________________________________________ 30 2.2 ping _________________________________________________________________________ 30 2.3 tracert _______________________________________________________________________ 30 3 1 Pila ISO OSI 1.1 Introduzione In telecomunicazioni e informatica l'Open Systems Interconnection (meglio conosciuto come modello ISO/OSI) è uno standard de iure per reti di calcolatori stabilito nel 1978 dall'International Organization for Standardization (ISO), il principale ente di standardizzazione internazionale, che stabilisce per l'architettura logica di rete una struttura a strati composta da una pila di protocolli di comunicazione suddivisa in 7 livelli, i quali insieme espletano in maniera logico-gerarchica tutte le funzionalità della rete. 1.2 Livello 1: fisico (Physical Layer) Obiettivo: trasmettere un flusso di dati non strutturati attraverso un collegamento fisico, occupandosi della forma e della tensione (voltaggio, anche se quest'ultimo termine, applicando la lingua italiana all'elettrotecnica, è errato) del segnale. Ha a che fare con le procedure meccaniche e elettroniche necessarie a stabilire, mantenere e disattivare un collegamento fisico.[4] 4 Semplicemente: si occupa di controllare la rete, gli hardware che la compongono e i dispositivi che permettono la connessione. 1.2.1 Mezzi trasmissivi In telecomunicazioni con il termine mezzo trasmissivo si indica il canale a livello fisico entro il quale viaggiano i segnali rappresentativi dell'informazione; ne consegue quindi anche la sostanziale equivalenza tra i termini "mezzo trasmissivo" e "canale trasmissivo". Caratteristiche Affinché l'informazione viaggi a distanza, cioè da e verso entità dislocate in luoghi diversi, necessita di una elaborazione che la trasformi in segnali elettrici e/o elettromagnetici i quali, a loro volta, devono essere adattati ai canali utilizzati per il trasporto. Un canale di trasmissione ideale dovrebbe possedere una banda sufficientemente larga ed uniforme per contenere lo spettro del segnale di informazione senza distorcerlo e dovrebbe poterlo trasferire a qualsivoglia distanza senza introdurre degradamenti nella qualità elettrica di origine; la realtà risulta diversa in quanto sono presenti fattori di degradazione tipici quali: Attenuazione; Rumore di natura elettrica oppure segnali spuri cioè interferenza; Voci correlate: Distorsione. Doppino Fibra ottica Cavo coassiale Codifica Manchester Codifica 4B/5B Cavi elettrici WiFi 1.2.2 Tipologie di mezzi trasmissivi I mezzi trasmissivi possono classificarsi secondo il seguente schema: Mezzi trasmissivi ad onde guidate o Linee metalliche Linee in cavo Doppino 5 Cavo coassiale Coppie simmetriche Guida d'onda o Linee non metalliche Fibra ottica Mezzi trasmissivi ad onde irradiate o Ponte radio terrestre o Ponte radio satellitare Il livello fisico è il livello 1 del modello ISO/OSI. In trasmissione questo livello riceve dal livello datalink i frame da trasmettere, li converte in una sequenza di bit e li trasmette sul canale o mezzo fisico in maniera sequenziale. In ricezione il flusso di informazione (sequenza di pacchetti) procede dal livello fisico verso l'alto passando al livello superiore di datalink. Il livello 1 si preoccupa della gestione del mezzo trasmissivo (ad esempio, cavo coassiale (connettore BNC), cavi STP o UTP, fibre ottiche) su cui avviene lo scambio di informazioni, occupandosi della trasmissione di singoli bit su un mezzo trasmissivo. Esso definisce per questo le modalità di connessione tra il cavo e la scheda di rete e di conseguenza le caratteristiche cui i mezzi di collegamento fisico devono sottostare, quali: caratteristiche fisiche, come forma, dimensioni, numero di piedini di un connettore, specifiche meccaniche caratteristiche funzionali, come il significato dei pin di un componente. caratteristiche elettriche, come i valori di tensione per i livelli logici, e di conseguenza la codifica, la sincronizzazione e la durata di ogni bit; codifica del segnale digitale su un mezzo trasmissivo che è inerentemente analogico (modulazione) Esistono diversi standard relativi alla gestione del mezzo trasmissivo, sia esso analogico o digitale. 1.2.3 Caratteristiche dei mezzi trasmissivi Caratteristiche basilari di un mezzo trasmissivo sono: la riduzione della potenza del segnale al crescere della distanza percorsa (o attenuazione); 6 la suscettibilità alla degradazione del segnale a causa di elementi esterni (o rumore o interferenza); i fenomeni di distorsione che avvengono al segnale trasmesso; la capacità (o banda passante); i costi; i suoi requisiti in maneggevolezza, aggiornabilità e gestione. Uno stesso mezzo trasmissivo può essere utilizzato su diverse bande trasmissive. In tal caso le caratteristiche di attenuazione, rumore, distorsione possono essere diversi per ciascuna banda. Questo accade ad esempio per le fibre ottiche, che hanno tre diverse finestre trasmissive. 1.2.4 Classificazione delle reti 1.2.5 LAN Si intendono reti a livello di stanza, piano o edificio. 1.2.6 MAN Sono reti ad estensione metropolitana ovvero per collegare fisicamente i nodi di una città 1.2.7 WAN Sono reti a ricoprimento geografico, ovvero più città, nazioni o continenti 7 1.2.8 Topologie di rete In telecomunicazioni una topologia di rete è la rappresentazione della struttura geometrica di una rete di telecomunicazioni che fa parte della più generale architettura di rete. Una topologia di rete rappresenta un modello geometrico (grafo) di una rete di telecomunicazioni i cui elementi costitutivi sono i nodi e i rami. Un nodo individua un elemento della rete connotato da specifiche funzionalità e un ramo costituisce un elemento di connessione fisica fra due nodi. Il significato di queste entità geometriche è diverso a seconda del tipo di operatività che si considera. 1.3 Livello 2: Data Link Il livello datalink è il secondo livello dei protocolli del modello ISO/OSI per l'interconnessione di sistemi aperti. Questo livello riceve pacchetti dal livello di rete e forma i frame che vengono passati al successivo livello fisico. Il Livello di Datalink deve svolgere diverse funzioni specifiche: 1.3.1 Raggruppare i bit del livello fisico in pacchetti chiamati frame (framing); Controllare e gestire gli errori di trasmissione; Regolare il flusso della trasmissione fra sorgente e destinatario (controllo di flusso). Framing Al fine di fornire servizi al livello di rete, il livello data link deve usufruire dei servizi fornitigli dal livello fisico. L'approccio consueto del livello data link è quello di dividere il flusso dei bit in pacchetti (adattatti appunto ad una trasmissione su una rete a pacchetto), e calcolarne la Checksum. Vari metodi vengono utilizzati per la suddivisione dei bit in pacchetti o frame: 8 Conteggio dei caratteri. Caratteri di inizio e fine. Indicatori (flag) di inizio e fine. Il metodo del conteggio di caratteri (ottenuto specificando nel campo d’intestazione del pacchetto il numero di caratteri del frame) è raramente utilizzabile poiché, se il campo che contiene il numero di caratteri si rovina (altera) durante la trasmissione, non si può più individuare dove comincia il frame successivo; vengono quindi utilizzate le altre tecniche. Nella trasmissione orientata al byte (il frame mantiene la suddivisione in byte) il frame viene preceduto dalla sequenza di caratteri ASCII DLE STX (Data Link Escape Start of TeXt) e finisce con la sequenza DLE ETX (Data Link Escape End of TeXt). Se un frame si rovina e la destinazione perde la sincronizzazione basta trovare il successivo DLE STX o DLE ETX. Il carattere DLE però può comparire casualmente dentro al frame quando vengono trasmessi dati binari come programmi oggetto o numeri in virgola mobile; perché questi caratteri non interferiscano viene aggiunto un ulteriore DLE (che viene rimosso a destinazione prima di passare al frame al livello di rete) in modo che solo i DLE singoli vengano interpretati come delimitatori; questa tecnica si chiama character stuffing. Nella trasmissione orientata al bit (il frame può contenere un numero qualsiasi di byte) ogni frame inizia e finisce con la sequenza 01111110 chiamata flag: questa sequenza può comparire casualmente nei dati, perciò in trasmissione dopo cinque 1 consecutivi viene sempre inserito uno 0 nel flusso di bit, indipendentemente dal fatto che il bit successivo sia 1 o 0, mentre in ricezione bisogna provvedere ad eliminare i bit inseriti, rimuovendo sempre uno 0 dopo cinque 1; questa tecnica è chiamata bit stuffing. 1.3.2 Controllo degli Errori Come detto, la stazione mittente del livello data-link riceve i dati dal livello superiore e li suddivide in frame prima di affidarli al livello fisico per la trasmissione su canale, aggiungendo ad esso un codice per il controllo degli errori (Integrità dati) di trasmissione in ricezione (Checksum). Quando un pacchetto arriva a destinazione la Checksum viene ricalcolata dallo stesso livello datalink del sistema ricevente. Se il risultato è diverso da quello contenuto nel pacchetto, il livello datalink riconosce che è stato commesso un errore e prende adeguati provvedimenti (come ad esempio scartare il pacchetto e spedire un messaggio di errore in risposta al mittente). In generale si hanno due tipi di codici di controllo, i codici rilevatori che permettono soltanto di capire che il frame non è corretto ed i codici correttori che permettono non solo di capire se si è verificato un errore, ma anche di individuare la posizione dell’errore e di conseguenza correggerlo. Questi ultimi codici richiedono molti più bit dei codici rilevatori e quindi sprecano ampiezza di banda; di solito perciò vengono usati i codici rilevatori. In caso di errore, se il servizio è inaffidabile il frame può essere semplicemente scartato; se la linea deve essere affidabile bisogna che tutti i frame arrivino correttamente; se si usa un codice rilevatore il ricevente deve richiedere la ritrasmissione dei frame errati. La scelta tra codici rilevatori e correttori può dipendere anche dalla velocità delle linee (per linee a bassa velocità aspettare la ritrasmissione potrebbe richiedere troppo tempo) o affidabilità (se il tasso di errore sulla linea è molto basso non vale la pena sprecare molta per un codice correttore) o dal tipo di servizio richiesto (real-time o meno). 9 Il modo consueto per assicurare una consegna affidabile è quello di fornire al mittente un riscontro di quello che sta accadendo all'altro capo della linea. Tipicamente il protocollo richiede che il ricevente rispedisca alcuni speciali pacchetti di controllo con valore positivo o negativo a seconda dei pacchetti ricevuti. Se il mittente riceve un riscontro positivo su di un pacchetto spedito, sa che esso è arrivato correttamente. Se invece ottiene un riscontro negativo significa che qualcosa è andata male e che occorre ritrasmettere il pacchetto. Una complicazione aggiuntiva potrebbe derivare dalla possibilità che i problemi hardware causino la sparizione totale del pacchetto. Se un pacchetto, non arriva a destinazione, il mittente non aspetterà all'infinito, infatti viene utilizzato un timer, che viene avviato quando i dati vengono trasmessi, se il timer supera la soglia limite(programmata) senza ricevere l'ack (Acknowledgment o conferma), rimanderà di nuovo i pacchetti. Tuttavia, se il pacchetto o il messaggio di riscontro vengono persi, il timer scade, e la stazione mittente, non ricevendo conferma, è costretta a reinviare i dati, ma a questo punto il mittente potrebbe riceverebbe due o più volte lo stesso pacchetto. Per risolvere questo problema, i pacchetti inviati vengono numerati, così il sistema ricevente, nel caso in cui riceva un numero di pacchetto uguale al precedente, dunque una copia del pacchetto, lo scarta. Questa tecnica è nota come Stop and wait; le altre tecniche maggiormente utilizzate per il controllo degli errori sono il Codice di Hamming e il CRC (Codice di Ridondanza Ciclica). 1.3.3 Controllo di Flusso Un altro importante problema di progettazione che si ritrova nel livello di data link è quello gestire una linea condivisa quando più nodi vogliono inviare messaggi nello stesso tempo e inoltre deve decidere cosa fare di un mittente che sistematicamente tende a trasmettere pacchetti più velocemente di quanto il ricevente li accetti. Questa situazione può facilmente essere riscontrata quando il mittente è dislocato su una macchina veloce e il ricevente su una macchina lenta. Il mittente continua a spedire pacchetti ad alta velocità, fino a quando il ricevente non è completamente sopraffatto. Anche se la trasmissione è esente da errori, a un certo punto il ricevente non sarà in grado di gestire i pacchetti in arrivo e inizierà a perderli. La tipica soluzione è quella di introdurre un controllo di flusso per obbligare il mittente a rispettare la velocità del ricevente nello spedire i pacchetti. Questa imposizione solitamente richiede un certo tipo di meccanismo di riscontro in modo che il mittente possa essere avvisato se il ricevente è in grado di ricevere o meno. Nel caso in cui invece più nodi vogliono inviare contemporaneamente dei messaggi, si tende ad introdurre un controllo centralizzato, creando un singolo nodo di controllo, responsabile di determinare chi ottiene la priorità all'interno della rete; il nodo successivo quindi, controllerà quando la rete non sarà più occupata, così da poter inviare il messaggio appena questa diventerà libera. Può accadere però, che più nodi monitorizzano la rete e che appena questa sia libera, inviano immediatamente i messaggi, in questo caso si avranno dei problemi di collisione; per ovviare a questo problema, i nodi che monitorizzano la rete attenderanno un tempo casuale prima di inviare i messaggi, poiché è improbabile che i nodi scelgano lo stesso istante per inviare i dati. 1.3.4 Sottolivello MAC [modifica] Il sottolivello inferiore è Media Access Control. A volte questo si riferisce al sottolivello che stabilisce chi può utilizzare il mezzo trasmissivo in un certo momento (di solito CSMA/CD). Altre volte si riferisce in una struttura a frame che contiene indirizzi MAC. Ci sono essenzialmente due tipi: distribuito e centralizzato. Entrambi possono essere paragonati al dialogo di due persone, ad esempio, in una rete fatta di persone che parlano, come una conversazione, cerchiamo di capire da chi è intorno a noi se stanno per iniziare a parlare. Se due persone iniziano a parlare insieme, smetteranno subito e inizieranno un lungo scambio di "No, parla prima tu". 10 Il sottolivello MAC stabilisce dove iniziano i frame di dati e dove finiscono. In una rete di posta ordinaria, ogni lettera è un frame di dati, e ognuno capisce dove iniziano e finiscono perché sono all'interno di una busta. Si può anche specificare che una lettera inizierà con un'espressione come "Caro Tizio" e finirà con un'espressione come "Distinti saluti". 1.4 Livello 3: Rete Il livello rete (Network layer) è il livello 3 della pila ISO/OSI. Questo livello riceve datagrammi dal livello di trasporto e forma pacchetti che vengono passati al Livello datalink. Il compito del livello di rete è la trasmissione di pacchetti tra due host arbitrari, che in generale non sono direttamente connessi (ovvero non hanno un collegamento diretto tra di loro). Nel modello ISO/OSI, il livello di rete è presente in tutti i commutatori della rete ovvero i nodi, mentre i livelli superiori sono presenti solo nei nodi terminali. 1.4.1 Funzioni del livello di rete inoltro, ovvero ricevere un pacchetto su una porta, immagazzinarlo e ritrasmetterlo su un'altra. Questa funzione è presente in tutti i nodi della rete, e può comportare l'utilizzo di protocolli di livello collegamento differenti o frammentazione e riassemblaggio: se un pacchetto ricevuto ha una dimensione eccessiva per la rete su cui deve essere trasmesso, il livello di rete lo divide in frammenti e, in maniera complementare, si occupa di riassemblare i frammenti ricevuti al momento della consegna. instradamento (routing), ovvero determinare il percorso per la trasmissione dei dati attraverso la rete a partire dall'indirizzo IP del destinatario. Nella maggior parte dei casi, questa funzione viene svolta dinamicamente tramite appositi algoritmi, che analizzano le condizioni della rete, le tabelle di instradamento, la priorità del servizio e altri elementi secondari. alcuni protocolli di rete forniscono un servizio di gestione delle connessioni (x.25, frame relay, Asynchronous Transfer Mode), ovvero richiedono che venga stabilito un canale di comunicazione prima che due host possano scambiarsi dati; altri trasportano semplicemente i datagrammi a destinazione (IP, IPX). I protocolli orientati alla connessione possono offrire garanzie di consegna in ordine dei pacchetti, mentre questo non avviene normalmente nei protocolli non orientati alla connessione funzioni talvolta presenti nel livello di rete sono il controllo della congestione, o garanzie di qualità di servizio, tipicamente basate sulla prenotazione delle risorse su tutti i nodi della rete. nelle reti geografiche (WAN o MAN) può venire gestita la tariffazione, calcolata sulla base dei tempi di connessione e/o di altri parametri. 11 1.4.2 Livello rete in IP Nel modello TCP/IP, il livello 3 viene detto livello internet oppure livello di internetworking, in quanto interconnette reti eterogenee, che possono essere basate su protocolli di livello collegamento (ad esempio ethernet, PPP) o su protocolli di rete (ad esempio frame relay, Asynchronous Transfer Mode), per realizzare un'unica rete in modo trasparente agli utilizzatori. La forza di IP sta proprio in questo agnosticismo rispetto al livello di rete, che permette di usare o riusare tecnologie già disponibili, e di adattarsi con naturalezza a nuove tecnologie. Osservando una rete IP costruita con tecnologie eterogenee, si può notare che alcuni nodi della rete eseguono IP (e sono detti router); altri nodi instradano pacchetti IP usando altre tecnologie di rete (che stanno sotto IP nello stack dei protocolli). Questi nodi sono normalmente detti switch o commutatori, anche se il termine per antonomasia indica specificamente lo switch ethernet. IP determina il miglior cammino (detto routing o instradamento) per l’inoltro dei pacchetti, attraverso la consultazione delle tabelle di routing. Tali tabelle possono essere di tipo statico (realizzate manualmente dai gestori della rete) o dinamico (composte con l'utilizzo di protocolli di routing tipo l'OSPF, il RIP o il BGP che servono a popolare tali tabelle scambiando tra i vari apparati le rotte conosciute). 1.4.3 Instradamento Nelle reti telecomunicazioni, sia a commutazione di circuito che a commutazione di pacchetto, l'instradamento è la funzione di un commutatore (centrale telefonica, router, switch) che decide dove inviare un elemento di comunicazione ricevuto (conversazione telefonica, pacchetto, cella, flusso di dati). Il termine è una metafora che si riferisce all'atto di instradare (dirigere, indirizzare). Ciascun elemento di comunicazione viene inoltrato dalla sorgente ad un commutatore, e da questo al successivo, fino a raggiungere la destinazione desiderata. Il commutatore spesso usa una tabella di indirizzamento per decidere dove inviare ciascun elemento. Il formato di questa tabella ed il modo in cui viene popolata e possibilmente modificata sono specifici delle diverse tecnologie utilizzate e delle scelte progettuali adottate. 1.4.3.1 Commutazione di Pacchetto L'oggetto dell'instradamento è il pacchetto, ovvero la decisione di instradamento viene presa separatamente per ciascun pacchetto. Anche per questa ragione, diversi pacchetti tra la stessa coppia di nodi possono seguire strade diverse, arrivare a destinazione in un ordine diverso da quello con cui sono stati inviati, e alcuni possono andare persi. Nelle reti IP, la risoluzione di questi problemi è tipicamente demandata a TCP, un protocollo di livello di trasporto, oppure alle applicazioni. 1.4.3.2 switching Si intende con switching o "commutazione" l'instradamento effettuato a livello di collegamento, ad esempio nelle reti ethernet. Gli switch contengono tabelle di inoltro i cui elementi sono gli indirizzi mac dei singoli calcolatori presenti sulla rete. Questa tecnica ha pertanto dei considerevoli limiti di scalabilità, in quanto è necessario un elemento in queste tabelle per ciascun host presente sulla rete. 12 Le tabelle di inoltro degli switch vengono normalmente popolate in modo opportunistico man mano che i singoli nodi vengono collegati alla rete, osservando il traffico in transito. Quando lo switch riceve un frame destinato a un mac address che non conosce, lo invia in broadcast su tutte le porte, e questo spreco di risorse è un altro limite alla scalabilità dello switch. 1.4.3.3 routing Il routing è l'instradamento effettuato a livello di rete. Nel caso tipico di IP, i router usano tabelle di instradamento i cui elementi sono blocchi di indirizzi IP contigui, che sono detti route o rotte. Questo metodo è pertanto più scalabile, in quanto un singolo elemento della tabella di instradamento può gestire un numero anche molto alto di host. Per quanto riguarda l'indirizzamento IP il numero di hosts (singoli indirizzi) contenuto in una route o rotta è determinato dalla subnetmask (maschera di sottorete). Le tabelle di instradamento possono essere popolate con una combinazione di diversi metodi: routing per reti direttamente connesse: quando una interfaccia di rete di un host IP viene configurata con un indirizzo IP ed una maschera di sottorete, l'host conosce automaticamente la rotta per raggiungere tutti gli host di quella sottorete. o Nel caso molto semplice di una rete costituita da diverse sottoreti connesse ad un solo router, questo automatismo è sufficiente a popolare la tabella di routing di quel singolo router con tutti gli elementi necessari. routing statico: le rotte possono essere configurate manualmente sui vari router. Questo metodo è poco scalabile, difficile da gestire per reti più che banali, e non consente alla rete di utilizzare percorsi multipli quando questi sono disponibili per raggiungere una determinata destinazione. routing dinamico: le tabelle di instradamento vengono popolate da appositi protocolli di routing, eseguiti sui router, che permettono ai router di scambiarsi informazioni circa la topologia attuale della rete, e quindi di costruire automaticamente le tabelle di instradamento. Questi protocolli permettono alla rete di adattarsi automaticamente ad eventuali modifiche (aggiunta o caduta di nodi e di collegamenti), ed in particolare di reinstradare il traffico in caso di caduta di un collegamento su percorsi alternativi che permettono di raggiungere la destinazione finale (IP destination). Una volta popolata la propria tabella di routing, l'instradamento di ogni pacchetto IP pervenuto al router avviene applicando la regola del Longest prefix match. C'è infatti la possibilità che un router abbia nella propria tabella di instradamento delle destinazioni appartenenti a una o più rotte instradate verso percorsi diversi, in questo caso prevale la rotta più specifica, cioè quella con la subnetmask più lunga. 1.4.4 Indirizzo IP 13 Un Indirizzo IP è un numero che identifica univocamente un dispositivo collegato a una rete informatica che comunica utilizzando lo standard IP (Internet Protocol). Concetti generali Un indirizzo IP può essere visto come l'equivalente di un indirizzo stradale o un numero telefonico riferito a dispositivi collegati ad una qualsiasi rete telematica. Infatti, così come un indirizzo stradale o un numero telefonico identificano rispettivamente un edificio o un telefono, un indirizzo IP identifica univocamente uno specifico computer o dispositivo di rete. Gli indirizzi IP possono essere assegnati localmente per realizzare una LAN (Local Area Network), come succede con la numerazione degli interni di un edificio. Ma, al contrario degli indirizzi stradali, gli indirizzi IP possono mutare il loro valore a seconda di molti fattori (diversa LAN, indirizzamento dinamico) o a seconda della volontà dell'utente. Più esattamente l'indirizzo IP viene assegnato a una interfaccia (ad esempio una scheda di rete) che identifica l'host di rete, che può essere un personal computer, un palmare, un router, elettrodomestici in generale, ecc. Va considerato, infatti, che un host può contenere più di una interfaccia: ad esempio, un router ha diverse interfacce (minimo due) e per ognuna occorre un indirizzo IP. Gli indirizzi IP pubblici e i range di indirizzi sono rilasciati e regolamentati dall'ICANN tramite una serie di organizzazioni delegate. Tuttavia è da tener presente che a livello mondiale e nazionale i primi provider di connessione Internet si sono accaparrati un numero non controllato di indirizzi IP. Ciò ha portato a prevedere la terminazione degli indirizzi entro pochi anni dall'uscita del protocollo e, per ovviare a tale disagio, si è proceduto alla ridefinizione della versione 6 del protocollo IP (attualmente la versione largamente in uso è la 4). Tale versione è basata su indirizzi a 128 bit anziché a 32 e ciò permetterà l'assegnazione di un numero decisamente maggiore di indirizzi; si suol dire, a tal proposito, che nel mondo esisteranno più indirizzi IPv6 (IP versione 6) che molecole nell'universo.[senza fonte] Ma la difficile implementazione a livello globale dell'IPv6 ha portato all'introduzione di nuovi concetti che hanno rivoluzionato la teoria delle reti. Vanno citati l'abbandono del concetto di classi di indirizzi IP e l'utilizzo sempre maggiore di indirizzi classless (privi del concetto di classe), il subnet mask, la riorganizzazione gerarchica degli indirizzi mediante utilizzo massivo di NAT. 1.4.5 Classi di indirizzi IP Definizione Le classi di indirizzi IP sono un modo per caratterizzare lo spazio di indirizzamento IPv4. 14 Il Classful addressing (indirizzamento basato sulla classe) prevedeva che dai primi bit di un indirizzo si potesse determinare la maschera di rete. Questa scelta, con il crescere dell'utenza di internet, si è rivelata troppo rigida, ed è stata abbandonata a favore dell'indirizzamento senza classe (CIDR). Gli indirizzi IP all'origine erano stati suddivisi in classi 8 16 24 32 --------------------------------------------------------------CLASSE A |0|Ident. rete | Identificatore di host --------------------------------------------------------------- | --------------------------------------------------------------CLASSE B |1|0| Identificatore di rete | Identificatore di host --------------------------------------------------------------- | --------------------------------------------------------------CLASSE C |1|1|0| Identificatore di rete | Ident. di host | ----------------------------------------------------------------------------------------------------------------------------CLASSE D |1|1|1|0| Indirizzo multicast | ----------------------------------------------------------------------------------------------------------------------------CLASSE E |1|1|1|1| *Usi futuri* | ---------------------------------------------------------------In questo modo il tipo di classe si può determinare sulla base dei bit più significativi. Vediamo come: classe A: il primo byte rappresenta la rete, gli altri l'host; [0-126].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, gli altri l'host; [192-223].y.y.x. La maschera di rete è 255.255.255.0, o /24. Questi indirizzi iniziano con la sequenza 110 classe D: riservata agli indirizzi multicast: [224-239].x.x.x. Questi indirizzi cominciano con la sequenza 1110. Non hanno maschera di rete, essendo tutti e 32 i bit dell'indirizzo utilizzati per indicare un gruppo, non un singolo host. classe E: riservata per usi futuri: [240-255].x.x.x. Questi indirizzi cominciano con la sequenza 11110 e non è definita una maschera di rete. Esempio: nella classe B gli indirizzi vanno da 10000000 a 10111111 che in decimale corrispondono da 128 a 191. 15 Secondo le classi è possibile gestire un numero limitato di reti e un numero limitato di host in base al seguente schema: Classe Leading bits Totale Numero di Reti Numero Max di Indirizzi Host Classe A 0 128 16.777.214 Classe B 10 16.384 65.534 Classe C 110 2.097.152 254 Es. numero reti e host in classe B: reti: 214 = 16.384 hosts: 216 = 65.536 - (rete, broadcast) = 65.534 Per il calcolo della rete si eleva a 14 in quanto in classe b abbiamo i primi due ottetti che si riferiscono alla rete, quindi 16 bit, ma considerando che i primi 2 bit sono fissi diventa 14. La crescita di Internet ha reso questo sistema ridottissimo rispetto alle esigenze per cui si è introdotto la tecnica del mascheramento. Sostituzione delle classi A lungo andare le classi di tipo C si sono rivelate ridotte per le esigenze aziendali e si è dovuto fare ricorso alla classe B (con 214 indirizzi, quindi quasi 16.000) che venne a sua volta esaurita. Si fece quindi ricorso a tecniche diverse a partire dal 1993, ad esempio (CIDR). Altre tabelle l'intervallo di indirizzi utilizzati da ogni classe sono indicati nello schema successivo mediante notazione decimale puntata. Classe Leading bits Inizio intervallo Fine intervallo Class A 0 0.0.0.0 127.255.255.255 Class B 10 128.0.0.0 191.255.255.255 Class C 110 192.0.0.0 223.255.255.255 224.0.0.0 239.255.255.255 Class D (multicast) 1110 16 Class E 240.0.0.0 255.255.255.255 Alcuni indirizzi sono riservati per usi speciali (RFC 3330). Indirizzi CIDR Funzione RFC Classe Totale indirizzi 0.0.0.0 - 0.255.255.255 0.0.0.0/8 Indirizzi zero RFC 1700 A 16.777.216 10.0.0.0/8 IP privati RFC 1918 A 16.777.216 127.0.0.0/8 Localhost Address Loopback RFC 1700 A 16.777.216 169.254.0.0/16 Zeroconf RFC 3330 B 65.536 172.16.0.0/12 IP privati RFC 1918 B 1.048.576 and RFC 3330 C 256 relay RFC 3068 C 256 RFC 1918 C 65.536 Device RFC 2544 C 131.072 10.0.0.0 10.255.255.255 - 127.0.0.0 127.255.255.255 - 169.254.0.0 169.254.255.255 - 172.16.0.0 172.31.255.255 - 192.0.2.0 - 192.0.2.255 192.88.99.0 192.88.99.255 - 192.168.0.0 192.168.255.255 - 198.18.0.0 198.19.255.255 - 224.0.0.0 239.255.255.255 - 240.0.0.0 255.255.255.255 - 192.0.2.0/24 Documentation Examples 192.88.99.0/24 IPv6 to Anycast 192.168.0.0/16 IP privati IPv4 198.18.0.0/15 Network Benchmark 224.0.0.0/4 Multicast RFC 3171 D 268.435.456 240.0.0.0/4 Riservato RFC 1700 E 268.435.456 # 17 1.4.5.1 Host Si definisce host o end system (terminali) ogni terminale collegato ad Internet. Gli host possono essere di diverso tipo, ad esempio computer, palmari, dispositivi mobili e così via, fino a includere web TV, dispositivi domestici e thin client. L'host è definito in questo modo perché ospita programmi di livello applicativo che sono sia client (ad esempio browser web, reader di posta elettronica), sia server (ad esempio, web server). Uno stesso host può agire contemporaneamente da client e da server, in particolare con le applicazioni peer to peer (esempio Napster, Kazaa, eMule,Direct Connect etc.). I terminali sono collegati attraverso link di comunicazione. 1.4.5.2 Subnet mask Nell'architettura delle reti di elaboratori TCP/IP, una subnet mask o maschera di sottorete, è un numero che distingue quale porzione di un indirizzo ip identifica la (sotto)rete e quale l'host. È necessaria ad un dispositivo sorgente che vuole comunicare con un secondo dispositivo destinatario per decidere se spedire direttamente all'indirizzo IP del destinatario o se spedire i pacchetti tramite il router della propria rete locale. Viene espressa in due modi: in notazione decimale classless, dove l'indirizzo ip di una (sotto)rete è seguito da una barra e un numero (/24 rappresenta la subnet mask, 192.168.0.0/24 la subnet) 192.168.0.0/24 in notazione decimale puntata, cioè con un indirizzo di 32 bit scritto sotto forma di 4 numeri decimali (8 bit ciascuno) separati da un punto, come se fosse un indirizzo ip 255.255.255.0 Dalla prima notazione si deduce subito quanti bit di un indirizzo IP identificano la (sotto)rete, 24, e quanti l'host, 8. Più precisamente, si assume che i primi 24 bit sono uguali per tutti gli IP dei dispositivi logicamente presenti nella stessa rete, mentre gli ultimi 8 bit variano, identificando in maniera univoca ciascun dispositivo. La seconda notazione è invece quella generalmente usata per configurare l'indirizzo ip di un computer. Da notare che entrambe le notazioni sono corrispondenti, e rappresentano la stessa subnet mask: 24 equivale al numero di bit 1 consecutivi presenti nella maschera, dopodiché i rimanenti sono tutti 0; 255.255.255.0 rappresenta un valore binario formato esattamente da ventiquattro bit 1 seguiti da otto bit 0. 24 -> 11111111.11111111.11111111.00000000 255.255.255.0 -> 11111111.11111111.11111111.00000000 18 Dalla subnet mask si deduce facilmente anche il numero massimo di host presenti nella subnet considerata: se abbiamo n bit per gli host (8 nel nostro caso), vuol dire che abbiamo circa 2n possibili valori (256 nel nostro caso) Più precisamente: Per determinare il numero massimo di indirizzi utili in una subnet basta contare il numero n di bit 0 a destra della subnet mask, porre n come esponente di 2, e sottrarre a ciò i due indirizzi riservati (uno indica la sottorete stessa, l'altro è usato per fare broadcast). La formula è dunque: 2n - 2 Usando la notazione decimale classless (es: w.x.y.z/m), è altresì possibile calcolare il numero massimo di indirizzi utili con la seguente formula: 2(32-m) - 2, del tutto equivalente a quella precedente. Infatti m indica il numero di bit 1 presenti nella subnet mask, quindi m+n=32 Quando il sistema operativo (più precisamente: il livello IP dello stack TCP/IP) riceve da un programma la richiesta di inviare un pacchetto IP ad un certo indirizzo IP destinatario, per prima cosa calcola l'AND logico fra la subnet mask e il proprio indirizzo IP, e lo confronta con l'AND logico tra la subnet mask e l'indirizzo IP di destinazione. Se il risultato delle operazioni è identico (cioè i bit che identificano l'id di rete, o net ID, sono identici, mentre variano solo i bit dell'id di host) allora invierà il pacchetto nella rete locale indirizzandolo con l'indirizzo di rete locale del PC destinatario (se non conosce tale indirizzo userà il protocollo ARP per trovarlo); se invece il risultato delle operazioni è differente significa che il computer destinatario non appartiene alla rete locale, e il pacchetto verrà trasmesso al gateway della rete locale affinché lo instradi verso la rete remota che contiene il computer destinatario. ?Fra i sistemisti è diventata pratica comune usare le subnet mask per identificare e dimensionare le reti IP, sezionandole in sottoreti per poterle meglio gestire ed amministrare.? Una volta determinato quanti bits dedicheremo alla subnet ID e quanti alla host ID, possiamo designare quale sarà la nostra subnet mask. Iniziamo specificando la default subnet mask in binario per ogni classe di rete. A partire dallo zero più a sinistra nella maschera possiamo cambiare tutti quei bits fino al primo 1 che incontriamo a partire da sinistra così come abbiamo deciso di dedicare alla subnet ID. Possiamo adesso esprimere la subnet mask in base decimale. Nella figura sottostante mostra come le subnet mask personalizzate possono essere determinate per ognuna delle opzioni di subnet per una rete di classe C, sia in binario che in decimale. 19 questa figura è chiaramente sbagliata... Fino a che ci sono 8 bits per definire l'host ID in una rete di classe C, ci sono sei modi differenti in cui una rete può essere mascherata. Ognuno corrisponde ad una diferente subnet personalizzata, quando viene creata cambiando i bits allocati per la subnet ID da 0 a 1 Così come nell'esempio in figura , considerando una rete in classe C ( ex 192.168.45.0 ) Ci sono 8 bits nella host ID di default, che permettono di avere sei differenti opzioni di mascheratura ( non è possibile utilizzare i bit 7 e 8 per definire la subnet ID ). Supponiamo di utilizzare 3 bits per definire la subnet ID e lasciare gli altri 5 per l' host ID. Per determinare la subnet mask , partiamo dalla subnet di default per una rete in classe C : 20 11111111 11111111 11111111 00000000 Cambiamo adesso i primi tre 0 che troviamo a partire da destra in 1 , per ottenre la subnet mask personalizzata: 11111111 11111111 11111111 11100000 in formato decimale viene tradotta così 255.255.255.224 1.4.5.3 Precisazioni L'indirizzo di subnet è l'indirizzo di una intera subnet (192.168.0.0/16) La subnet è una collezione di indirizzi ip (192.168.0.1, 192.168.0.2, ...) rappresentata da un indirizzo di subnet La subnet mask è un numero, che denota quale parte di un indirizzo ip identifica la (sotto)rete e quale l'host Considerato che stiamo parlando del livello ip, è più appropriato usare il termine router piuttosto che gateway 1.4.5.4 Un esempio pratico 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: 192.168.032.097 = 11000000.10101000.00100000.01100001 192.168.032.130 = 11000000.10101000.00100000.10000010 255.255.255.224 = 11111111.11111111.11111111.11100000 allora il livello IP calcolerà: 11000000.10101000.00100000.01100001 AND (192.168.032.097) 11111111.11111111.11111111.11100000 = (255.255.255.224) ------------------------------------11000000.10101000.00100000.01100000 (192.168.032.096) Ora ripetiamo l'operazione con l'IP di destinazione: 21 11000000.10101000.00100000.10000010 AND (192.168.032.130) 11111111.11111111.11111111.11100000 = (255.255.255.224) ------------------------------------11000000.10101000.00100000.10000000 (192.168.032.128) I risultati 192.168.32.96 e 192.168.32.128 indicano due sottoreti differenti, e quindi le macchine appartengono a sottoreti differenti. Notiamo che con una subnet mask 255.255.255.224 è possibile avere un range di 30 indirizzi utili per subnet, in quanto 2(32-27) - 2 = 25 - 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: 11000000.10101000.00100000.01100100 AND (192.168.032.100) 11111111.11111111.11111111.11100000 = (255.255.255.224) ------------------------------------11000000.10101000.00100000.01100000 (192.168.032.096) ESEMPIO: come trovare la subnet mask della subnet 61.161.16.224/27 27 rappresenta il numero di bit 1 più significativi della subnet mask 32-27 = 5 rappresenta il numero di bit 0 meno significativi della subnet mask quindi: 11111111.11111111.11111111.11100000 = 255.255.255.224 Si noti che la subnet mask è un numero, mentre la subnet rappresenta un insieme di indirizzi IP. È quindi possibile, e del tutto normale, che subnet differenti (es 192.168.0.0/16, 132.144.0.0/16) abbiano la stessa subnet mask (in questo caso: 255.255.0.0) 1.4.5.5 Subnet mask Gli ID di rete e gli ID host all'interno di un indirizzo IP vengono differenziati utilizzando una subnet mask. Ogni subnet mask è un numero a 32 bit che utilizza gruppi consecutivi di bit con valore 1 per identificare le porzioni dell'ID di rete e con valore 0 per identificare le porzioni dell'ID host di un indirizzo IP. 22 Ad esempio, la subnet mask normalmente utilizzata con l'indirizzo IP 131.107.16.200 è il seguente numero binario a 32 bit: 11111111 11111111 00000000 00000000 Il numero di questa subnet mask è costituito da sedici bit 1 seguiti da sedici bit 0, ad indicare che le sezioni dell'ID di rete e dell'ID host di questo indirizzo IP hanno entrambe una lunghezza di 16 bit. In genere questa subnet mask viene visualizzata in formato decimale separato da punti, ovvero 255.255.0.0. La tabella che segue mostra le subnet mask per le varie classi di indirizzi Internet. Classe di indirizzo Bit per subnet mask Subnet mask Classe A 11111111 00000000 00000000 00000000 255.0.0.0 Classe B 11111111 11111111 00000000 00000000 255.255.0.0 Classe C 11111111 11111111 11111111 00000000 255.255.255.0 In genere i valori predefiniti per la subnet mask (come mostrato nella tabella precedente) sono validi per la maggior parte delle reti che non presentano requisiti speciali e in cui ogni segmento di rete IP corrisponde a una singola rete fisica. In alcuni casi è possibile utilizzare subnet mask personalizzate per implementare il subnetting IP. Il subnetting IP consente di suddividere la porzione dell'ID host predefinito di un indirizzo IP per specificare le subnet, che costituiscono suddivisioni dell'ID di rete originale basato sulla classe. Con la personalizzazione della lunghezza della subnet mask è possibile ridurre il numero di bit utilizzati per l'ID host effettivo. Per ulteriori informazioni sull'utilizzo di una subnet mask personalizzata per la creazione di subnet nella rete, vedere Resource Kit. 1.4.6 Network address translation Nel campo delle reti telematiche, il network address translation o NAT, ovvero traduzione degli indirizzi di rete, conosciuto anche come network masquerading, native address translation, è una tecnica che consiste nel modificare gli indirizzi IP dei pacchetti in transito su un sistema che agisce da router. Sono molto note anche alcune tipologie specifiche di NAT, come l'IP masquerading e il port forwarding. 23 1.4.6.1 Tipi di NAT Il NAT è spesso implementato dai router e dai firewall. Si può distinguere tra source NAT (SNAT) e destination NAT (DNAT), a seconda che venga modificato l'indirizzo sorgente o l'indirizzo destinazione del pacchetto che inizia una nuova connessione. I pacchetti che viaggiano in senso opposto verranno modificati in modo corrispondente, in modo da dare ad almeno uno dei due computer che stanno comunicando l'illusione di parlare con un indirizzo IP diverso da quello effettivamente utilizzato dalla controparte. Per implementare il NAT, un router ha quindi bisogno di effettuare il tracciamento delle connessioni, ovvero di tenere traccia di tutte le connessioni che lo attraversano. Per "connessione" in questo contesto si intende un flusso bidirezionale di pacchetti tra due host, identificati da particolari caratteristiche a livelli superiori a quello di rete (IP): 1.5 nel caso di TCP è una connessione TCP in senso proprio, caratterizzata da una coppia di porte nel caso di UDP, per quanto UDP sia un protocollo di trasporto senza connessione, viene considerata connessione uno scambio di pacchetti UDP tra due host che usi la stessa coppia di numeri di porta. altri protocolli vengono gestiti in modo analogo, usando caratteristiche del pacchetto a livelli superiori ad IP per identificare i pacchetti che appartengono ad una stessa connessione. Livello 4: Trasporto Questo livello, come ogni altro livello, comunica con l'entità di pari livello (peer). In questo layer si studiano fondamentalmente due protocolli, il TCP (connection-oriented, end to end) e UDP (connectionless). Provvede all'affidabilità, al trasporto effettivo dei dati da una macchina sorgente a quella di destinazione. I livelli sottostanti sono completamente trasparenti. È compito del Livello di rete nascondere al Livello Transport la quantità delle reti attraversate, le diversità delle reti (Ethernet, Token Ring, ecc.) e la topologia. Poiché l'utente non ha controllo sul subnet (router e linee di comunicazione), con questo livello si migliora la qualità del servizio. • Entità trasporto: hardware o software che permette al Transport Layer di operare. Come software, può situarsi nel kernel, in un processo utente separato, in una libreria di applicazioni di rete. Se una 24 connessione è stata terminata inaspettatamente durante una trasmissione dati, l'entità trasporto può ristabilire una nuova connessione di rete con quella remota, richiedendo quali dati sono arrivati e quali no. Le primitive del Livello Trasporto sono indipendenti da quelle del Livello di rete. Se questi due layer avessero le stesse primitive e le reti fossero prive di errore, il Livello Trasporto potrebbe anche non esserci; tale livello ha la funzione di isolare i livelli più alti (definiti come transport service user) dalle imperfezioni di sottorete (livelli più bassi - transport service provider). Questo livello si colloca in una posizione chiave perché forma lo strato di confine tra il fornitore e l'utente. A livello TCP per individuare eventuali errori nei segmenti ricevuti è sufficiente controllare nell'header del TCP il campo checksum. L'algoritmi di checksum consiste nel sommare tutti i dati in half word (16 bit) e quindi calcolare il complemento a 1 della somma. Se il risultato è diverso dal checksum riportato dal TCP il pacchetto verrà scartato. Parametri per la qualità di servizio nel Transport Layer : connection estabilishment delay – tempo trascorso tra la richiesta e la conferma della connessione per l'utente del servizio di trasporto. connection estabilishment failure probability – indica la possibilità di non connessione con il massimo ritardo del tempo di connessione (dovuto p.e. alla congestione di rete). Di seguito vengono riportati i servizi che vengono, in genere, offerti dal livello di trasporto; è bene ricordare che nessuno di tali servizi è obbligatorio. Di conseguenza, per ciascuna applicazione è possibile scegliere il protocollo più adatto allo scopo. Servizio orientato alla connessione. In genere il livello rete non stabilisce una connessione persistente verso l'host di destinazione. Il livello di trasporto si incarica, quindi, di realizzare una connessione persistente che viene poi chiusa quando non è più necessaria. Corretto ordine di consegna. Poiché i pacchetti possono seguire percorsi diversi all'interno della rete, non c'è alcuna garanzia che i dati vengano recapitati nello stesso ordine in cui sono stati inviati. Il livello di trasporto verifica che i pacchetti vengano riordinati nella giusta sequenza in ricezione prima di passarli al livello superiore. Trasferimento affidabile. Il protocollo si occupa di garantire che tutti i dati inviati vengano ricevuti; nel caso il servizio di rete utilizzato perda pacchetti, il protocollo di trasporto si occupa di ritrasmetterli. Controllo di flusso. Se gli host coinvolti nella comunicazione hanno prestazioni molto differenti può capitare che un pc più veloce "inondi" di dati uno più lento. Mediante il controllo di flusso, un host in "difficoltà" può chiedere di abbassare il tasso di trasmissione in modo da poter gestire le informazioni in ingresso. Controllo di Congestione: il protocollo riconosce uno stato di congestione della rete, e adatta di conseguenza la velocità di trasmissione. Orientamento al Byte. Invece che gestire i dati in base ai pacchetti, viene fornita la possibilità di vedere la comunicazione come uno stream di byte, in modo da semplificarne l'utilizzo. Multiplazione. Il protocollo permette di stabilire diverse connessioni contemporanee tra gli stessi due host, tipicamente utilizzando l'astrazione delle porte. Nell'uso comune, diversi servizi utilizzano porte diverse. 25 Nello stack protocollare Internet, i protocolli di trasporto più utilizzati sono TCP e UDP. TCP è il più complicato fra i due e fornisce un servizio end-to-end orientato alla connessione e al byte, con verifica del corretto ordine di consegna, controllo di errore e di flusso. Il nome è un acronimo per Transmission Control Protocol. UDP, invece, è un protocollo più snello e fornisce un servizio a datagrammi, senza connessione, con un meccanismo di riduzione degli errori e con porte multiple. Il nome è un acronimo per User Datagram Protocol. 1.6 Livello 5: Sessione Il livello di sessione offre i servizi che consentono ad utenti operanti su macchine differenti di colloquiare tra loro attraverso la rete di comunicazione. Si trova al quinto livello della scala gerarchica del Modello ISO/OSI. In particolare, in questo livello vengono definite le regole per aprire e chiudere una connessione logica (Protocolli di connessione) e quelli necessari per il trasferimento dei dati (Protocolli di comunicazione). In pratica, quando lo strato superiore richiede l'apertura di un collegamento con un destinatario remoto, lo strato di sessione aprirà una connessione logica tra il nodo e la rete, utilizzando il corrispondente protocollo per definire la tipologia del collegamento (half o full-duplex). In seguito, durante la fase di colloquio, sarà ancora lo strato di sessione che, in base al protocollo di comunicazione, gestirà il controllo del dialogo in modo che la trasmissione sia cadenzata da punti di sincronizzazione intermedi, da ciascun dei quali sia possibile far nuovamente partire la fase di trasferimento dei dati, in caso di errore. 1.7 Livello 6: Presentazione Il Livello di presentazione è il sesto livello del modello ISO/OSI. Ha come obiettivo quello di trasformare i dati forniti dal Livello applicazioni in un formato standard e offrire servizi di comunicazione comuni, quali la crittografia, la compressione del testo e la riformattazione. Il livello di presentazione consente la gestione della sintassi e della semantica delle informazioni trasmesse, diversamente dagli altri livelli che gestiscono una sequenza di bit. Sono previste tre diverse tipologie di sintassi: astratta (definizione formale dei dati che gli applicativi si scambiano) concreta locale (come i dati sono rappresentati localmente) di trasferimento (come i dati sono codificati durante il trasferimento) 26 1.8 Livello 7: Applicazione Il livello applicazioni è il settimo ed ultimo livello del modello OSI. La sua funzione è quella di interfacciare e fornire servizi per i processi delle applicazioni; inoltra anche le richieste al livello di presentazione. Un programma applicativo interagisce con uno dei protocolli di livello trasporto per ricevere dati o inviarli passandoli nella forma richiesta. Tra i servizi più comuni offerti dal livello applicazioni ci sono le conversioni semantiche tra processi applicativi associati. Nota: esempi di servizi usuali sono i file virtuali ed il virtual terminal. Esempi 1.8.1 DNS HTTP SMTP SNMP FTP Network Time Protocol (NTP) Telnet Secure shell (SSH) IRC Lightweight Directory Access Protocol (LDAP) XMPP FTAM Advanced Program to Program Communications (APPC) X.400 X.500 AFP SIP ITMS AIM Domain Name System Il DNS è un servizio di directory utilizzato per la risoluzione dei nomi dei server da indirizzi logici e testuali (URL) in indirizzi IP. Questa funzione è essenziale per l'usabilità di Internet, visto che gli esseri umani hanno più facilità a ricordare nomi testuali, mentre i dispositivi di instradamento (interfacce di rete e router di livello 2 e superiore) lavorano su indirizzi binari. Permette inoltre ad una qualsiasi entità di cambiare o riassegnare il proprio indirizzo IP, senza dover notificare tale cambiamento a nessuno, tranne che al proprio server DNS di riferimento. 27 Un'altra delle peculiarità del DNS è quella di consentire, ad esempio ad un sito web, di essere ospitato su più server (ognuno con il proprio indirizzo IP), con una conseguente divisione del carico di lavoro. 1.8.2 Indirizzamento IP statico e dinamico Gli indirizzi IP possono essere assegnati in maniera permanente (per esempio un server che si trova sempre allo stesso indirizzo) oppure in maniera temporanea, da un intervallo di indirizzi disponibili. 1.8.3 Indirizzi dinamici Gli indirizzi dinamici vengono utilizzati per identificare dispositivi non permanenti in una LAN. Un server DHCP presente nella LAN assegna dinamicamente e automaticamente l'indirizzo scegliendolo casualmente da un range preimpostato. Si può scegliere l'intervallo di indirizzi a seconda del numero delle utenze della rete impostando la netmask, ossia dicendo al server DHCP quanti bit dell'indirizzo sono assegnabili dinamicamente a ogni singolo client che fa accesso. Per esempio, se la netmask ha valore 255.255.255.0 (dove ogni blocco separato da puntini denota un gruppo di 8 bit) solo gli ultimi 8 bit sono assegnabili agli host. Gli Internet Service Provider (ISP), per esempio, utilizzano un numero di indirizzi assegnabili ristretto per una vasta clientela facendo leva sul concetto che non tutti i client saranno connessi nello stesso momento. Questo sistema viene utilizzato soprattutto per gli accessi dial-up, Wi-fi o in qualsiasi altro accesso temporaneo permettendo, per esempio a un portatile, di connettersi a un'ampia varietà di servizi senza la necessità di dover conoscere i dettagli di indirizzamento di ogni rete. 1.8.4 Indirizzi Gli indirizzi statici vengono utilizzati per identificare dispositivi semi-permanenti con indirizzo IP permanente. I Server utilizzano tipicamente questo metodo di indirizzamento. L'indirizzo statico può essere configurato direttamente sul dispositivo, oppure come parte di una configurazione DHCP che associa all'Indirizzo MAC il corrispondente indirizzo IP statico. Versioni Oggigiorno sono presenti due tipi di indirizzo IP che si basano dai protocolli IPv4 e IPv6. La versione attualmente in uso è la v4 poiché la v6 presenta non indifferenti problemi di attuazione IPv4 L'indirizzo IPv4 è costituito da 32 bit (4 byte). Viene scritto con 4 numeri decimali che rappresentano 1 byte ciascuno (quindi ogni numero varia tra 0 e 255) separati dal simbolo "punto". Un esempio di indirizzo IPv4 è 195.24.65.215. IPv6 L'indirizzo IPv6 è costituito da 128 bit (16 byte), viene descritto da 8 gruppi di 4 numeri esadecimali che rappresentano 2 byte ciascuno (quindi ogni numero varia tra 0 e 65535) separati dal simbolo "due punti". Un esempio di indirizzo IPv6 è 2001:0DB8:0000:0000:0000:0000:0000:0001, che può essere abbreviato in 2001:DB8::1 (i due punti doppi stanno a sostituire la parte 28 dell'indirizzo che è composta di soli zeri consecutivi. Si può usare una sola volta, per cui se un indirizzo ha due parti composte di zeri la più breve andrà scritta per esteso). I dispositivi connessi ad una rete IPv6 ottengono un indirizzi di tipo unicast globale vale a dire che i primi 48 bit del suo indirizzo sono assegnati alla rete a cui esso si connette, i successivi 16 bit identificano le varie sottoreti a cui l'host è connesso. Gli ultimi 64 bit sono ottenuti dall'indirizzo MAC dell'interfaccia fisica. Per una descrizione più dettagliata consultare IPv6 Formato dell'indirizzo IPv6 La raccolta dei dati Attraverso gli indirizzi IP è possibile arrivare alle generalità degli utenti, sia pure con le incertezze date dai limiti di una non completa corrispondenza biunivoca. Un soggetto che riteneva violato il proprio diritto d'autore aveva inviato diffide ai titolari degli IP. Il tribunale di Roma ha ritenuto che tale prassi violava la tutela della privacy che è norma di rango superiore. 29 2 Comandi 2.1 ipconfig Il comando ipconfig permette di conoscere il proprio indirizzo IP, quello del SUBNET MASK e del GATEWAY. 2.2 ping Il Ping è un programma disponibile sui principali sistemi operativi che misura il tempo, espresso in millisecondi, impiegato da uno o più pacchetti ICMP a raggiungere un altro computer o server in rete (sia essa Internet o LAN) ed a ritornare indietro all'origine. È prettamente utilizzato per verificare la presenza e la raggiungibilità di un altro computer connesso in rete e per misurare le latenze di trasmissione di rete. 2.3 tracert Si definisce tracert un'applicazione, scritta in qualunque linguaggio, che si occupa di ricavare il percorso seguito dai pacchetti sulle reti informatiche, ovvero l'indirizzo IP di ogni router attraversato per raggiungere il destinatario. 30