Come abbiamo visto parlando del livello di rete, il protocollo principale e' l' Internet Protocol (IP per gli amici). Ad ogni sistema terminale connesso alla Internet e' assegnato un IP unico che ci permette di individuare la posizione dell' ES all' interno della rete. Quando due macchine vogliono comunicare, utilizziamo le Socket: una socket e' formata da indirizzo IP di origine, porta di origine, IP di destinazione e porta di destinazione. Gli indirizzi IP, indicano solo le estremita' della rete senza pero' definire i collegamenti nella quale dovra' passare il datagramma. Quando un datagramma scende da livello di rete a quello di collegamento, viene incapsulato in un frame che contiene una intestazione con gli indirizzi di collegamento della sorgente e della destinazione del frame. L' indirizzo del Frame e' chiamato indirizzo MAC (aka Lan, o fisico o Ethernet) ed e' un indirizzo lungo 48 bit diviso in 6 gruppi di byte rappresentati solitamente in esadecimale ( a differenza di IP, che viene rappresentato comunemente in decimale). Ogni adattatore di rete ha un indirizzo MAC univoco. Se per esempio il nostro pc ha una porta ethernet e una antenna wireless, avranno entrambe un indirizzo MAC differente. A questo punto vi chiederete (io almeno me lo sono chiesto) come fanno i produttori a fare in modo che non ci siano due MAC uguali? La IEEE sovraintende la gestione degli indrizzi MAC. Quando un' azienda vuole produrre adattatori di rete, compra un blocco di indirizzi MAC. L' univocita' del MAC, consente un' ottima portabilita': cambiando LAN infatti, l' indirizzo restera' invariato a differenza dell' indirizzo IP che varia a seconda della (sotto)rete a cui il nodo e' collegato. Per comunicare quindi, a due dispositivi occore conoscere il reciproco indirizzo MAC. Come fare per riuscire a trovarlo? Address Resolution Protocol Ogni nodo IP (gli host, i router) ha una tabella ARP che contiene la corrispondenza tra indirizzo IP e MAC. Una tupla del tipo> Dove TimeToLive indica quando bisognerebbe eliminare una data voce nella tabella, tipicamente vale 20 minuti. ARP funziona cosi': A conosce l' indirizzo IP di B, che e' connesso alla sua stessa sottorete ovviamente, e vuole conoscere il suo indirizzo fisico. Per conoscerlo, invia una richiesta ARP in broadcast, quindi a tutti i componenti della rete sostanzialmente chiedendo "Chi ha questo indirizzo IP? Rispondete ad IndirizzoA". A rispondere, se e' presente ed attivo, sara' proprio B mentre tutti gli altri dispositivi ignoreranno la richiesta. Nella risposta, B specifica il suo MAC e lo invia in modalita' unicast ad A. Una cosa particolare di ARP e' il fatto che e' plug-and-play: non deve essere preconfigurato dall' amministratore di sistema in quanto la tabella ARP viene costruita dinamicamente ed automaticamente. I pacchetti ARP vengono incapsulati direttamente in un frame a livello di collegamento Ethernet Correva l' anno 1985 quando la IEEE Computer Society avvio il Progetto 802. Nato con l'obbiettivo di definire gli standard per le funzioni del livello fisico e du collegamento dei protocolli LAN: e fu cosi' che nacque lo standard IEEE 802. Gli standard delle LAN prodotti dal IEEE 802 sono: 802.1: Specifiche generali del progetto 802.2: Logical Link Control 802.3: CSMA/CD 802.4: Token Bus 802.5: Token Ring 802.6: DQDB (per le MAN) 802.11: Per le WLan. In tutto questo, la Ethernet detiene una posizione dominante nel mercato delle LAN cablate in quanto oltre ad essere economica, riesce a trovarsi sempre al passo coi tempi col tasso trasmissivo con rate che vanno da 10 Mbps a 10 Gbps. Vediamo quindi com'e' fatto un pacchetto di Ethernet Standard (10Mbps): - Intestazione del livelo fisico (8 byte): 7 byte hanno i bit impostati a 10101010utilizzati per sincronizzare ed attivare le NIC riceventi. 1 byte impostato a 1010101011, gli ultimi due bit (11) servono ad indicare che inizia l' header MAC. - Indirizzi (6 byte): Quando una NIC (Network Interface Card) riceve un pacchetto contentente l' indirizzo di destinazione o con l' indirizzo broadcast trasferisce il contenuto del campo dati del pacchetto al livello di rete mentre i pacchetti con altri pacchetti MAC vengono ignorati (in quanto non diretti a quel sistema terminale). - Tipo (2 byte): Consente a Ethernet di supportare vari protocolli di rete (multiplexing dei protocolli). - Dati (46 a 1500 byte): Contiene datagrammi IP se il datagramma e' inferiore alla dimensione minima (46 byte) il campo riempito con degli zeri fino a raggiungere quel valore. - Controllo RC(4 byte): Consente al NIC ricevente di rilevare la presenza di un errore nei bit del pacchetto. Ethernet e' senza connessione: non e' prevista nessuna forma di handshake prima dell' invio di un pacchetto. Inoltre, non e' affidabile: la NIC ricevente non invia ack di nessun tipo (anche se non passa il controllo CRC). Se viene implementato TCP a livello di trasporto, e' possibile rendersi conto di eventuali lacune o incompletezza di dati. Con l' intestazione di 18byte e il frame di 46 byte, la dimensione minima di un frame Ethernet e' 64 byte (dimensione necessaria per eseguire CSMA/CD come abbiamo visto l'altra volta). Con l' intestazione di 18 byte e il frame di 1500byte di dati, la dimensione massima di un frame Ethernet e' di 1518 byte. Tutte le stazioni che fanno parte di una Ethernet sono dotate di una NIC, e ad ogni Network Interface Card viene associato un indirizzo di rete e un indirizzo di collegamento. Gli indirizzi vengono trasmessi da sinistra verso destra byte dopo byte ma per ogni byte il bit meno significativo viene inviato per primo e quello piu' significativo per ultimo. Fasi Operative del protocollo CSMA/CD 1. Framing: La NIC riceve un datagramma di rete dal nodo cui e' collegato e prepara un pacchetto Ethernet. 2. CS e trasmissione: il canale e' libero? Trasmette il pacchetto. E' occupato? Resta in attesa finche' il canale non si libera. 3. Collision Detection (CD): Durante la trasmissione resta in ascolto di eventuali segnali da parte di altre NIC. Se non ne rileva, considera il pacchetto spedito. 4. Jamming: Ha rilevato collisioni? Interrompe la trasmissione e invia un pacchetto di disturbo (jam, lungo 48 bit) a tutte le altre NIC per avvisarle della collisione. 5. Backoff Esponenziale: Quando riscontra la k-esima collissione consecutiva, stabilisce il valore n tra {0,1....2^(m)-1} dove m e' il minimo fra k e 10. La NIC aspetta un tempo pari a N volte 512 bit e ritorna al passo 2. L' efficienza dell' Ethernet e' ottime, e tende al 100%. Negli anni 90, apparvero sul mercato altri tipi di LAN con rate superiore a 10 Mbps (FDDI). Ethernet Standard si e' evoluta in Fast Ethernet (a ben 100Mbps) mantenendo compatibilita' con la precedente versione: il sottolivello MAC e' infatti rimasto invariato (dimensione e formato del frame compresi). Se ti ricordi pero' il discorso su CSMA/CD, abbiamo detto che il suo funzionamento dipende dalla velocita' di trasmissione, dalla dimensione minima dalla lunghezza massima della rete. Per mantenere la dimensione minima del frame 512 bit, bisognerebbe modificare la lunghezza massima della rete: Se la trasmissione e' 10 volte piu' veloce, e il frame ancora 512 bit, allora le collisioni devono essere rilevate 10 volte piu' velocemente quindi la rete deve essere 10 volte piu' corta. Quindi possiamo scegliere: Abbandonare la topologia a stella usando un hub passivo con topologia a stella con dimensione massima della rete a 250 metri (e non 2500 come nella versione originale) Si usa uno switch di collegamento dotato di buffer per memorizzare i frame e connessione full duplex per ciascun host. Vediamo la soluzione due: essendo il mezzo trasmissivo privato per ciascun host, non c'e' piu' bisogno di CSMA/CD visto che gli host non sono piu' in competizione. Lo switch riceve un frame da un host, lo salva nel buffer, verifica l' indirizzo di destinazione e invia il frame attraverso l' interfaccia corrispondente. Il singolo mezzo condiviso e' stato modificato in molti mezzi punto-punto! Oltre a Fast Ethernet, esiste anche Gigabit Ethernet: una versione successiva di Etherneto con velocita' 1000Mbps. Anche questa usa la topologia a stella con switch, dove ovviamente non ci sono collissioni e la massima lunghezza del cavo dipende dall'attenuazione del segnale. Per ovviare anche alla attenuazione del segnale, usiamo gli Hub: un Hub e' un ripetitore multiporta ed e' un dispositivo che opera sui singoli bit: Opera a livello fisico all' arrivo di un bit, l'hub lo riproduce incrementandone l' energia e lo ritrasmette su tutte le sue interfaccie. Non implementa la rilevazione della portante ne' CSMA/CD. Ripete il bit entrante su tutte le interfacce uscenti anche se su qualcuna di queste c'e' un segnale. Trasmette in broadcast e quindi ogni NIC puo' sondare il canale per verificare se e' libero e rilevare una collisione mentre trasmette (CSMA/CD). SWITCH Lo switch e' un fighissimo dispositivo del livello di collegamento: piu' intelligente di un hub, svolge un ruolo attivo nella rete. Opera a livello di collegamento. Filtra e inoltra i pacchetti Ethernet, Esamina l' indirizzo di destinazione e lo invia all' interfaccia corrispondente alla sua destinazione in maniera del tutto trasparente: gli host sono inconsapevoli della presenza di switch. Gli host sono collegati con gli switch, questi bufferizzano i pacchetti inviati dagli host evitando cosi le collisioni. Ogni host e' collegato allo switch usando Ethernet, e piu host possono trasmettere simultaneamente senza che ci siano collisioni: cosa che non puo' fare invece un Hub. Inizialmente gli switch venivano configurati staticamente: ora c'e' un meccanismo dinamico di auto-apprendimento e quindi non solo non hanno bisogno di essere configurati, ma hanno una tabella dinamica che associa automaticamente indirizzi MAC alle interfaccie e li salva nella tabella di commutazione (Switch-table). Lo switch apprende quali nodi sono connessi a lui sulle varie interfaccie: quando riceve un pacchetto, lo switch impara l' indirizzo del mittente e registra la tupla (mittente;interfaccia; ttl) nella sua switch-table. Inoltre, gli switch possono essere interconnessi fra di loro: anche in quel caso, i vari switch autoapprendono la posizione di ogni indirizzo sulle varie interfaccie. Dopo questa descrizione sugli switch, vi sarete resi conto che assomigliano molto ai router: Entrambi sono dispositivi store-and-forward, i Router sono dispositivi a livello di rete mentre gli switch del livello di collegamento. I router mantengono le tabelle d' inoltro e implementano algoritmi d'instradamento, Gli switch mantengono tabelle di commutazione, implementano il filtraggio e algoritmi di autoapprendimento. Proprieta' degli switch: - Gli switch sono dispositivi plug-and-play: non richiedono intervento di utente o amministratore di rete. - Elimina le collisioni bufferizzando il frame, - Interconnettono link eterogenei, ovvero collegamenti che funzionano a diverse velocita' possono comunicare fra di loro. - Aumentano la sicurezz della rete e migliorano il network management: Bloccano i packet sniffer e forniscono informazioni su uso di banda, collisioni, tipi di traffico,etc. Lan Virtuali Supponiamo di avere uno switch che collega 3 LAN e 3 gruppi di lavoro.