TRASMISSIONE DATI (6/6)
6. Protocolli di trasmissione
Fissate le interfacce elettrica e meccanica, ad esempio
la RS-232, ed il canale di comunicazione, ad esempio la linea privata in
cavo, in fibra ottica o la linea telefonica commutata o dedicata, resta
da stabilire le modalità di trasferimento dei dati in ordine alla
velocità di trasmissione, al numero di bit dei dati, alla presenza
di bit di parità, di bit di stop, ai codici di correzione degli
errori, alle procedure di inizializzazione, al sincronismo ed a tutta una
serie di informazione che il trasmettitore deve inviare al ricevitore affinché
quest'ultimo sappia come sono organizzati i dati ricevuti e da chi li ha
ricevuti.
La risposta a questi interrogativi viene fornita dai protocolli di trasmissione noti anche come protocolli di secondo livello o protocolli di linea, tenendo conto dei livelli gerarchici previsti dal modello ISO/OSI.
Possiamo affermare che i protocolli di trasmissione rappresentano le regole che i terminali di elaborazione devono rispettare affinché la ricezione dei dati avvenga correttamente.
I protocolli utilizzati si possono suddividere in due categorie :
I protocolli asincroni start-stop consentono la trasmissione per singolo carattere senza che sia definito il tempo tra due caratteri successivi. Ogni bit del carattere deve, comunque, durare un tempo prefissato detto bit-time.
Ogni carattere è costituito da un bit di start che indica l'inizio della trasmissione del carattere, dal dato vero e proprio che può essere costituito da 7 o 8 bit espresso in un particolare codice come, ad esempio il codice ASCII a 7 bit, il codice ASCII esteso a 8 bit o il codice EBCDIC a 8 bit, un eventuale bit di parità che segnala la parità pari o dispari del dato per il controllo degli errori, uno o due bit di stop.
La correttezza della trasmissione può essere valutata misurando, al ricevitore, la durata dei bit di stop.
Se essa non corrisponde a quanto previsto si ha un errore di framming.
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.
Il protocollo asincrono XMODEM è uno dei più vecchi e lenti protocolli per il trasferimento dei file e funziona correttamente per velocità fino a 2400bps.
Esso divide il file da trasmettere in blocchi ciascuno dei quali è costituito da 128 byte ed è preceduto e seguito da caratteri di controllo. Nella tabella 12 si mostra la struttura dei dati in una trasmissione XMODEM organizzata in 5 campi :
Tabella 12
La procedura di trasmissione tra un DCE trasmettitore 1 e un DCE ricevitore 2 si avvale di messaggi di conferma :
All'inizio della comunicazione il ricevitore invia al trasmettitore, ripetutamente ogni 10 secondi, il carattere ASCII 15H (NAK= Negative acknowledge) per informare della disponibilità alla ricezione. Il trasmettitore, come risposta al NAK, invia il blocco strutturato come mostrato nella tabella 12 . Se la ricezione avviene correttamente, il DCE 2 risponde col carattere ASCII 06H (ACK= Acknowledge) per informare dell'avvenuta ricezione. Il ricevitore risponde con NAK se ha individuato un errore e invita il DCE 1 a ritrasmettere nuovamente il medesimo blocco.
Alla fine della trasmissione il DCE 1 invia un carattere ASCII 04H (EOT=End of Trasmission) col quale informa il DCE 2 la fine del file.
Il ricevitore riconosce il carattere EOT e chiude la comunicazione inviando un ACK.
In fig.40 si mostra il diagramma temporale dell'inoltro
di tre blocchi con errore nel secondo blocco.
Il protocollo YMODEM è più efficiente dell'XMODEM.
Esso trasferisce blocchi di 1024byte (1Kbyte), rivela gli errori col metodo del CRC piuttosto che con quello del Checksum e lavora in modo efficiente per velocità fino a 9600bps.
Il protocollo, inoltre, supporta i caratteri jolly * e ? consentendo il trasferimento di file multipli.
La ricezione del file o dei file (download) deve essere eseguita manualmente.
La connessione deve essere realizzata con dati a 8 bit.
E' uno dei protocolli più veloci ed è impiegato per velocità superiori a 9600bps.
Una delle più importanti prestazioni consiste nel ripristino del trasferimento dati dopo una interruzione ; tale ripristino avviene automaticamente ed esattamente dal punto di interruzione e quindi non è necessario procedere alla ritrasmissione dell'intero file.
Il protocollo, inoltre, supporta i caratteri jolly * e ? consentendo il trasferimento di file multipli.
La ricezione del file o dei file (download) non deve essere eseguita manualmente. I software che lo utilizzano rilevano una trasmissione di tipo Z-MODEM ed attivano la ricezione automaticamente.
La connessione deve essere realizzata con dati a 8 bit.
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.
Il protocollo sincrono BCS ( Binary Syncronous Communications) è un protocollo di 2° livello orientato al carattere introdotto dalla IBM ed utilizzato in trasmissioni half-duplex con velocità comprese tra 1200 e 19200 bps.
La trama è costituita da un insieme di byte, circa un centinaio, che contengono il messaggio da trasmettere ed i caratteri di controllo.
Nella tabella 13 si mostra la struttura della trama
BSC.
Tabella 13
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 14 si riportano i caratteri di controllo
insieme al loro significato.
Tabella 14
caratteri di controllo per il protocollo BSC
Tipo carattere |
Carattere |
Codice esadecimale |
Commento |
Sincronismo | PAD SYN |
55 |
Sincronismo di carattere. Sincronismo di bit. |
Interrogazione | ENQ(Enquiry) |
05 |
Richiesta di trasmissione. |
Controllo | DLE (Data Link escape) |
10 |
Indica che il carattere successivo non è un dato ma un carattere di controllo. |
Risposta | ACK0 ACK1 (Acknowledgement) |
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.
Esempio : codice CRC-16. |
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.
Nel caso di collegamento multipunto (protocollo BCS3), l'elaboratore centrale, mediante una tecnica di interrogazione ciclica (polling) individua il terminale con cui collegarsi.
In questo caso il protocollo di comunicazione deve contenere anche l'indirizzo del destinatario.
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.
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 15 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.
Tabella 15
Trama del protocollo HDLC