webstat GSMWORLD.it

Introduzione alle reti di calcolatori

Protocolli di comunicazione

 


Protocolli: loro funzione e definizione

La connessione di calcolatori o terminali, qualunque sia l'architettura di collegamento, richiede la definizione del supporto fisico di trasmissione (linea privata, commutata, di tipo RS-232, etc.) e del tipo di protocollo utilizzato, in modo da avere un corretto controllo logico di linea. Non basta infatti sapere che l'interfaccia hardware di un terminale verso il mondo esterno è di tipo RS-232 per affermare che esso sia in grado di colloquiare, scambiandosi messaggi reciprocamente comprensibili, con il terminale corrispondente.

Per avere uno scambio corretto è necessario definire il formato dei messaggi stessi, la loro lunghezza, i caratteri di controllo, le procedure da seguire per recuperare gli errori di trasmissione e altro ancora. Tutti questi punti costituiscono un insieme di regole che permettono di effettuare lo scambio delle informazioni. Tale insieme è definito più brevemente come protocollo.

 

Interfaccia di linea e protocollo di linea

Quando si parla di interfaccia, ci si riferisce a quella che è la caratteristica elettrica del collegamento ed essa viene in genere specificata come interfaccia elettrica (ad esempio RS-232), mentre quando si parla di protocollo di linea ci si riferisce all'insieme delle regole che gestiscono gli aspetti logico e procedurali del collegamento, generalmente indipendenti dal tipo di interfaccia.

Se la compatibilità si limita a quest'ultima i segnali elettrici scambiati non causeranno danneggiamenti dell'hardware, verranno anche riconosciuti i caratteri trasmessi, ma agli stessi non potrà essere dato nessun significato concreto. Inoltre non sarà parimenti possibile separare i caratteri costituenti l'effettiva informazione dai caratteri di controllo che ne regolano l'interpretazione.

 

Famiglie di protocolli esistenti

L'evoluzione delle reti che si sono realizzate e la loro complessità sempre crescente, ha costretto a sviluppare continuamente nuovi protocolli in grado di gestire proficuamente le nuove strutture man mano che esse si delineavano.

Di famiglie e sottofamiglie di protocolli hanno finito con l'esisterne parecchie, rallentando così la realizzazione di reti in cui sono collegati calcolatori di case diverse. Questa situazione ha portato alla necessità di una standardizzazione nel campo specifico in modo da poter comunicare anche tramite dispositivi diversi, costruiti da industrie diverse.

Pur nella loro varietà, i protocolli oggi diffusi possono essere raggruppati in due grandi famiglie: quella dei protocolli di tipo "byte control protocol" (BCP) e quella di tipo "bit oriented protocol" (BOP). Caratteristica fondamentale della prima famiglia è che, nei protocolli che vi appartengono, il flusso dei dati da trasmettitore a ricevitore viene regolato mediante la formattazione del messaggio per mezzo di opportuni caratteri di controllo che fanno parte del tipo di codice (EBCDIC, ASCII, etc.) utilizzato per la trasmissione delle informazioni. Questi caratteri definiscono l'inizio e la fine del messaggio, l'inizio del campo indirizzo, e quant'altro.

I protocolli appartenenti alla seconda famiglia si sono sviluppati per supportare una trasmissione dati con un alto rendimento e sono tipicamente utilizzati in reti di notevoli dimensioni. L'unità minima fondamentale diventa ora il singolo bit e non più il carattere (byte). I messaggi vengono trasmessi con una struttura ben definita e strettamente limitata ad alcune precise configurazioni, chiamate trame o frame, definite a livello internazionale. Così, mentre un messaggio inviato con protocollo di tipo "byte control protocol" può avere una lunghezza variabile, lo stesso messaggio inviato con un protocollo di tipo "bit oriented protocol" avrà una lunghezza ben definita ed invariabile cosicché i campi in cui il messaggio è suddiviso si troveranno sempre nella stessa posizione relativa e con una medesima lunghezza.

