PROTOCOLLI DI
TRASMISSIONE
Richiami sulla
trasmissione dati
Per trasmissione dati, si intende, in informatica, il trasferimento
di informazioni da un computer all'altro, o da un computer a una
periferica o a un altro sistema di elaborazione. Ad esempio,
si parla di trasmissione dati quando, in seguito al comando di stampa di un documento
impartito a un computer, i dati relativi al contenuto del documento, al formato
e all'impostazione della pagina vengono comunicati alla stampante lungo la
linea di connessione tra i due dispositivi. Gli elaboratori operano con informazioni espresse sotto
forma di combinazioni di cifre binarie, o bit, vale a dire di combinazioni di cifre 0 e 1; quindi, qualsiasi
trasferimento di dati consiste essenzialmente in un trasferimento di bit. In
linea di principio ciò costituisce una notevole semplificazione del problema,
perché ogni segnale può essere rappresentato all'interno di un circuito
elettronico per mezzo di due soli stati, On e Off, corrispondenti ai valori 1 e
0. In pratica, tuttavia, la trasmissione dei dati digitali è più complessa di
quanto si possa pensare. Un flusso di cifre inviate da un computer deve essere
ricostruito correttamente da un dispositivo ricevente perché quest'ultimo possa
acquisire informazioni dotate di significato, indipendentemente dai ritardi,
dai disturbi e dagli errori che possono danneggiare il messaggio lungo il
percorso. Appositi protocolli concordati tra trasmittente e ricevente
definiscono le modalità di ogni processo di trasmissione dati. La velocità di
una linea di trasmissione si misura in bps (bit per secondo).
Pacchetti di dati
Nella comunicazione tra computer, i dati
non vengono trasmessi a flusso continuo, ma vengono suddivisi in unità di
informazione discrete dette pacchetti; questo fa sì che non sia
necessario un collegamento ininterrotto perché si possa realizzare lo scambio
di informazioni tra elaboratori diversi. Nella trasmissione dati tra i nodi
di una rete di comunicazione
viene generalmente impiegata una tecnica detta commutazione di pacchetto, che
sfrutta la possibilità di trasferire blocchi di dati da un terminale all'altro
senza stabilire un collegamento "end-to-end", cioè da un capo
all'altro della linea (come nel sistema a commutazione di circuito). I dati
vengono trasmessi "link-by-link", cioè vengono temporaneamente
memorizzati lungo il percorso, dove si dispongono, per così dire, in coda, prima
di essere trasmessi a un appropriato link in uscita. Le decisioni di
indirizzamento si basano sulle informazioni contenute in una
"intestazione" (header) posta all'inizio di ogni blocco (l'insieme di
intestazione e blocco viene designato con il termine "pacchetto").
Questa forma di collegamento è di solito più efficiente di un collegamento
end-to-end tra computer comunicanti e in pratica molti utenti possono
condividere un solo link fisico, usando una tecnica detta multiplessaggio. Il
prezzo di questa efficienza è che alcuni pacchetti possono subire un ritardo.
Protocolli
I protocolli di comunicazione consistono
in un insieme di regole atte a trasferire i dati da un terminale all’altro nel
miglior modo possibile e con il minor numero di errori.
I protocolli devono rispondere a ben
precisi standard, infatti soltanto rispettando normative ben precise è
possibile rendere intercomunicanti sistemi anche profondamente diversi.
Un importante standard è rappresentato
dal modello ISO/OSI (International Standard Organization / Open System
Interconnection) a cui si rifanno tutti i costruttori del mondo.
Secondo questo modello i protocolli
possono essere raggruppati in:
a) protocolli
di basso livello (livelli: 1,2,3,4)
b) protocolli
di alto livello (livelli: 5,6,7)
Questo standard internazionale è noto
come "modello a 7 livelli". Spostandoci dai livelli bassi ai livelli
più alti si passa da problematiche vicine all’ hardware a problematiche legate
al software.
Protocollo di livello 1 o livello fisico
Stabilisce come trasmettere le
combinazioni di 0 e 1 che costituiscono l'informazione digitale, comprende la
definizione di "1" e "0" in termini di segnali elettrici. Definisce gli standard e le interfacce di
comunicazioni meccaniche ed elettriche come, ad esempio, la RS-232C, la RS-422,
ecc.
Protocollo di livello 2 o livello di linea
Riguarda il modo di trasferire i bit in maniera
affidabile da un nodo all'altro di una rete, nonché problemi come il
rilevamento e la correzione degli errori e il controllo di flusso (sincronismo
ed inizializzazione) con protocolli di tipo BSC, HDLC, ecc. Gli aspetti
più importanti di tali protocolli sono rappresentati proprio dalle regole di
riconoscimento e correzione degli errori e dalle modalità di colloquio tra i
vari periferici.
Protocollo di livello 3 o livello di rete
Definisce le procedure necessarie al collegamento di
rete tra utenti. Divide il messaggio da trasmettere in pacchetti e ne gestisce
il transito (indirizzamento e instradamento) attraverso
la rete di trasmissione.
Protocollo di livello 4 o livello di trasporto
Definisce ed ottimizza i collegamenti tra utenti.
Gestisce l'apertura e la chiusura dei collegamenti, sceglie il percorso
ottimale lungo la rete, rivela e corregge i dati errati di trasmissione.
Protocollo di livello 5 o livello di sessione
Definisce
le modalità per individuare l'indirizzo dell'utente, interrompe il collegamento
e lo riattiva in qualunque momento e per qualsiasi causa. Definisce, inoltre,
il tipo di collegamento (half-duplex, full-duplex, ecc.).
Protocollo di livello 6 o livello di presentazione
Definisce le modalità per interpretare e modificare i
dati ricevuti in modo da presentarli in forma idonea e comprensibile sul
terminale utente.
Protocollo di livello 7 o livello di applicazione
Definisce le procedure, gli archivi e i pacchetti software
applicativi che l'utente può utilizzare anche se fisicamente allocati su altri
terminali di rete
Architettura dei livelli del
modello ISO/OSI.
In pratica, ci sono molti altri modi di
suddividere ed eseguire i controlli necessari perché si possa stabilire una
comunicazione tra computer. Il modello a sette livelli è utile specialmente ai
livelli più bassi, caratterizzati da standard di protocollo più stabili.
Errori
Nella maggior parte dei casi, gli esseri
umani riescono facilmente a compensare gli eventuali errori di trasmissione del
linguaggio. Una conversazione tra due persone, ad esempio, è possibile anche quando
solo il 30% del contenuto informativo arriva a destinazione intatto. Per i
computer non è così: un errore di trasmissione può compromettere un intero dialogo.
Per questa ragione, il controllo e la prevenzione degli errori sono un
requisito fondamentale per qualsiasi sistema di trasmissione dati.
Molto spesso il numero degli errori di
trasmissione viene ridotto aggiungendo ai pacchetti contenenti i dati da
trasmettere apposite combinazioni supplementari di bit, adibite al rilevamento
degli errori. Il modo più semplice di realizzare un simile sistema consiste nel
collocare un bit di parità
in ogni pacchetto, cioè un singolo carattere numerico che permette di
verificare che il numero di 1 all'interno di una sequenza di informazioni sia
sempre pari (o sempre dispari, a seconda dei casi). Si tratta di un modo
efficace per individuare singoli errori, ma non è di alcuna utilità nel caso in
cui in una stessa sequenza siano presenti 2 (o multipli di 2) bit errati.
Normalmente si impiegano tecniche più
complesse basate su calcoli matematici, che permettono di individuare vari tipi
di errori. Tecniche di correzione più sofisticate richiedono l'impiego di una
percentuale più elevata di bit, ma sono estremamente efficaci nel ridurre quasi
completamente gli errori di trasmissione, eliminando perciò il rischio di dover
ritrasmettere interi pacchetti di dati per la mancanza di un solo bit.
Suddivisione dei
protocolli
I protocolli si distinguono in due grandi
categorie:
COP (Character Oriented Protocol = PROTOCOLLI
ORIENTATI AL CARATTERE)
BOP (Bit Oriented Protocol = PROTOCOLLI
ORIENTATI AL BIT)
Protocolli orientati
al carattere
I
protocolli orientati al carattere si possono suddividere a loro volta in :
La
trasmissione si dice asincrona perché l'intervallo temporale tra il bit di stop
di un carattere e il bit di start del carattere successivo è indefinito.
1 1 1
1
Nei
protocolli sincroni sono assenti i bit di start e stop e la sincronizzazione
del messaggio è affidata a particolari caratteri di sincronismo (SYN) inviati
all'inizio di ciascun blocco.
L'unità
fondamentale di trasmissione è detta trama e il numero di bit che la costituisce
dipende dal protocollo. Il protocollo può essere orientato al carattere o al
bit.
Si descrivono i protocolli sincroni più utilizzati.
La trama è
costituita da un insieme di byte, circa un centinaio, che contengono il messaggio
da trasmettere ed i caratteri di controllo.
Nella
tabella si mostra la struttura della
trama BSC.
Trama del
protocollo BSC
I protocolli
BSC sono classificati in BSC1, BSC2 e BSC3 in funzione della rete utilizzata.
Il BSC1 è
utilizzato su rete dedicata punto-punto, il BSC2 su rete commutata punto-punto
mentre i BSC3 su rete multipunto.
I codici
binari impiegati sono : il codice ASCII (American Standard Code for
Information Interchange), il codice EBCDIC (Extend Binary Coded Decimal
Interchange Code) e il codice SBT (Six Bit Transcode), derivato dall'ASCII è
usato dall'IBM.
Il più
usato è il codice ASCII.
La trama
di un protocollo BSC può essere di controllo se contiene solo caratteri
per il controllo del collegamento o informativa se contiene anche il
testo del messaggio da trasmettere.
I
caratteri di controllo sono fondamentali per stabilire il sincronismo di
trasmissione, fornire l'indirizzo del terminale ricevente in un collegamento
multipunto, aprire e chiudere il collegamento, verificare gli errori di
trasmissione, ecc. Nella tabella seguente si riportano i caratteri di controllo
insieme al loro significato:
caratteri
di controllo per il protocollo BSC
Tipo carattere |
Carattere |
Codice esadecimale |
Commento |
Sincronismo |
PAD |
55 |
Sincronismo di carattere. |
Interrogazione |
ENQ(Enquiry) |
05 |
Richiesta di trasmissione.
|
Controllo |
DLE |
10 |
Indica che il carattere successivo non è un dato ma un carattere di
controllo. |
Risposta |
ACK0 |
10 0 |
Segnali di riconoscimento inviati alternativamente dal ricevitore. Sono
codificati con DLE seguito da 0 per ACK0 e DLE seguito da 1 per ACK1. |
|
NAK(Negative ACK) |
15 |
Risposta negativa del ricevitore. |
|
WAK (Wait ACK) |
10 B3 |
Il ricevitore non è momentaneamente pronto a ricevere. WAK è formato da
DLE seguito da 3B. |
|
RVI (Reverse Interrupt) |
10 3C |
Il ricevitore informa il trasmettitore che ha un messaggio ad alta
priorità da trasmettere. |
Testo |
STX(Start of Text) |
82 |
Inizio del testo. |
|
SOH (Start Of Heading) |
81 |
Inizio dell'intestazione. |
|
ETB (End Trasmission Block)
|
17 |
File del blocco. |
|
ITB (Intermediate Trasm. Block) |
9F |
Fine del blocco intermedio.
|
|
ETX (End of Text) |
03 |
Fine del testo. |
|
EOT(End Of trasmission) |
84 |
Fine della trasmissione. |
Controllo errori |
BCC (Block Character Check) |
|
Blocco di caratteri per la rivelazione degli errori. |
Nel caso di
collegamento punto-punto, la procedura di colloquio prevede che il trasmettitore
invii una sequenza di controllo costituita da caratteri di sincronismo e da
quello di ENQ per la richiesta di trasmissione.
In genere
i due DTE possono essere sia trasmettitore che ricevitore. Nel caso in cui entrambi
i dispositivi richiedano contemporaneamente di trasmettere (contesa) uno dei
due DTE assume il ruolo di stazione primaria e l'altro il ruolo di
stazione secondaria.
In caso di
contesa la stazione primaria ripete l'invio di ENQ mentre la stazione
secondaria deve rinunciare.
Se il
ricevitore è pronto ad acquisire i dati risponde con ACK, altrimenti invia un
carattere NAK. Il trasmettitore invia dei caratteri di controllo sul testo
(STX, SOH) e successivamente il messaggio ed i caratteri di controllo sugli
errori.
Se il
blocco contiene errori il ricevitore risponde con NAK e il trasmettitore ripete
l'inoltro del blocco. La ripetizione della trasmissione può avvenire più volte.
Il
collegamento ha termine con il carattere EOT.
L'efficienza del protocollo BSC non è molto
elevata per la presenza di un alto numero di caratteri di controllo e per il
tipo di trasmissione che è half-duplex.
ESEMPIO DI
PROCEDURA BSC SU LINEA PUNTO-PUNTO
ENQ
SOH
STX
Procedura BSC su linea multipunto
I protocolli orientati al
carattere sono applicabili anche alle linee multipunto a comando centralizzato
nelle quali una stazione, detta primaria (SP), governa tutte le altre, dette secondarie
(SS). Queste ultime sono identificate da un indirizzo, costituito da uno o più
caratteri:
Linee
multipunto con indirizzi delle stazioni secondarie ad un livello
Le stazioni secondarie sono in condizioni di attesa, mentre la stazione primaria ha la facoltà di effettuare chiamate selettive per trasmettere dati ad una qualsiasi stazione secondaria, o di abilitare ciclicamente alla trasmissione le varie stazioni secondarie. In fase di trasmissione dati si stabilisce invece un collegamento temporaneo punto-punto tra la SP e la SS interessata mentre le altre stazioni sono neutre, cioè come se non esistessero.
La gestione delle SS da parte
della SP è effettuata con la tecnica della interrogazione selettiva nota con il
termine di polling.
La stazione primaria ha una
tabella di interrogazione (polling list) in cui è indicata la successione
secondo cui le stazioni secondarie devono essere interrogate. Seguendo questa
lista la SP invia delle sequenze di caratteri contenenti ciascuna il carattere
di ENQ e l’indirizzo di una delle stazioni secondarie allacciate alla rete
multipunto; quando l’unità di controllo di una di queste stazioni riconosce il
proprio indirizzo, risponde automaticamente, per informare la SP se essa ha, o
non ha, dati da trasmettere. In caso negativo la SP prosegue il polling,
continuando ad inviare la serie di indirizzi delle stazioni secondarie; in caso
affermativo, invece, il polling viene interrotto e la stazione SS attivata
può effettuare la trasmissione.
Per quanto riguarda la possibilità
della stazione primaria di trasmettere dati verso una qualsiasi stazione
secondaria, la tecnica adottata è quella dell’indirizzamento (addressing)
consistente nel far precedere il testo del messaggio che la SP deve inviare ad
una determinata SS, da una sequenza
contenente l’indirizzo della SS interessata.
Protocolli orientati
al bit
COP
|
BOP
|
1) Il collegamento non può essere gestito in full-duplex
(anche se il circuito dati lo permetterebbe)
|
1) E’ possibile il funzionamento sia in half-duplex che
in full-duplex
|
2) Le informazioni di servizio non possono essere inviate
contemporaneamente ai messaggi dati
|
2) I messaggi possono contenere sia i dati che le
informazioni di servizio.
|
3) E’ necessaria una sequenza di accettazione in risposta
ad ogni blocco trasmesso
|
3) Più trame possono essere trasmesse in sequenza senza
richiedere un avviso di accettazione per ciascuna di esse
|
4) Il controllo di validità (BCC) si applica soltanto ai
blocchi di testo o di intestazione e non alle sequenze di supervisione.
|
4) Tutte le trame, anche se prive di dati, sono protette
dagli errori di trasmissione da una sequenza di FCS (Frame Chec Sequenze).
|
5) Il protocollo necessita di un gran numero di caratteri
di controllo, alcuni dei quali hanno significato diverso a seconda dello
stato dei collegamenti
|
5) Tutte le trame hanno un formato unico, con un solo
delimitatore di inizio o di fine (denominato flag).
|
6) La trasmissione carattere per carattere richiede
particolari accorgimenti per realizzare la trasparenza dei dati rispetto al
codice impiegato e al contenuto informativo.
|
6) Il
trasferimento dell’informazione si effettua senza alcuna interpretazione del
contenuto, ciò assicura una totale trasparenza dei dati.
|
Il
protocollo HDLC (High Data Link Control) è un protocollo sincrono di 2° livello
orientato al bit nel quale la posizione del singolo bit fornisce informazioni
sul collegamento.
E'
impiegato per trasmissioni half-duplex e full-duplex e risulta più efficiente
del BSC poiché richiede un minor numero di caratteri di controllo ed una più
semplice gestione degli errori.
Nella
tabella si mostra la struttura tipica di una trama HDLC.
Il campo
flag F, con codice binario 01111110, definisce l'inizio e la fine della
trasmissione.
Il campo
A, ad 8 bit, costituisce l'indirizzo del terminale destinatario.
Il campo
C, ad 8 o 16 bit, consente il controllo della trasmissione. Ogni bit assume un
ruolo ed un significato ben preciso.
Il campo
I, è quello dei dati da trasmettere ed è organizzato in byte il cui numero
dipende, in pratica, dall'algoritmo per la rivelazione degli errori.
Il campo
FCS, a 16 bit, consente il controllo degli errori realizzato, normalmente, con
codice CRC-16.
Trama
(FRAME) del protocollo HDLC