.. meta:: :language: it :description language=it: Networking Fundamentals: protocolli e comunicazione nelle reti :description language=en: Networking Fundamentals: Network Protocols and Communications :keywords: Networking Fundamentals, Network Protocols and Communications :author: Luciano De Falco Alfano 3 Protocolli e Comunicazione nelle reti ========================================= .. contents:: :local: La connessione tra persone dipende sempre più dalla rete, in cui vengono continuamente sviluppati nuovi servizi. L'industria delle comunicazoni si è orientata ad evitare lo sviluppo di sistemi separati per ogni servizio. Ha progettato un framework di sviluppo che permette l'uso della piattaforma di comunicazione corrente per la creazione di nuovi servizi e la loro evoluzione tecnologica. In questo contesto sono fondamentali i modelli che descrivono le regole della rete e le sue funzioni. Questi modelli sono stati oggetti di una attività di standardizzazione. 3.1 Regole per la comunicazione ------------------------------------ 3.1.1 Le regole ^^^^^^^^^^^^^^^^^^ **Fondamenti di comunicazione**. Il concetto di rete ha un vasto range di tipologie: dall'insieme dei device connessi ad Internet a due singoli computer connessi direttamente l'uno con l'altro. Attributi di una rete: dimensione, forma e funzione. Ma il solo collegamento fisico tra device non è sufficiente per instaurare una comunicazione: è necessario sapere *come* comunicare. Nel caso delle persone, i diversi tipi di comunicazione hanno tre aspetti in comune: * mittente; * destinatario; * canale di comunicazione. Dopo di che la comunicazione inizia con un messaggio inviato da mittente a destinatario secondo una serie di regole dette protocolli. I protocolli *dipendono dal metodo di comunicazione utilizzato*. Ad esempio, nel caso di due persone che comunicano direttamente e in presenza: devono accordarsi se comunicare in voce, e in questo caso quale linguaggio utilizzare. Dopo di che, la struttura delle frasi deve essere adeguata (grammatica). Ognuno di questi aspetti coinvolge un protocollo di comunicazione. Questi concetti si applicano anche alla comunicazione tra computer. **Stabilire le regole**. *Prima* di comunicare, gli individui devono convenire quali regole (*protocolli*) utilizzare per governare la conversazione. I protocolli devono stabilire i seguenti aspetti: * identificare mittente e destinatario; * un linguaggio comune e relativa grammatica; * velocità e tempi di consegna dei messaggi; * segnali di conferma. Questo avviene anche tra device, che in più definiscono nel dettaglio come viene trasmesso in rete un messaggio, concordando sui seguenti aspetti: * codifica del messaggio; * formattazione e incapsulamento del messaggio; * opzioni di consegna del messaggio; * temporizzazione del messaggio; * grandezza del messaggio. **Codifica del messaggio** (*encoding*). È una delle prime attività necessarie per inviare un messaggio. Consiste nel trasformare l'informazione in una forma che sia accettabile per la trasmissione. La decodifica è il processo inverso: dalla forma trasmissibile all'interpretazione dell'informazione. As esempio una persona che pianifica un viaggio, trasforma il suo pensiero tramite il linguaggio, e usa la voce per comunicare tramite una serie di suoni e inflessioni. L'ascoltatore decodifica suoni e inflessioni per ricostruire le frasi del linguaggio, e quindi interpretarlo per identificare i concetti trasmessi dal mittente. Analogamente per la comunicazione tra computer. Il computer mittente codifica il messaggio in una serie di bit. Questi sono poi trasformati opportunamente a seconda del media di trasmissione: impulsi elettrici, o onde luminose o onde radio. Il ricevente decodifica (*decoding*) il segnale fisico in bit, e poi li interpreta per ricostruire l'informazione inviata. **Formattazione e incapsulamento del messaggio**. Quando si invia un messaggio da mittente a destinatario, è necessario usare un formato (o struttura) specifico. Questo formato dipende dal tipo di messaggio e dal canale utilizzato. Ad esempio scrivere lettere è una delle forme di comunicazione più comuni. Una lettera personale contiene: * l'identificazione del destinatario; * una formula di saluto; * il contenuto del messaggio; * una frase di commiato; * l'identificazione del mittente. Oltre al precedente formato, una lettera deve essere imbustata per la spedizione. La busta ha l'indirizzo del mittente e del destinatario, posizionati in opportuni punti della busta stessa. Se l'indirizzo non è corretto, o non è posto nel punto giusto della busta, la lettera non viene recapitata. Il processo di mettere il formato del messaggio (la lettera) dentro un altro formato del messaggio (la busta) è detto incapsulamento (*encapsulation*). Quando il destinatario riceve la lettera, rovescia il processo: la toglie dalla busta: è il de-incapsulamento (*de-encapsulation*). Un messaggio inviato tramite una rete di computer segue regole di formattazione molto precise. Analogamente ad una lettera, deve essere incapsulato in una busta, detta frame, per l'invio. La frame fornisce l'indirizzo del destinatario e quello dell'host mittente. Si noti che l'identificazione del mittente e del destinatario sono presenti sia nella frame che nel contenuto del messaggio. Questi due tipi diversi di indirizzi hanno scopi diversi, spiegati oltre. Il formato e il contenuto della frame sono definiti dal tipo di messaggio inviato e dal canale utilizzato per la trasmissione. Messaggi mal formattati non sono consegnati, o non vengono compresi dal destinatario. **Dimensione del messaggio**. Quando le persone comunicano, inviano frasi di dimensioni contenute per permettere al mittente di comprenderle e processarle. Analogamente, quando si invia un grande messaggio tra computer, è necessario suddividerlo in pezzi più piccoli. La dimensione di questi pezzi (frame) dipende dal mezzo di trasmissione, ed è stringente. Frame di dimensioni superiori o inferiori del dovuto non sono trasmesse. Il mittente suddividerà il messaggio in più frame, ognuna con gli indirizzi di mittente e destinatario. Il destinatario, alla ricezione delle diverse frame, ricomporrà il messaggio originale. **Temporizzazione del messaggio**. Le regole di temporizzazione riguardano i seguenti aspetti: * **metodo d'accesso** definisce chi ha il diritto di usare il canale di comunicazione, e come gestire eventuali collisioni se si accede contemporaneamente al canale di comunicazione; * **controllo del flusso** per definire la velocità di trasmissione del messaggio; * **timeout di risposta** per definire la quantità di tempo il mittente deve attendere la conferma della ricezione del messaggio, e come comportsrsi in caso di mancanza della conferma. **Opzioni di consegna del messaggio** (*message delivery options*) definiscono le modalità di consegna del messaggio: * ad un singolo destinatario (*unicast*); * ad un gruppo di destinatari (*multicast*); * a tutti i destinatari possibili (*broadcast*) [#]_. Inoltre il mittente potrebbe avere necessità di sapere se il messaggio è stato consegnato con successo. Oppure potrebbe non avere questa necessità (*unacknowledged delivery option*). Una nota riguardo il comportamento di uno switch per messaggi multicast. Senza una appropriata configurazione, uno switch non sa quali computer formano un grupp cui inviare il messaggio multicast. Per questo motivo in questi casi il multicast è inviato a tutte le posrte. Cisco prevede sugli switch la presenza del *Cisco Group Management Protocol* (CGMP). In questo caso lo switch apprende su quali interfacce sono presenti i membri di un messaggio multicast. 3.2 Protocolli e Standard di rete ---------------------------------------- 3.2.1 Protocolli ^^^^^^^^^^^^^^^^^ **Regole che governano la comunicazione**. Un gruppo di protocolli correlati necessari per effettuare la comunicazione è detto **suite** *di protocolli*. Le suite di protocolli sono implementate dagli hoste dai device di rete in hardware o in software, o in entrambi i modi. Uno dei modi per capire come interagiscono i protocolli di una suite, consiste nel visualizzarli come uno stack. In questo caso i protocolli sono visti come strati. Ogni servizio offerto da uno strato superiore, dipende dalle funzionalità definite dai protocolli presenti nello strato inferiore. I livelli più bassi dello stack si occupano di movimentare i dati nella rete e di fornire servizi ai livelli superiori. Questo sono invece orientati sulla composizione del contenuto che deve essere inviato. **Protocolli di rete**. Nel caso di persone, le regole della comunicazione sono in parte formali e in parte definite dalle usanze (informali). Nel caso di computer le regole di comunicazione (protocol suite) devono descrivere con precisione i requisiti e le interazioni. I protocolli di rete definiscono i formati e l'insieme delle regole per lo scambio dei messaggi tra device. Alcuni esempi sono HTTP, TCP. IP [#]_. I protocollo definiscono: * come sono formattati i messaggi (IP header | data); * come i device di rete condividono le informazioni riguardo i percorsi verso altre reti; * come e quando errori e messaggi di sistema vengono scambiati tra device; * l'avvio e la terminazione di sessioni per il trasferimento dati. **Interazioni tra protocolli** Un esempio di interazione tra diversi protocolli è la comunicazione tra un client e un server web. Sono cinvolti i seguenti: * **HTTP**, protocollo applicativo che definisce come interagiscono client e web server. Definisce i contenuti e la formattazione di richieste e risposte scambiate tra client e server. HTTP si appoggia ai protocolli che governano il trasporto dei messaggi tra client e server. * **TCP** è il protocoolo di trasporto. Gestisce le comunicazioni individuali. Segmenta i messaggi HTTP, controlla la loro dimensione e la velocità con cui sono scambiati tra client e server. * **IP** è responsabile dell'incaspulamento dei segmenti TCP in pacchetti, assegna gli indirizzi opportuni e li consegna all'host di destinazione. * **Ethernet** è il protocollo di accesso alla rete. Descrive principalmente due funzioni: la comunicazione su un data link, e la trasmissione fisica dei dati sul mezzo di comunicazione. È responsabile della trasformazione dei pacchetti IP nel formato compatibile con la trasmissione sul media. 3.2.2 Suite di protocolli ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **Suite di protocolli e Standard industriali**. Una suite di protocolli è un insieme di protocolli che lavorano insieme per fornire un completo servizio di comunicazione su rete. Può essere specificata da una organizzazione di standardizzazione o sviluppata da un fabbricante. Le suite di protocollo sono una sbarcata, ma qui ci interessano solo i protocolli relativi alla suite TCP/IP. La suite di protocolli TCP/IP è uno standard aperto. Cioè sono disponibili pubblicamente e ogni fabbricante è libero di implementarli nel proprio hardware e/o software. Un protocollo basato su standard viene raccomandato dall'industria e approvato da una organizzazione di standardizzazione. L'uso degli standard assicura che prodotti di fabbricanti diversi possano interoperare con successo. Se un protocollo non viene correttamente osservato da un fabbricante, i sui device possono avere problemi per comunicare con apparati di altri fabbricanti. Alcuni protocolli sono proprietari. In tal caso un fabbricante controlla la definizione e il funzionamento del protocollo. Esempi sono Apple Talk e Novell Netware. Può capitare che un fabbricane sviluppi iun protocollo proprietario, per sottoporlo successivamente alla procedura di standardizzazione. +---------------+-----------+-----------+-----------+---------------+ |layer name | TCP/IP | ISO | AppleTalk | Novell Netware| +===============+===========+===========+===========+===============+ |application | HTTP | ACSE | AFP | NDS | | | DNS | ROSE | | | | | DHCP | TRSE | | | | | FTP | SESE | | | +---------------+-----------+-----------+-----------+---------------+ |transport | TCP | TPO0 | ATP | SPX | | | UDP | TP1 | AEP | | | | | TP2 | NBP | | | | | TP3 | RTMP | | | | | TP4 | | | +---------------+-----------+-----------+-----------+---------------+ |internet | IPv4 | CONP/CMNS | AARP | IPX | | | IPv6 | | | | | | ICMPv4 | CLNP/CLNS | | | | | ICMPv6 | | | | +---------------+-----------+-----------+-----------+---------------+ |network access | Ethernet PPP Frame relay ATM WLAN | +---------------+---------------------------------------------------+ **Sviluppo del TCP/IP**. Nel 1969 ARPANET realizzò la prima rete packet switching, che collegava 4 diversi mainframe. Dopo di che: * 1970 operativa *ALOHAnet* la prima rete radio (University of Hawaii); * 1972 specifiche Telnet; primo programma per la gestione delle email; * 1981 formalizzazione del TCP/IP; * 1982 sviluppo di EGP per scambio informazioni di rete tra gateway; * 1984 DNS; * 1985 FTP; * 1986 Cisco primo AGS router; * 1988 IRC; * 1991 WWW by Tim Berners-Lee e Robert Cailliau; * 1993 Mosaic web browser; * 1996 specifiche IPv6; * 2011 primo test diffuso in Internet di IPv6. **TCP/IP protocol suite** Organizzata in layer, contiene vari protocolli: * layer applicativo * name system: DNS * host config: BOOTP, DHCP * email: SMTP, POP, IMAP; * File transfer: FTP, TFTP; * web: HTTP; * transport layer * UDP * TCP * Internet layer * IP, NAT [#]_; * IP support: ICMP [#]_; * routing protocols: OSPF [#]_, EIGRP [#]_; * Network access layer * ARP * PPP [#]_; * Ethernet * interface drivers. Il **processo di comunicazione TCP/IP** si compone di due fasi: * incapsulamento, durante la preparazione dei dati da inviare; i dati (*user data*) sono via via incapsulati come segue: * user data; ad esempio una pagina HTML che il web server deve inviare al client; in testa a questi dati il protocollo HTTP aggiunge un proprio header, con la versione di HTTP, e lo status code; * tcp header+user data => TCP segment; l'applicazione HTTP chiede il supporto al layer di trasporto TCP, che segmenta i dati; * IP header+TCP segment => IP packet; TCP chiede il supporto di IP, che aggiunge il proprio header con gli iindirizzi IP del mittente e del destinatario; * Ethernet header+IP packet+ Ethernet trail => Ethernet Frame; IP a sua volta chaiama il layer di data link, che applica il proprio header e trail, formando la data link frame; questa è passata al livello fisico che aggiunge il proprio header e trail ed è inviata tramite il canale al router della rete del server; il router elimina il data link frame, analizza il pacchetto IP, decide qual'è il router successivo, crea il relativo nuovo data link frame, ed invia; questa fase è ripetuta da router a router, sino all'arrivo nel router della sottorete del client; * de-incapsulamento, avviene alla ricezione della Ethernet Frame nela sottorete del destinatario, e consiste nel rovesciare il processo precedente, fino ad arrivare all'estrazione degli *user data*. 3.2.3 Organizzazioni per la standardizzazione ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **Standard aperti** (*Open standards*) permettono la interoperabilità e incentivano innovazione e competizione. Ostacolano i monopoli e vantaggi sleali. Se un PC Apple dotato di sistema operativo OS X è in grado di scaricare una pagina web da un server Linux, è perché entrambi utilizzano protocolli standard aperti, come quelli della suite TCP/IP. Le organizzazioni per gli standard sono importanti per mantenere una Internet aperta con specifiche liberamente accessibili e protocolli implementabili da qualunque fabbricante. Una organizzazione per gli standard può progettare un insieme di regole in completa autonomia, o selezionare un protocollo proprietario come base per uno standard. Queste organizzazioni sono solitamente neutrali rispetto i fabbricanti e sono organizzazioni non-profit. Alcuni esempi sono: IEEE, IANA, IETF, ICANN, ITU, TIA. **Internet standards**. Le varie organizzazioni hanno differenti responsabilità. Abbiamo: * **ISOC** (*Internet Society*) promuove lo sviluppo aperto e l'evoluzione dell'uso di Internet in tutto il mondo; * **IAB** (*Internet Architecture Board*) responsabile della gestione e sviluppo degli standard Internet; * **IETF** (*Internet Engineering Task Force*) sviluppa, e manutiene le tecnologie Internet e TCP/IP, incluso lo sviluppo e la documentzione di nuovi protocolli e l'aggiornamento di quelli esistenti; produce i documenti RFC (*Request for Comments*); * **IRTF** (*Internet Research Task Force*) responsabile della ricerca a lungo termine per Internet e i protocolli TCP/IP; ad esempio ASRG (*Anti-spam research group), CFRG (*Crypto forum research group*) e P2PRG (*Peer-to-peer research group*); * **ICANN** (*Internet Corporation for Assigned Names and Numbers*) coordina la allocazione degli indirizzi IP e dialtre info usate nel TCP/IP; * **IANA** (*Internet Assigned Numbers Authority*) è il braccio esecutivo di ICANN, soprassiede e gestisce l'allocazione degli indirizzi IP e degli identificatori di protocollo come definiti da ICANN. **Organizzazioni per gli standard elettronici e di comunicazione**. Abbiamo: * **IEEE** (*Institute of Electrical and Electronic Engineers*) promuove lo sviluppo e gli standard nelle tecnologie elettriche ed elettroniche in diversi ambiti industriali: produzione elettrica, sanità, telecomunicazioni, reti. Tra i diversi standard che ha promosso: * 802.1 * 802. 3 Ethernet; * 802.11 Wireless LAN; * 802.15 Wireless Personal Area Network (WPAN) * 802.16 Broadband Wireless Access; * 802.18 Radio regulation * 802.19 Wireless Coexistence * 802.21 Media independent handhover services * 802.22 Wireless regional area networks * 802.24 Smart Grid * **EIA** (*Electronic Industries Alliance*) standard per cablaggi elettrici, connettori, rack 19 pollici; * **TIA** (*Telecommunications industry association*) standards in varie aree per le comunicazioni: apparati radio, torri cellulari, VoIP device, comunicazioni satellitari, ... * **ITU-T** (*International Telecommunications Union-Telecommunication Standardization Sector*). Storica. Si occupa di standard per video compressione, IPTV, comunicazioni a banda larga, come la DSL, ... 3.2.4 Modelli di riferimento ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **Benefici dell'uso di un modello a strati** sono i seguenti: * facilitare la progettazione di protocolli; * alimentare la competizione; * evitare che l'evoluzione tecnologia in uno strato impatti tutti gli altri strati; * fornire un linguaggio comune per descrivere funzioni e capacità. I modelli più usati quando si discute di funzionalità di rete sono l'OSI (*Open Systems Interconnection*) e il TCP/IP. In particolare il TCP/P è un *modello di protocollo* (*protocol model*). In quanto descrive le funzioni presenti in ogni strato. Usato anche come *reference model*. L'OSI model è un *reference model*, ovvero definisce cosa deve essere fatto in ogni stato, ma non definisce come deve essere fatto. Si noti che l'OSI model è un protocol model se si considera la OSI protocol suite. **Il modello di riferimento OSI** definisce un lungo elenco di funzioni e servizi che ogni strato può avere. Inoltre descrive ogni interazione che uno strato può avere con il suo livello inferiore e quello superiore. Gli strati previsti sono [#]_: 7. **application** riguarda i protocolli usati per le comunicazioni tra processi; 6. **presentation** fornisce la rappresntazione dei tadi trasferiti tra gli strati; 5. **session** utilizzato dal presentation per organizzare il dialogo e gestire lo scambio dati; 4. **transport** definisce i servizi per segmentare, trasferire e riassembllare i dati di comunicazioni individuali tra end device; 3. **network** fornisce i servizi per lo scambio dei pezzi di dati (segmenti) tra end device identificati tramite indirizzi; 2. **data link** definisce i metodi per scambiare dati tra device collegati da tramite un mezzo di comunicazione condiviso; 1. **physical** descrive i mezzi meccanici, elettrici, funzionali e procedurali per attivare, mantenere e disattivare connessioni fisiche per la trasmissione di bit tra device di rete. Il **modello del protocollo TCP/IP** è stato creato nei primi anni '70; a volte è detto modello Internet. Definisce 4 strati, come segue: 4. **application** presenta i dati all'utente, la loro codifica e il controllo del dialogo; 3. **transport** supporta la comunicazione tra device attraverso diverse reti; 2. **internet** determina il migliore percorso attraverso le reti; 1. **network access** controlla i device hardware e il media che formano la rete. **Comparazione ra modello OSI e TCP/IP**. I protocolii TCP/IPP possono essere descritti anche in riferimento al modello OSI. Questo suddivide ulteriormente il *network access layer* e lo *application layer*. Confrontanto gli strati OSi a sinistra rispetto quelli TCP/IP a destra: * application+presentation+session vs application; * transport vs tansport; * network vs internet; * data link+physical vs network access. Al network access layer il TCP/IP non definisce che protocolli usare quando si trasmette sul mezzo fisico, si limita a descrivere i passaggi necessari dal layer internet ai protocolli fisici della rete. Invece l'OSI 1 e 2 discute le procedure per accedere il media e i mezzi fisici per inviare i dati sulla rete. Il livello OSI 3 è equivalente all'internet del TCP/IP. L'OSI 4 e il transport TCP/IP sono equivalenti. L'application TCP/IP include diversi protocolli che forniscono funzionalità specifiche a varie applicazioni all'utente finale. L'OSI 5, 6 e 7 sono comunemente utilizzati dagli sviluppatori software di applicazioni di rete. Inoltre, siccome l'OSI separa gli strati 1 e 2, di solito viene utilizzata come riferimento quando si analizzano i protocolli per questi strati. 3.3 Trasferimento dati nella rete ----------------------------------- 3.3.1 Incapsulamento dei dati ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **Segmentazione dei messaggi**. Inviare qurandi quantità di dati su rete (audio, video, email con allegati pesanti, ...) senza frammentarli significa impedire l'uso della rete ad altri per il tempo necessario alla trasmissione. Inoltre, in caso di errore di trasmissione, sarebbe necessario inviare nuovamente l'intero messaggio. Suddividendo il messaggio in piccoli pezzi (processo di segmentazione) è possibile: * effettuare interleaving tra diverse trasmissioni (processo detto **multiplexing**); * aumentare l'efficienza delle comunicazioni, ritrasmettendo solo pezzi del messaggio in caso di errori o congestioni di rete. L'uso della segmentazione e del multiplexing introduce un livello di maggiore complessità. Infatti il processo di incapsulamento del messaggio viene moltiplicato per il numero di segmenti in cui è suddiviso. **Protocol Data Units** Quando i dati dell'applicazione sono passati da uno strato all'altro dello stack del protocollo, per ogni livello vengono aggiunti dati che lo riguardano. Questo processo è detto *incapsulamento*. La forma che un dato prende ad ogni livello è detta **PDU** (*protocol data unit*). Per rispecchiare le specificità di ogni strato si usano nomi diversi per le PDU, come segue: +--------------+-----------+-------------------------------------------------------------------------+-------------------------------------------+ | layer | pdu name | composed by | note | +==============+===========+=========================================================================+===========================================+ | application | data | user data | | +--------------+-----------+-------------------------------------------------------------------------+-------------------------------------------+ | transport | segment | transport header + data | ripetuto più volte: una per ogni segmento | +--------------+-----------+-------------------------------------------------------------------------+-------------------------------------------+ | network | packet | network header + transport header + data | | +--------------+-----------+-------------------------------------------------------------------------+-------------------------------------------+ | data link | frame | frame header + network header + transport header + data + frame trailer | dipende dal media | +--------------+-----------+-------------------------------------------------------------------------+-------------------------------------------+ | physical | bits | | PDU per il trasporto fisico | +--------------+-----------+-------------------------------------------------------------------------+-------------------------------------------+ **Esempio di incapsulamento**. Quando si invia un messaggio sulla rete, il processo di incapsulamentofunziona top down. Ad ogni stato, ciò che proviene da uno strato superiore è considerata informazione da incapsulare. Come esempio si riveda il processo illustrato nel caso di invio dei dati da un web server al client. **De-incapsulamento** è il processo eseguito nell'host destinatario. Rimuove uno o più header dei protocolli risalendo dal basso verso l'alto lo stack della comunicazione. 3.3.2 Accesso ai dati ^^^^^^^^^^^^^^^^^^^^^^^ **Indirizzi di rete**. Gli strati di *network* e di *data link* hanno la responsabilità della consegna del dato dal mittente al destinatario. Abbiamo la seguente struttura generale: +---------------------+-----------------+------------------+-----------------+-------------------+ |physical | data link | network | transport | upper layers | +=====================+=================+==================+=================+===================+ |timing and | destination and | destination and | destination and| encoded | |synchronization bits | source physical | source logical | source process | application data | | | addresses | network addresses| numbers (ports)| | +---------------------+-----------------+------------------+-----------------+-------------------+ I protocolli in entrambi gli strati contengono gli indirizzi del mittente e del destinatario, ma sono indirizzi con scopi diversi. * gli *indirizzi nel network layer* riguardano la consegna del *pacchetto IP* sia che i device siano nella stessa rete, che in reti diverse; * gli *indirizzi nel data link layer* sono responsabili della consegna della frame di data link da una NIC sorgente a una NIC destinazione nella stessa rete. Un indirizzo IP quindi è un indirizzo logico usato per consegnare il *pacchetto IP* dalla sorgente d'origine alla destinazione finale. Il pacchetto IP contiene due indirizzi IP (in quest'ordine): * **source IP address** è l'indirzzo IP del device mittente; * **destination IP address** è l'indirzzo IP del device destinatario. I **data link addresses** fisici hanno un ruolo diverso. Il loro scopo è la consegna del *data link frame* dalla interfaccia di rete del mittente alla interfaccia di rete del destinatario *nell'ambito della stessa rete*. Se gli indirizzi IP del mittente e del destinatario appartengono a reti diverse, gli indirizzi del *data link* vengono modificati via via che la frame viaggia su reti diverse per raggiungere la sua destinazione. La *data link frame* è indispensabile per immettere il pacchetto IP nel media fisico. Quando il pacchetto IP attraversa un router per passare verso un'altra rete, il router elimina il *data link header* della rete d'origine, e lo sostituisce con un nuovo *data link header* che permette alla frame di viaggiare nella nuova rete. La frame che incapsula il pacchetto IP contiene due indirizzi fisici (in questo ordine [#]_): * il *destination data link address* che è l'indirizzo fisico della NIC che deve ricevere nella rete corrente la frame; * il *source data link address* che è l'indirizzo fisico della NIC che invia la frame nella rete corrente. Il *data link frame* contiene anche un *trailer* che verrà presentato in seguito. **Device sulla stessa rete**. Il *ruolo dell'indirizzo del network layer* (*indirizzo IP*) consiste nell'indicare la sorgente d'origine e la destinazioen finale. L'indirizzo IP è composto da due parti: * la **porzione della rete**, è posta a sinistra dell'indirizzo e identifica la rete cui l'indirizzo appartiene; tutti i device sulla stessa rete avranno lo stesso valore nella porzione della rete; * la *porzione host* occupa quanto lasciato libero dalla porzione della rete, e identifica uno specifice device nella rete; questo valore è unico per ogni device nella rete. La *porzione della rete* viene identificata tramite l'uso della *subnet mask*, che viene presentata in seguito. Esempio di indirizzi IP sono: 192.168.1.110 e 192.168.1.9. Se la porzione di rete è 192.168.1, osserviamo che questi due indirizzi appartengono alla stessa rete. Gli host hanno valori, rispettivamente, 110 e 9. Il *ruolo degli indirizzi del data link layer* è particolarmete evidente quando mittente e destinatario sono sulla stessa rete. In questo caso il *data link frame* viene inviato direttamente dal mittente al device destinatario. In una rete Ethernet l'indirizzo del data link layer è detto *Ethernet address*, o **MAC address** (*media access control*). I MAC address sono cablati fisicamente nelle NIC Ethernet. Il **source MAC address** è l'indirizzo fisico del device che invia il data link frame. Il **destination MAC address** è l'indirizzo fisico del device che riceve il data link frame. Un Ethernet MAC address tradizionale è formato da 12 cifre esadecimali: 6 byte, 48 bit. **Device su reti remote**. Quando sorgente e destinazione non sono nella stessa rete gli indirizzi IP apparterranno a reti diverse, fatto verificabile osservando le rispettive porzioni di rete. In questo caso il data link layer frame non può essere consegnata direttamente al destinatario, dovrà essere instradata da un router. Quindi la frame Ethernet dovrà essere inviata al router in questione (default gateway). Di conseguenza il destination data link layer address sarà quello del default gateway. È importante che il default gateway sia configurato negli host della rete locale, altrimenti non riusciranno ad inviare messaggi verso device esterni alla rete locale. ------------------ .. [#] In alcuni casi il broadcast si ottiene tramite un multiccast speciale. .. [#] IP si riferisce sia a IPv4 che a IPv6 .. [#] NAT: trasforma indirizzi IP di una rete privata in indirizzi IP di una rete pubblica. .. [#] ICMP: feedback dalla destinazione al mittente di errori nella consegna di pacchetti. .. [#] OSPF: protocollo per lo stato dei link di routing. Progettato con un approccio gerarchico, basato sulle aree. Protocollo standard aperto di routing. .. [#] EIGRP: protocollo di routing proprietario di Cisco. Usa una metrica composta basata su banda passante, ritardo e affidabilità. .. [#] PPP: incapsulamento per la trasmissione di pacchetti su link seriale. .. [#] Nell'OSI model la numerazione degli strati è importante. Spesso viene utilizzata invece del relativo nome. .. [#] Curiosamente, l'ordine di sorgente e destinazione sono invertiti nei due layer.