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.