Ad un aumento della complessità gestionale del protocollo corrisponde una certa semplificazione a livello di linea soprattutto in ricezione delle trame. Il significato posizionale dei diversi campi induce infatti una semplificazione nella loro gestione, cosa che non si riscontra nei protocolli BCP a causa di una disposizione variabile e non prevedibile per la totalità dei caratteri di controllo.

Protocollo BSC (Binary Synchronous Communication)

Il protocollo BSC risale al 1968 ed è stato quello più seguito nelle comunicazioni half-duplex asincrone. E' orientato al carattere e di esso esistono varie versioni.

Ogni messaggio deve iniziare e finire con un carattere SYN di sincronismo, cioè un carattere che permette al ricevente di sincronizzarsi correttamente sui segnali che arrivano.

Il testo vero e proprio è preceduto dal carattere SOH (Start of Header) e dalla cosiddetta intestazione (header) che contiene dei parametri di controllo. Il testo è preceduto dai caratteri DLE (Data Link Escape) e STX (Start of Text) e seguito dalla coppia DLE e ETX (End of Text). Il messaggio termina con i caratteri BCC (Block Check Character) di ridondanza generati con un algoritmo a controllo di ridondanza ciclica per verificare la correttezza di trasmissione del messaggio.

 

Formato dei messaggi con testo nel protocollo BSC

 

Protocollo HDLC (High Level Data Link Control)

Il protocollo HDLC è orientato al bit ed è generalmente utilizzato su reti di grandi dimensioni. Esso è il protocollo standard definito dall'ISO (International Standard Organization) per trasmissioni sincrone full-duplex. Lo scambio delle informazioni avviene con messaggi di formato fisso detti frames o trame. Per trama si intende una particolare sequenza di bit arrangiati in opportuni campi secondo regole ben stabilite. Tali campi possono essere riservati a compiti di controllo, che servono per realizzare tutte le funzioni proprie della procedura, e campi informazione, contenenti i dati veri e propri spediti dall'utente della procedura.

Nel protocollo HDLC ogni trama è composta dai seguenti campi:

 


Formato dei messaggi nel protocollo HDLC

 

Questo protocollo sfrutta un sistema di trasmissione a credito con finestra, cioè il dispositivo trasmittente, definito con terminologia OSI: DTE (Data Terminal Equipment), ad esempio un terminale, ha la possibilità di spedire delle trame senza avere ottenuto il riscontro di un certo numero di quelle spedite in precedenza. Il numero massimo di trame non riscontrabili viene detto appunto finestra. Questo modo di procedere permette un incremento della velocità generale del sistema in quanto, i tempi di trasmissione possono essere relativamente lunghi e perciò conviene spedire più trame in base alla considerazione che è assai più probabile che una trama risulti ricevuta correttamente piuttosto che distrutta o alterata.

Il raggiungimento del massimo numero di trame trasmesse e non riscontrate (finestra) porta al blocco della trasmissione finché dal ricevitore non arriva la conferma della spedizione corretta di un certo numero di queste. Il dimensionamento della finestra deve essere effettuato caso per caso poiché non è sempre vero che "più" è meglio. Se è troppo piccola rispetto al tempo medio di volo (di trasmissione) può succedere che il DTE trasmittente sia costretto all'inattività per un tempo non indifferente. Mentre una finestra troppo grande non potrebbe comunque migliorare le prestazioni del sistema poiché i primi riscontri arriverebbero prima della spedizione dell'ultima trama (quella che chiuderebbe la finestra).

 

Livelli di protocollo. Standard OSI

Esaminiamo brevemente quali sono le funzioni che un protocollo deve supportare per garantire un trasferimento ordinato di informazioni tra due o più terminali. La parte essenziale di queste funzioni, chiamate nel loro complesso DLC (Data Link Control), è raggruppabile in un insieme che assicura la funzionalità del collegamento. Tali funzioni sono:

