CHƯƠNG 3
BẢO VỆ CHỐNG SAI TRONG
TRUYỀN SỐ LIỆU
GV: Th.s Lương Hoài Thương
1
Tổng quát
Mạng phải truyền dữ liệu một cách chính xác, nếu không bảo đảm
được tính năng này thì không sử dụng được.
Trong quá trình truyền thì bị tác động bởi nhiễu (điện, từ,…), nên hệ
thống cần có độ tin cậy tốt với cơ chế phát hiện và sửa lỗi.
Việc phát hiện và sửa lỗi được thiết lập ở lớp kết nối dữ liệu hay lớp
vận chuyển trong mô hình OSI.
GV: Th.s Lương Hoài Thương
2
Tổng qt
Bảo vệ chống sai trong truyền số liệu nhằm
Bảo vệ thông tin phát đi để chống sai do đường dây gây nên. Để
giải quyết ta đặt giữa nguồn phát và thu một thiết bò mã hóa và giải
mã.
Bảo mật: ta dùng những mã khóa đặc biệt mà chỉ có bên cần thu
biết khóa mã mới giải mã và thu được thông tin.
Tổng qt
Các thiết bò mã hóa và giải mã có hai loại :
Loại thiết bò giải mã đơn giản chỉ phát hiện sai, mà không tự sửa
được sai, khi đó nó sẽ yêu cầu bên phát phát lại (ARQ)
Loại thiết bò giải mã phát hiện sai và tự sửa sai một hoặc hai lỗi sai:
như mã khối tuyến tính, mã Hamming, mã vòng,…
Lỗi
Quá trình phát hiện sai
Parity dò 1 bit sai
Parity chẵn: (N + P) phải là một số chẵn
Parity lẻ: (N + P) phải là một số lẻ
N: tổng số bit 1 có trong dữ liệu cần kiểm
tra lỗi
P: giá trị của bit parity, là 0 hay 1 sao cho
tổng số bit 1 (N+P) luôn là một số chẵn
(lẻ) tùy theo phương pháp parity chẵn hay
lẻ tương ứng
Data
( ASCII )
h
e
B1
1
1
B2
0
0
B3
0
0
Data
B4
0
0
B5
0
0
B6
1
0
B7
1
1
Parity bit
(odd )
0
1
Parity dò 2 bit sai
Để dò ra 2 bit sai => thực hiện đồng thời phép kiểm tra parity tại bít
chẳn và bit lẽ
Parity dò một chuỗi bit sai
Kiểm tra khối – BSC (Block Sum Check)
Sử dụng parity hàng và cột
Data
H
E
L
L
O
BCC
(odd)
Start
1
1
1
1
1
1
B1
0
1
0
0
1
1
B2
0
0
1
1
1
0
B3
0
0
0
0
0
1
Data
B4
0
0
0
0
0
1
B5
0
0
0
0
0
1
B6
0
0
0
0
0
1
B7
1
1
1
1
1
0
Parity
(even)
1
0
0
0
1
1
Stop
0
0
0
0
0
0
Dò tìm được tất cả các lỗi sai một số lẻ bit và hầu hết các lỗi sai một số chẵn bit.
Không dò được lỗi sai một số chẵn bit xảy ra đồng thời trên cả hàng và cột.
Kiểm tra dư thừa theo chu kỳ - CRC Cyclic Redundancy Check
Nguyên lý
k-bit message
Bên phát tạo ra chuỗi n bit FCS (Frame Check Sequence) sao cho frame
gởi đi (k+n bit) chia hết cho 1 số xác định trước
Bên thu chia frame nhận được cho cùng 1 số và nếu không có phần dư
thì có khả năng không có lỗi
Số học modulo 2
• Cộng nhị phân không nhớ
• Phép nhân 2^n thì dời số đó
sang trái n bit và thêm n bit 0
vao phải
• Phép trừ xem như phép
cộng
Xác định mã CRC dùng thuật toán Mod-2
Goi T = (k+n) bit là khung thông tin của dũ liệu phát, với n < k
M = k bit dữ liệu, k bit đầu tiên của T
F = n bit cua khung FCS, n bit cuối của T
P = (n+1) bit, số chia trong phép toán
Số T được tạo ra bằng cách dời số M sang trái n bit rồi cộng với
số F : T = 2nM + F
Chia số 2nM cho P ta được :
Phép chia số nhị phân nên số dư luôn nhỏ hơn số chia 1 bit nên
lấy số dư này thay cho F: T = 2nM + R
CRC
Ví dụ 2 – tìm mã CRC
Cho
M = 1010001101 (10 bit)
P = 110101
(6 bit)
Dùng phép biễu diễn đa thức
Dùng phép biễu diễn đa thức
Phát hiện lỗi mã CRC
P
Dài hơn 1 bit so với FCS mong muốn
Được chọn tùy thuộc vào loại lỗi mong muốn phát hiện
Yêu cầu tối thiểu: msb và lsb phải là 1
Biểu diễn lỗi
Error=nghịch đảo bit Tr = T + E
T: frame được truyền
Tr: frame nhận được
E: error pattern với 1 tại những vị trí lỗi xảy ra
Error không bị phát hiện if Tr chia hết cho P
Các lỗi được phát hiện
Tất cả các lỗi bit đơn
Tất cả các lỗi kép nếu P có ít nhất 3 toán hạng
Một số lẻ lỗi bất kỳ nếu P chứa 1 thừa số (X+1)
Bất kỳ lỗi chùm nào mà chiều dài của chùm nhỏ hơn chiều dài FCS
Hầu hết các lỗi chùm lớn hơn
Một số đa thức sinh thông dung
4 P được sử dụng rộng rãi
CRC-12 = X12 + X11 + X3 + X2 + X + 1
CRC-16 = X16 + X15 + X2 + 1
16-bit FCS
8-bit characters
US
CRC-CCITT = X16 + X12 + X5 +1
12-bit FCS
6-bit characters
Europe
CRC-32 = X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 + X8 + X7 + X5 + X4
+ X2 + X + 1
32-bit FCS
Point-point synchronous transmission, DoD apps
Mạch tạo mã CRC
Message
+
+
FCS0
P1
+
E
+
FCS1
P2
X
+
Pn - 2
X
D
P = 111011
+
FCS2
C
+
+
FCSn - 2
Pn - 1
X
B
FCSn - 1
X
+
A
Kiểm tra lổi trên mạch thiết kế
M=1010001101
P=110101
1
A
B
C
D
E
Initial
0
0
0
0
0
Step 1
0
0
0
0
1
1
Step 2
0
0
0
1
0
0
Step 3
0
0
1
0
1
1
Step 4
0
1
0
1
0
0
Step 5
1
0
1
0
0
0
Step 6
1
1
1
0
1
0
Step 7
0
1
1
1
0
1
Step 8
1
1
1
0
1
1
Step 9
0
1
1
1
1
0
B
Step 10
1
1
1
1
1
1
Step 11
0
1
0
1
1
0
+
Step 12
1
0
1
1
0
0
Step 13
1
1
0
0
1
0
Step 14
0
0
1
1
1
0
Step 15
0
1
1
1
0
0
+
E
D
x2
+
C
x4
x5
A
1010001101
FCS = 01110
Input
Bộ tạo CHECKSUM
Bên phát thực hiện các bước như sau
Bộ tạo checksum sẽ chia dữ liệu thành k phần, mỗi phần n bit
(8, 16).
Các phân đoạn này được cộng lại.
Lấy bù 1 của kết quả cộng. Giá trị này được gắn vào đuôi của
dữ liệu gốc và được gọi là trường checksum.
Checksum được truyền cùng với dữ liệu.
Bộ tạo CHECKSUM
Bộ tạo CHECKSUM
Máy thu thực hiện các bước như sau
Bộ kiểm tra checksum sẽ chia các đơn vị dữ liệu thành k phần
mỗi phần n bit
Cộng các phần trên, được tổng (Sum).
Lấy bù 1 của tổng.
Nếu kết qủa lấy bù là zêrô thì dữ liệu thu không bị sai, nguợc lại
dữ liệu bị sai.
Bộ tạo CHECKSUM