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 :

 

Protocolli asincroni

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.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


                                              

                                                 1         1        1      1

 

 

 


Protocolli sincroni

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.

Protocollo sincrono BSC

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  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
SYN

55
16

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
10 1

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.

 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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Linee multipunto con indirizzi delle stazioni secondarie a due livelli

 

 

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

I protocolli orientati al bit (BOP) furono introdotti agli inizi degli anni ’70 in quanto quelli orientati al carattere non erano più idonei a far fronte alle nuove esigenze sorte per le applicazioni di tipo interattivo.

La maggior efficienza di questi protocolli rispetto ai precedenti viene riassunta dalla seguente tabella:

 

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.

Esistono vari tipi di protocolli orientati al bit, ma il più diffuso è l’HDLC normalizzato dall’ISO. Molto simili ad esso sono i protocolli SDLC definito dall’IBM e l’ADCCP normalizzato dall’ANSI.

Protocollo sincrono HDLC

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