7.4 Controllo di errore e ritrasmissione
Transcript
7.4 Controllo di errore e ritrasmissione
CAPITOLO 7. TECNICHE DI COMMUTAZIONE 7.4 59 Controllo di errore e ritrasmissione Per quanto riguarda il trasferimento dei singoli pacchetti, puó essere presente una strategia di controllo di errore e richiesta di ritrasmissione dei pacchetti ricevuti in modo scorretto. La scelta di implementare tale tipo di controllo dipende dal tipo di proticollo considerato. Come vedremo piú avanti, ció é fatto nel caso dell’e–mail, mentre non é adatto ad un traffico per il trasferimento di voce e immagini, dove la richiesta di ritrasmissione puó generare ritardi molto meno tollerabili del semplice scarto di un pacchetto danneggiato. Ci sono essenzialmente tre tecniche di error recovery (ARQ: Automatic Repeat Request). In ogni caso é previsto che il destinatario invii all’host sorgente un segnale (pacchetto) di corretta ricezione (ACK). 1. Stop and wait. La sorgente non invia il pacchetto successivo finché non riceve l’ACK relativo al pacchetto inviato (o ritrasmette il pacchetto dopo un tempo di time–out). 2. Go back N. Vengono trasmessi N pacchetti ogni volta che si riceve l’ACK relativo agli N pacchetti precedenti. Se non si riceve l’ACK dopo un tempo di time–out, vengono ritrasmessi tutti gli N pacchetti. Ció risulta conveniente se la perdita di un pacchetto é un evento statisticamente raro. 3. Go back N – select repeat. Come il go back N, salvo che viene ritrasmesso solo il pacchetto o i pacchetti ricevuti scorrettamente tra gli ultimi N inviati. É la soluzione piú efficiente, ma piú difficile da implementare. Capitolo 8 Dispositivi di una rete di calcolatori Finora abbiamo schematizzato le reti come costituiti da una serie di blocchi interconnessi, distinguendo tra host e nodi di commutazione. In questo capitolo vedremo brevemente che tipo di dispositivi vengono utilizzati per realizzare una rete di calcolatori. 8.1 Hub e switched hub (switch) L’hub viene utilizzato come nodo centrale nella topologia a stella. É essenzialmente un ripetitore. Possiede un certo numero di porte, a cui possono essere collegati gli host (su Ethernet con cavi dritti (patch), anche se alcuni dispositivi sono in grado di configurarsi automaticamente se si connettono con cavi cross, utilizzati normalmente per il collegamento diretto tra due PC), come in Fig. 8.1. L’hub ripete il pacchetto in ingresso su tutte le altre porte. Viene detto anche hub a mezzo condiviso. Poiché il pacchetto in ingresso viene inviato a tutte le porte dell’hub, con tale dispositivo puó trasmettere un solo host alla volta. L’hub puó essere anche a commutazione (switching hub o, piú comunemente, switch). Tale dispositivo analizza i pacchetti che riceve in ingresso, osservando l’identificazione (l’indirizzo) dell’host sorgente e destinazione contenuta nell’header del pacchetto, per indirizzarlo solo all’apposita linea in uscita. Cosı́, le altre linee possono essere utilizzate da altro traffico. Comunemente gli switch sono dispositivi autoconfigurabili e registrano l’indirizzo degli host connessi alle varie porte monitorando il traffico di rete. 60 CAPITOLO 8. DISPOSITIVI DI UNA RETE DI CALCOLATORI Host (PC) Host (PC) . . . . . 61 Host (PC) modem LAN (Ethernet) . . . hub (switch) Host (PC) cavo UTP/STP dritto (patch) porta per la connessione in cascata . . . hub (switch) Figura 8.1: Host collegati in una rete a stella (usualmente Ethernet) tramite hub. LAN 2 (o WAN) Bridge LAN 1 Figura 8.2: Bridge. 8.2 Bridge Un bridge (Fig. 8.2) mette in collegamento due o piú LAN, o LAN e WAN, realizzate con la stessa tecnologia (ad esempio Ethernet). In pratica, ritrasmette sul lato opportuno i pacchetti provenienti da una rete e diretti su un’altra. Non effettua alcuna modifica al contenuto o al formato dei pacchetti, e non rappresenta una delle destinazioni intermedie introdotte parlando delle tecniche di commutazione. Non possiede indirizzo di rete. 8.3 Ripetitore Un ripetitore (Fig. 8.3) ripete il segnale in ingresso sull’uscita, amplificandolo. É utilizzato sulle lunghe tratte per contrastare l’attenuazione introdotta dal mezzo che costituisce il canale di trasmissione. CAPITOLO 8. DISPOSITIVI DI UNA RETE DI CALCOLATORI cavo di rete Ripetitore 62 cavo di rete Figura 8.3: Ripetitore. Rete C Rete A Router Rete D Rete B Figura 8.4: Router. 8.4 Router Un router (Fig. 8.4) é un dispositivo che si occupa dell’instradamento dei dati. Puó connettere due o piú reti, realizzate anche con tecnologia diversa, e viene utilizzato come destinazione intermedia dai protocolli di comunicazione. Ricevuto un pacchetto, il router provvede a inviarlo (all’host destinazione o ad un’altra destinazione intermedia) su una delle reti a lui connesse in base alla destinazione del pacchetto stesso, modificandone il formato per adattarlo alla diversa tecnologia di rete, se necessario. Ha un proprio indirizzo di rete (o meglio, uno per ogni collegamento alla rete). 8.5 Gateway Il termine gateway (Fig. 8.5) é spesso riferito ad un dispositivo con le funzionalitá di un router (quindi che puó operare decisioni sull’instradamento dei pacchetti), che connette una LAN privata con il mondo esterno. Ad esempio, nelle configurazioni di rete dei Personal Computer (Windows / Unix / Linux / ecc.), ci si riferisce al gateway come l’host prima destinazione intermedia dei pacchetti destinati alle reti esterne a quella a cui siamo direttamente connessi. Il termine gateway puó indicare anche un application gateway. Questo é un particolare dispositivo dedicato (o un software che gira su un host) utilizzato per consentire la comunicazione tra diversi tipi di protocolli esistenti tra due reti, per un particolare servizio. Ad esempio, tali dispositivi sono utilizzati per consentire il transito delle e–mail tra una rete di tipo TCP/IP (Internet) ed una rete che implementa sempre un servizio di e–mail, ma seguendo un protocollo (ossia regole e formato) diverso. CAPITOLO 8. DISPOSITIVI DI UNA RETE DI CALCOLATORI Host (PC) Host (PC) . . . . . Host (PC) hub (switch) Gateway LAN Internet Figura 8.5: Gateway che collega piú host al mondo esterno. 63 Capitolo 9 Modello client–server Il modello client–server é in pratica il modello di riferimento per le applicazioni di rete e in particolar modo per le applicazioni che mirano a rendere disponibile un servizio agli utenti di una rete. Per introdurre il modello client–server cominciamo a notare che possiamo suddividere i compiti effettuati da una generica applicazione (programma) in tre funzioni. • Presentazione. Interfaccia con l’utente, per inserimento dati e visualizzazione dei risultati. • Elaborazione. Fase di elaborazione vera e propria. • Accesso / aggiornamento dati. Accesso a data–base, informazioni, ecc., e loro mantenimento. Il modello client–server si basa sulla premessa che le applicazioni di rete consistono di due estremitá (l’utente ed il fornitore del servizio). Le tre funzioni necessarie ad implementare la particolare applicazione vengono quindi divise in due parti: il lato client ed il lato server. Il client, fornito od acquisito dall’utente, si occupa delle funzioni in alto, il server, che dovrá essere in esecuzione su un host del fornitore del servizio, si occupa delle funzioni in basso. La particolare suddivisione delle funzioni tra client e server comporta vantaggi e svantaggi diversi e puó variare a seconda del particolare tipo di applicazione. Per definizione, comunque, il client chiederá informazioni o un’elaborazione dati al server. Il server eseguirá le richieste del client, inviandogli i risultati dell’elaborazione. Usualmente un’applicazione di rete consiste di due programmi separati: il client ed il server, i quali sono solitamente realizzati in versioni per sistemi 64 CAPITOLO 9. MODELLO CLIENT–SERVER 65 operativi differenti, anche se é possibile trovare singoli software che svolgono entrambe le funzioni. Un’applicazione (software) server verrá messa in esecuzione su un certo host per rendere disponibile un servizio (sito web, casella di e–mail, archivio file, ecc.). Una volta avviata, l’applicazione server esegue generalmente una serie di operazioni di inizializzazione, per poi passare in uno stato di attesa di richieste del servizio provenienti da un client. Un utente, che vuole richiedere un particolare servizio (ad esempio la visualizzazione di una pagina web), avvierá un programma client apposito (Netscape, Mozilla, Explorer, Avant, Opera, Lynx, ecc. ecc.) con cui dialogare con il server (Apache, ecc. ecc.) in modo adeguato. L’host su cui gira l’applicazione server riceverá le richieste dal client, ed il sistema operativo di tale host, verificato il tipo di servizio richiesto, le girerá al software server, che provvederá a soddisfarle. Possiamo vedere il modello client–server in contrapposizione al Mainframe, in cui tutto l’onere dell’esecuzione delle varie funzioni dell’applicazione é affidato al Mainframe, a cui gli utenti potevano collegarsi tramite dei terminali stupidi (ossia senza capacitá di elaborazione). Nel modello client–server invece il client svolge una parte delle funzioni richieste, risultando in un alleggerimento del lavoro per il server che puó cosı́ diventare piú efficiente. Per lo stesso motivo si ha un notevole risparmio economico (sia client che server possono essere realizzati su comuni PC) e una maggiore flessibilitá di mercato (server e client possono essere realizzati da aziende diverse). Ad un server possono giungere richieste da piú client, da uno o piú utenti. A seconda del metodo utilizzato per rispondere a tali richieste multiple, i server si dividono in due categorie. • Server iterativi. Gestiscono le varie richieste individualmente, in maniera sequenziale, nell’ordine in cui arrivano. Sono piú semplici da implementare, ma utilizzabili praticamente solo nei casi in cui il servizio da svolgere sia di durata breve e determinata (ad esempio la richiesta dell’ora esatta). • Server concorrenti. In tal caso il programma server genera un processo separato per ogni richiesta da parte di un nuovo client. Se un nuovo client vuole usufruire del servizio realizzato dal software server, questo avvia un nuovo processo (ossia una copia del programma server) per gestire la richiesta, per ritornare poi in stato di ascolto per collegamenti da parte di nuovi client. Il processo generato assolve alle richieste del particolare client, per essere poi terminato. Ció richiede un sistema operativo multitasking, ossia in grado di gestire processi multipli.