Con lo sviluppo di reti sempre più complesse anche i gruppi funzionali in cui può essere diviso un protocollo (e cioè i suoi livelli) sono andati parimenti crescendo. Costante in questa suddivisione rimane la reciproca indipendenza dei livelli, nel senso che il livello N non ha visibilità del livello N-1 di cui utilizza le funzioni; esso è in grado di interpretare correttamente solamente i messaggi provenienti da livelli di analogo valore.

Si è ormai standardizzata una struttura di protocollo formata da sette livelli, di cui i primi quattro costituiscono i cosiddetti livelli di trasporto, mentre i rimanenti tre costituiscono i cosiddetti livelli di controllo. Un protocollo, a seconda della complessità delle funzioni realizzate, sarà costituito da uno o più di questi livelli; in particolare i protocolli di tipo BCP generalmente utilizzano i primi due livelli mentre quelli di tipo BOP utilizzano anche i livelli superiori.

Per le reti di calcolatori l'organizzazione internazionale per gli standard ISO (International Standard Organization) ha proposto una architettura di sistema articolata in sette livelli e chiamata modello OSI (Open System Interconnection).

Va notato che tale suddivisione è solo un suggerimento e non uno standard ben definito ed universalmente accettato anche se la sua diffusione acquista un peso sempre crescente. Ad ogni livello competono ben precise funzioni che vanno dal permettere la trasmissione fisica dei segnali su una linea (livello 1) fino a quelle del livello applicativo (livello 7), dove l'utente può utilizzare come proprie le risorse fisicamente allocate in punti diversi della rete. Solo le funzioni del livello 1 operano a livello fisico, tutte le altre stabiliscono un collegamento di tipo logico, così i livelli da 2 a 7 vengono anche detti livelli logici o virtuali.

Un messaggio da trasmettere, che ha un ben preciso significato per il livello nel quale è generato, viene passato con opportune modalità al livello inferiore che non ne conosce il significato, ma compie su di esso le elaborazioni necessarie alla trasmissione al proprio livello aggiungendovi eventualmente altre informazioni, e così via fino a che non viene trasmesso fisicamente sulla linea. L'informazione arrivata e ricevuta a livello 1, subisce opportune rielaborazioni risalendo di livello in livello fino ad essere ricevuta, così come era alla partenza, al livello analogo a quello da cui era partita.

Generalmente gli strati da 1 e 3 (fino al livello di rete) sono sotto il controllo delle compagnie che forniscono i servizi di telecomunicazioni (service provider), mentre lo strato 4 (livello trasporto) è sotto il controllo dell'utente (service user).

 

Suddivisione di un protocollo in livelli secondo lo standard ISO-OSI

 

Livello 1, livello fisico

