GESTIONE ERRORI:
CHECKSUM
Livello 4 Trasporto
La definizione di errore in un sistema
di comunicazione a codifica binaria.
Un errore in un sistema di
comunicazione a codifica binaria si
verifica quando viene trasmesso dal
controllore del canale un bit e dal
decodificatore del ricevitore lo stesso
bit viene stimato con il valore
opposto.
Le tecniche a ridondanza di blocco
Molto utilizzate perché facilmente
implementabili sia via HW che via SW.
Si basano sull’aggiunta di simboli
calcolati valutando un blocco di parole.
Si prefiggono l’obiettivo di ottenere la
più alta probabilità di rilevare
l’eventuale errore introducendo la minor
ridondanza.
La somma di controllo (checksum)
La parola di controllo si calcola
effettuando la somma algebrica modulo 2
di tutti i codici delle singole parole.
Il gruppo originario viene trasmesso
accodandovi la checksum.
Il ricevitore ripete la stessa operazione
del trasmettitore e confronta la parola di
controllo ricevuta con quella calcolata.
La costruzione della checksum
La checksum è utilizzata per
trasmissioni su brevi distanze.
I byte da trasmettere vengono suddivisi
in gruppi.
Si calcola l’OR esclusivo (XOR) per
ciascun gruppo di bit.
Il risultato di questa operazione è un
byte che viene trasmesso in coda.
La rilevazione dell’errore
Se la parola di controllo ricevuta e
quella calcolata sono diverse allora è
occorso un errore sicuramente.
Se la parola di controllo ricevuta e
quella calcolata sono uguali allora è
probabile che nessun errore sia occorso.
La non correzione dell’errore
Se ogni carattere è costituito da n bit
allora sarà trasmessa una ulteriore
configurazione di n bit
indipendentemente dalla lunghezza del
messaggio.
Questa tecnica non consente
l’individuazione dell’errore.
XOR
a
b
a XOR b
1
1
0
1
0
1
0
1
1
0
0
0
Un primo esempio
La checksum si ottiene applicando la
tabella di verità dell’XOR (OR esclusivo)
per cui risulta:
110101+
000111=
110010
Un secondo esempio: nessun errore!
Dati trasmessi
00110010
01010111
00001111
10110011
11110111
00000001
11001100
01101101
10001110
Dati ricevuti
00110010
01010111
00001111
10110011
11110111
00000001
11001100
01101101
10001110
Un terzo esempio: probabile errore!
Dati trasmessi
00111100
01010101
01110000
11001100
00011111
11001010
00000010
01101001
01101011
Dati ricevuti
00111100
01010100
01111000
01001100
00011111
11001010
00000010
01101001
11100010
Un primo esercizio
Verificare che la checksum del seguente
blocco 10101010 00001111 00110011
01111110 11100111 00000001
01100110 vale 01101000.
Un secondo esercizio
Codificare la propria data di nascita in binario
su otto bit (un byte) per ciascuna cifra
decimale e aggiungere il byte di ridondanza
secondo la tecnica della checksum.
Suggerimento: consultare la tabella di
conversione ASCII (American Standard
Code Information Interchange).
Codice ASCII
Il codice ASCII viene rappresentato in una
tabella Ascii con 128 caratteri (7bit). Il codice
ASCII esteso e la sua relativa tabella estesa
hanno una capacità di 256 caratteri (8bit).
L'ASCII standard è un codice a 7bit che inserito in
un byte, ne rappresenta la parte meno significativa,
da 0 a 128 appunto, con l'ottavo bit sempre a zero. I
128 caratteri ASCII rappresentati sono suddivisi in
caratteri di controllo (i vari NULL CR Lf e seguenti) e
96 caratteri stampabili ( i caratteri alfanumerici).
L’ottavo bit (meno significativo) è il primo
partendo da destra!
Codice ASCII standard
Dec
Simbolo
32
Codice binario
48
0
0011 0000
0010 0000
49
1
0011 0001
33
!
0010 0001
50
2
0011 0010
34
“
0010 0010
51
3
0011 0011
35
#
0010 0011
52
4
0011 0100
36
$
0010 0100
53
5
0011 0101
37
%
0010 0101
54
6
0011 0110
38
&
0010 0110
55
7
0011 0111
39
‘
0010 0111
56
8
0011 1000
40
(
0010 1000
57
9
0011 1001
41
)
0010 1001
58
:
0011 1010
42
*
0010 1010
59
;
0011 1011
43
+
0010 1011
60
<
0011 1100
44
,
0010 1100
61
=
0011 1101
45
-
0010 1101
62
>
0011 1110
46
.
0010 1110
63
?
0011 1111
47
/
0010 1111
64
@
0100 0000
Codice ASCII standard
Dec
Simbolo
65
A
66
Codice binario
Dec
Simbolo
Codice binario
0100 0001
78
N
0100 1110
B
0100 0010
79
O
0100 1111
67
C
0100 0011
80
P
0101 0000
68
D
0100 0100
81
Q
0101 0001
69
E
0100 0101
82
R
0101 0010
70
F
0100 0110
8
S
0101 0011
71
G
0100 0111
84
T
0101 0100
72
H
0100 1000
85
U
0101 0101
73
I
0100 1001
86
V
0101 0110
74
J
0100 1010
87
W
0101 0111
75
K
0100 1011
88
X
0101 1000
76
L
0100 1100
89
Y
0101 1001
77
M
0100 1101
90
Z
0101 1010
Codice ASCII standard
Dec
Simbolo
Codice binario
91
[
0101 1011
92
\
0101 1100
93
]
0101 1101
94
^
0101 1110
95
_
0101 1111
96
‘
0110 0000
123
{
0111 1011
124
|
0111 1100
125
}
0111 1101
126
~
0111 1110
127
0111 1111
Codice ASCII standard
Simbolo
Codice binario
Dec
Simbolo
Codice binario
97
a
0110 0001
110
n
0110 1110
98
b
0110 0010
111
o
0110 1111
99
c
0110 0011
112
p
0111 0000
100
d
0110 0100
113
q
0111 0001
101
e
0110 0101
114
r
0111 0010
102
f
0110 0110
115
s
0111 0011
103
g
0110 0111
116
t
0111 0100
104
h
0110 1000
117
u
0111 0101
105
i
0110 1001
118
v
0111 0110
106
j
0110 1010
119
w
0111 0111
107
k
0110 1011
120
x
0111 1000
108
l
0110 1100
121
y
0111 1001
109
m
0110 1101
122
z
0111 1010
Dec
Scarica

checksum