E' costituito da tutte quelle parti che permettono il collegamento fisico ed elettrico tra i terminali, in particolare: gli aspetti funzionali (per ogni circuito gli stati, le temporizzazioni e la metodologia d'uso), operativi (i parametri device-dependent come i codici utilizzati e le procedure implementate), elettrici (tensioni e correnti) e meccanici (i mezzi fisici per l'interconnessione). Si definiscono:

DTE (Data Terminal Equipment): dispositivo di comunicazione che rappresenta l'origine o la destinazione dei segnali in una rete (ad esempio un terminale o una workstation);

DCE (Data Circuit Terminating Equipment, Data Communication Equipment): dispositivo che stabilisce, mantiene e termina una sessione su una rete (ad es. un modem);

Il livello fisico include la descrizione delle funzionalità, dell'operatività e degli aspetti elettrici e meccanici su entrambi i lati del DCE. I protocolli di questo livello si collocano quindi tra un DCE ed un altro DCE ad esso direttamente collegato ed inoltre tra un DTE e un DCE.

Livello 2, livello di linea (data link)

E' costituito dalle funzioni che permettono di trasferire correttamente i messaggi di informazione o di controllo mediante il link fisico costituito dal livello 1. Provvede alla formattazione delle informazioni ed alla sincronizzazione dei frame, nonché alla correzione ed al recupero dei messaggi errati. Permette la comunicazione tra due terminali connessi direttamente da un link fisico, e non ha capacità di instradamento tra più nodi.

Un frame trasmesso è costituito a livello di link dall'indirizzo di destinazione, dall'eventuale indirizzo di origine e da un codice per la rilevazione degli errori. L'effettivo campo dati è costituito da quanto viene passato dal livello superiore, indipendentemente dal suo significato o dal codice utilizzato. Le funzioni tipiche di questo livello possono essere implementate con un protocollo di tipo BCS o HDLC.

Livello 3, livello di rete (network link)

E' a questo livello che i messaggi uscenti sono suddivisi in pacchetti e che i pacchetti ricevuti vengono riassemblati in messaggi con un significato compiuto per i livelli superiori. Il livello 3 provvede inoltre a reinstradare verso il terminale di destinazione pacchetti in transito attraverso il nodo della rete in cui è inserito. In una rete a commutazione di pacchetto è a questo livello che viene realizzato il collegamento logico fra un terminale e la rete stessa.

Le funzioni principali a questo livello sono essenzialmente di routing del pacchetto attraverso la rete e il controllo di congestione. Quest'ultimo serve a trattare l'eventualità di un riempimento delle code di attesa di un nodo e può essere effettuato mediante diverse tecniche: la preallocazione dei buffer (un nodo sorgente prima di iniziare a trasmettere richiede e prenota un certo numero di buffer presso ogni nodo che attraverserà), il packet discarding (quando la coda di attesa di un nodo è piena i nuovi pacchetti in arrivo vengono eliminati) e altre ancora.

Livello 4, livello di trasporto (transport link)

Questo livello provvede a trasferire i messaggi tra gli utenti in modo che essi non debbano essere a conoscenza della struttura della rete. E' il livello responsabile della formazione della connessione desiderata e decide, per esempio, quanti canali utilizzare per assicurare il throughput richiesto, o quale è il percorso a costo minore tra quelli possibili. E' a questo livello che vengono controllati e recuperati eventuali errori di trasmissione.

In una comunicazione fra due host remoti, il livello di trasporto è utilizzato soltanto nei nodi sorgente e destinazione (end-to-end) e non in tutti quelli attraversati, dove ci si limita al livello 3. Esso fornisce una sorta di connessione virtuale tra i due host, che sembrano connessi direttamente (in realtà la vera connessione è mascherata dal livello 3 di rete). Gli strati di trasporto e di rete sono complementari, così quei protocolli che hanno un network layer semplice hanno un transport layer sofisticato, e viceversa.

Livello 5, livello di sessione

Le funzioni di questo livello permettono il realizzarsi della sessione di lavoro se i servizi richiesti sono disponibili. Quando un processo richiede a questo livello di stabilire una sessione, per prima cosa viene verificato se il destinatario si trova sullo stesso elaboratore o su un elaboratore remoto. In quest'ultimo caso il livello di sessione chiede al livello di trasporto di predisporre le risorse necessarie per stabilire il collegamento.

Livello 6, livello di presentazione

Provvede a trasformare, se attivato, le informazioni ricevute ed a presentarle all'utente in modo comprensibile. Ad esempio vengono adattati i caratteri di controllo, tipo End-of-Line o Form-Feed, al dispositivo reale utilizzato dall'applicativo: video bn o colori, stampante, etc. Di queste funzioni fanno parte la decifrazione di testi, il loro compattamento e transcodifica.

Livello 7, livello applicativo

Questo è il livello più alto e fornisce servizi direttamente all'utente, il quale vede (o meglio, non vede) tutti gli altri livelli come completamente trasparenti. Completamente nascosta rimane anche la struttura della rete.

Terminologia OSI

Le classi dei protocolli di trasporto

 

La raccomandazione X.25

Quando la distanza che si vuole coprire è superiore a qualche chilometro si parla di reti geografiche o WAN (Wide Area Network). La tecnologia adottata per questo tipo di reti è denominata commutazione di pacchetto.

Nel 1976 l'organismo internazionale CCITT (Consultative Committee for International Telegraphy and Telephony) ha emesso la cosiddetta raccomandazione X.25 per standardizzare le reti a commutazione di pacchetto; essa è stata aggiornata poi nel 1980 e oggi è praticamente seguita da ogni costruttore di tali reti.

Il protocollo X.25 stabilisce come devono interfacciarsi una unità DTE e una unità DCE. Una unità DTE (Data Terminal Equipment) è una qualsiasi unità funzionale che fornisce all'utente le funzioni di comunicazione, essa può essere un terminale o un vero e proprio calcolatore. Una unità DCE (Data Circuit-terminating Equipment) è l'unità addetta a stabilire e mantenere i collegamenti e, in genere, a stabilire l'interfaccia fra l'unità DCE e il sistema di comunicazione. Ad esempio nel caso di linee telefoniche fisse quest'ultima può essere semplicemente un Modem, oppure una scheda Ethernet in una rete LAN.

La raccomandazione X.25 copre i primi tre livelli dell'architettura OSI, anzi, si può dire che esiste una perfetta corrispondenza tra i livelli X.25 e i dettami OSI relativi a questi ultimi. Ciò significa che una conoscenza dettagliata della X.25 fornisce anche una buona idea dei primi tre livelli OSI "teorici".

Va osservato che con il nome X.25 si indica non un certo modo di trasportare i dati o di costruire le reti, ma semplicemente la modalità di colloquio tra la macchina che deve trasmettere (ricevere) dati (DTE) e il dispositivo che fornisce il punto di attacco alla rete (DCE).

 

Livelli di protocollo. Standard DoD (Department of Defense)

Livello 1, Network Access Layer

Il Network Access Layer si occupa dello scambio dati tra un host e la rete a cui esso è connesso. L'host che trasmette un messaggio deve fornire alla rete l'indirizzo dell'host destinatario, in modo che la rete possa indirizzare il messaggio opportunamente. A questo livello possono anche essere invocati o negoziati servizi particolari della rete in oggetto.

Livello 2, Internet Layer

Questo provvede alle funzioni di routing attraverso reti distinte, tale protocollo è implementato oltre che negli hosts, anche nei gateway (un gateway è un dispositivo che connette due reti e la cui funzione principale è indirizzare i dati da una all'altra di esse).

Livello 3, Host-to-Host Layer

Questo strato fornisce i meccanismi che provvedono a rendere affidabile lo scambio dei dati senza errori, né omissioni, in maniera ordinata tra l'host originante e l'host destinatario.

Livello 4, Process Layer

Infine il Process Layer contiene i protocolli di trasporto necessari a supportare le varie applicazioni, ad esempio FTP (File Transfer Protocol) e SMTP (Simple Mail Transfer Protocol).

 

Confronto tra la stratificazione OSI e quella DoD

 

L'interconnessione delle reti

L'interconnessione fra reti nacque con la necessità di connettere assieme diverse LAN geograficamente isolate. Si ottiene per mezzo di apparecchiature denominate genericamente gateway che vengono ribattezzate con nomi specifici a seconda del livello OSI in cui agiscono. Tra questi dispositivi rivestono particolare importanza i bridge ed i router che lavorano rispettivamente a livello 2 e 3 dello standard OSI, e i repeater che lavorano a livello 1.

Nella figura sottostante viene schematizzato sinteticamente il cammino evolutivo subito dai dispositivi e la loro posizione nella stratificazione OSI.

 

Livello OSI e apparecchiature corrispondenti

 

I repeater

I repeater sono dei dispositivi estremamente semplici che, operando a livello 1 (fisico) dello strato OSI, hanno soltanto la funzione di ritrasmettere passivamente il segnale in ingresso amplificato, senza nessuna operazione di manipolazione dei dati.

Il loro utilizzo consente di scavalcare il limite imposto dalla lunghezza massima dei portanti fisici (cavi), che non può essere superata per evitare attenuazioni e distorsioni tali da non consentire una ricezione affidabile del segnale immesso nel mezzo trasmissivo. Così, per creare una rete locale di dimensione maggiore della lunghezza massima consentita per il portante utilizzato, sarà sufficiente frazionare la rete stessa in più segmenti (o tratte), ognuno realizzato con un cavo di misura minore alla massima consentita, e quindi connettere tutte le tratte a due a due tra loro mediante l'impiego dei repeater che provvederanno a rigenerare il segnale da una tratta verso l'altra e viceversa.

Un altro aspetto positivo è la possibilità di poter connettere assieme reti utilizzanti supporti trasmissivi diversi, ad esempio un cavo coassiale e un doppino telefonico; in questo caso però vengono denominati multiport repeater.

I bridge

Allo strato appena superiore ai repeater, livello OSI due, lavorano invece i bridge che, come un ponte, sono stati creati per collegare insieme due LAN che abbiano lo stesso protocollo sopra il livello fisico o meglio, secondo la classificazione IEEE 802.3 (Si veda a tal proposito il capito corrispondente) sopra il livello MAC; quest'ultimo può invece essere diverso. Poiché i dati non sono semplicemente ricostruiti come nel caso di un repeater, ma vengono elaborati, non è possibile il funzionamento "al volo" e quindi ciascun messaggio viene immagazzinato prima di essere trattato (filtering) ed eventualmente spedito (forwarding) sulla LAN di destinazione. Soltanto i pacchetti provenienti da una sottorete e indirizzati all'altra sottorete possono attraversare il bridge. Così facendo il traffico che lo attraversa è ridotto al minimo: pacchetti indirizzati alla stessa sottorete del mittente non attraversano il bridge e quindi non sovraccaricano inutilmente le altre sottoreti.

Lavorare a livello 2 consente loro di connettere reti che utilizzino differenti protocolli di alto livello (TCP/IP, NFS, etc.). Sono semplici da installare e la loro presenza è trasparente ai protocolli di alto livello. Alcuni di essi, detti appunto learning bridge, non necessitano di alcuna configurazione essendo in grado, analizzando gli indirizzi sorgenti dei pacchetti, di costruirsi autonomamente delle tabelle con la locazione delle stazioni che verranno poi utilizzate per stabilire se una certa trama debba essere trasmessa verso una data LAN oppure no. Bisogna tenere presente però che in un rete realizzata con molti bridge i ritardi da loro introdotti potrebbero renderne non affidabile il funzionamento.

In commercio esistono due tipi di bridge quelli locali e quelli remoti. Il primo unisce o separa due segmenti di reti LAN, il secondo invece è capace di unire reti geografiche attraverso linee punto-punto. In questo caso si può pensare ad un bridge diviso in due parti, poste ai due capi delle reti locali e collegati assieme da una linea dedicata.

Una ulteriore prestazione ottenibile dai bridge grazie alla possibilità di filtraggio è la funzione di Source Explicit Forwarding attiva nel campo della sicurezza. L'amministratore può voler riservare il traffico su alcune reti in modo che l'accesso sia dato soltanto ad un certo gruppo di utenti. Questo viene fatto utilizzando appunto la SEF, che non è niente altro che un parametro di configurazione. Soltanto i pacchetti provenienti dalle stazioni specificate manualmente nella tavola di routing, verranno fatti passare, mentre a tutti gli altri verrà negato l'accesso. La selezione può essere attuata in una sola direzione o in entrambe, cioè sia sui pacchetti in arrivo che in partenza.

Transparent bridge e circoli viziosi

Il suo nome viene dal fatto che deve eseguire il proprio lavoro senza interferire in alcun modo con quello delle altre macchine presenti in rete. In pratica gli altri nodi non devono nemmeno vederlo e sentirlo. Tutti i bridge e gli switch in uso nelle reti Ethernet sono trasparenti. Poiché sono trasparenti e il loro operato non viene controllato da nessuno, questi bridge devono assicurarsi che nella rete non esistano circoli viziosi (loop) e cioè che la stessa trama non continui a girare ininterrottamente in tondo senza giungere mai alla destinazione finale, mantenendo la linea inutilmente occupata. Questo può succedere quando tra due reti o due segmenti esistono più percorsi possibili. Le trame continuano a propagarsi su tutte le vie possibili e a volte tornano indietro creando circoli viziosi. La trama esce "dalla porta" e rientra "dalla finestra" di continuo.

Può accadere che alla trama impazzita della prima macchina si aggiungano trame di broadcast generate da altre macchine e che anche queste trame continuino a girare all'infinito, moltiplicandosi. A questo punto la rete arriva praticamente a bloccarsi. Una condizione di questo genere viene definita broadcast storm.

Una possibilità consiste nell'evitare che esistano più percorsi tra due segmenti, ma questo non è sempre possibile. Inoltre, talvolta viene costruito di proposito così da garantire la massima sicurezza di connessione: quando un bridge si rompe subentra l'altro.

La vera soluzione a questo problema del circuito chiuso è stata inventata da Digital Equipment che ha definito un particolare metodo, chiamato algoritmo dello spanning tree, per scegliere automaticamente un percorso primario quando esistono diversi percorsi alternativi. Il metodo consiste nel raggruppare i bridge che si trovano su un certo percorso in modo che seguano una struttura gerarchica ad albero e che non esistano doppi percorsi possibili.

Quando la rete viene accesa per la prima volta e ogni volta che si verifica una qualsiasi disposizione delle macchine, i bridge si scambiano un particolare tipo di messaggio chiamato Bridge Protocol Data Unit (BPDU). Questo messaggio serve a stabilire quale tra essi costruirà il percorso primario (root bridge). Una volta che lo si è definito, tutti gli altri bridge bloccano le porte che collegano il segmento A al segmento B così da eliminare qualsiasi percorso alternativo. Qualsiasi trama che debba circolare tra i due segmenti attraverserà solo il root bridge. Nel caso in cui quest'ultimo si guastasse, i suoi pacchetti BPDU smetterebbero di arrivare agli altri bridge con frequenza regolare e qualcun altro prenderebbe il suo posto.

Il blocco delle porte avviene in automatico secondo questa procedura: una volta scelto il root bridge si determina quale porta è la migliore per comunicare con esso. Questa si chiamerà root port. Presa questa decisione si disattivano tutte le altre porte.

Source-Route Bridging o Source Routing

Esiste una seconda tecnica, per ovviare al problema dei loop, che prende il nome di source-route bridging. Viene usata prevalentemente nelle reti Token-Ring. Il percorso che la trama segue viene determinato dalla stazione mittente basandosi su una tabella che essa stessa ha costruito per rappresentare la composizione della rete. Le informazioni di tale percorso vengono scritte direttamente all'interno di ciascuna trama e il bridge non deve far altro che leggerle e smistare il pacchetto di conseguenza.

Nel trovare il percorso idoneo ai propri pacchetti, ciascuna stazione di una rete segue tre fasi distinte, che sfruttano il fatto che ogni macchina e ogni bridge presente sulla rete dispone di un proprio indirizzo fisico riconoscibile. La prima azione consiste nello spedire un pacchetto a tutti dichiarando il proprio indirizzo affinché ciascun ricevente risponda informandoci su quale strada la trama esploratrice ha percorso per arrivare fino a lui. Si prepara una trama speciale che viene spedita in copie multiple su tutti i percorsi possibili. Ogni bridge attraversato dalla trama aggiunge all'interno di quest'ultima il proprio identificatore per segnarne il passaggio. Quando giunge a destinazione la trama contiene al proprio interno una mappa dell'intero tracciato seguito.

A questo punto il destinatario prepara una trama di risposta che ripercorre la stessa trama a ritroso fino a tornare alla sorgente originaria e informarla del fatto che il destinatario è stato raggiunto lungo una particolare via. Quando giunge finalmente all'originatore primo della comunicazione, questi la legge e memorizza la mappa del percorso nella propria tabella d'instradamento. Quella sarà, da lì in avanti, la strada per raggiungere quella particolare stazione.

I router

I router sono macchine complesse, che lavorano al terzo livello OSI (livello di rete) e perciò, come dice anche il nome, hanno la capacità di instradamento (routing) dei pacchetti nella rete in conformità ai vari protocolli di alto livello utilizzati. I router rispetto ai bridge dispongono di una maggiore "intelligenza" che può permettere loro di dividere logicamente la rete in varie sottoreti consentendone perciò una gestione distribuita. Sono utilizzati per connettere reti locali attraverso una rete geografica.

Il bridge analizza (filtering) il pacchetto e se l'indirizzo del destinatario appartiene ad una tratta di rete diversa lo fa passare (forwarding) altrimenti lo ritrasmette verso la propria sottorete. Il router opera invece delle decisioni per stabilire dove debba essere spedito un pacchetto e, dopo aver analizzato l'indirizzo del destinatario, decide verso quale tratta conviene instradare il pacchetto.

L'instradamento può avvenire in maniera fissa, nel qual caso esistono delle tabelle di routing fisse, modificabili solo dal centro di gestione, oppure in maniera dinamica attraverso i router dinamici che disponendo di una maggiore intelligenza possono modificare convenientemente le informazioni riguardanti le tabelle di instradamento in maniera automatica.

Di positivo offrono una elevata affidabilità costituendo delle vere e proprie barriere tra sottoreti, ma necessitano di una fase di configurazione iniziale sensibilmente più laboriosa di quella di un learning bridge. Quest'ultimo infatti una volta collegato capisce da solo quali siano i pacchetti da filtrare e quali da ritrasmettere (da questo il nome di learning).

Altra limitazione pesante è la dipendenza dal protocollo usato ad alto livello (essi operano a livello OSI 3), così un router che reinstrada pacchetti con protocollo TCP/IP non si cura di quelli NFS e così via. Infine va notato che, rispetto ai bridge, si tratta di apparecchiature assai più complesse che costano ovviamente di più.

I router multiprotocollo, i brouter, i routing bridge

Né i learning bridge, né i router monoprotocollo si dimostrano capaci di fornire tutte le caratteristiche che sono necessarie in una rete composta di reti eterogenee.

Sono stati quindi introdotti i router multiprotocollo, cioè in grado di tradurre e instradare pacchetti di protocolli diversi, ma questa soluzione però non risolve ancora il trattamento dei protocolli a più basso livello.

Un ulteriore passo avanti si è fatto con l'introduzione dei brouter che, come lascia intendere il nome (contrazione di bridge e router), sono apparecchiature che si comportano come bridge verso alcuni protocolli mentre da vero router per gli altri. Sono semplici da definire, ma l'azione di bridge da essi realizzata sui pacchetti non è certo quella fornita dai più moderni routing bridge (vedi sotto); inoltre essi si trovano a lavorare ad un livello OSI più alto (livello 3), di conseguenza devono operare una elaborazione maggiore rispetto al caso dei bridge che, lavorando a livello 2, possono permettersi a parità di tecnologia un throughput sostanzialmente maggiore.

Parallelamente dal lato bridge l'evoluzione tecnologica ha condotto all'introduzione del cosiddetto routing bridge che, pur permettendo ancora la trasparenza di un learning bridge, consente delle potenziate capacità di costruire reti piuttosto complesse. Il routing bridge infatti è capace di mantenere allo stesso tempo la trasparenza rispetto al protocollo e fornire al contempo una efficiente capacità di selezione dei percorsi dei pacchetti.