Documentos de Académico
Documentos de Profesional
Documentos de Cultura
III - 1
CHƯƠNG 3
Tin tức bao gồm các văn bản, số liệu, hình ảnh . . . . cần được mã hóa bằng tập hợp các
số nhị phân trước khi được chuyển đổi thành các tín hiệu số để truyền đi
Một yếu tố quan trọng trong hệ thống thông tin là độ chính xác, thiếu yếu tố này hệ
thống xem như không có giá trị sử dụng, nên kèm theo bản tin thường phải thêm vào các từ
mã có khả năng phát hiện lỗi và thậm chí sửa được lỗi.
Ngoài ra, nếu số lượng bit dùng để mã hóa cùng một đối tượng càng ít thì với cùng
vận tốc truyền, lượng thông tin truyền của hệ thống càng lớn mà lại hạn chế được khả năng
xảy ra lỗi. Do đó việc giảm số lượng bit dùng mã hóa cũng là một vấn đề cần được quan tâm.
Chương này bàn đến một số phương pháp mã hóa dữ liệu phổ biến để tạo các loại mã
có khả năng phát hiện lỗi, phát hiện và sửa lỗi, các loại mã nén.
3.1.1 Mã Baudot
Là bộ mã nhị phân dùng 5 bit để biểu diển chữ số và một số dấu hiệu.
Bảng 3.1 Bộ mã Baudot
Mã Chữ Dấu/Số Mã Chữ Dấu/Số
_____________________________________________________________________________________________________
Nguyễn Trung Lập Truyền dữ liệu
___________________________________________ Chương 3 Các loại mã trong truyền dữ liệu
III - 2
110001001101 A - 11101 Q 1
110100101000 B ? 01010 R 4
010110010110 C : 10100 S BELL
010101100110 D $ 00001 T 5
101111001001 E 3 11100 U 7
0011100110 F ! 01111 V ;
00011 G & 11001 W 2
01101 H # 10111 X /
I 8 10101 Y 6
J ' 10001 Z "
K ( 11111 LTRS LTRS
L ) 11011 FIGS FIGS
M . 00100 SPC SPC
N , 00010 CR CR
O 9 01000 LF LF
P 0 00000 NULL NULL
Với n = 5 chỉ có 25 = 32 mã khác nhau, không đủ để biểu diển các ký tự chữ và số nên
một số mã phải biểu thị cả hai và chúng được phân biệt bằng cách kèm theo ký tự FIGS hoặc
LTRS ở trước.
Thí dụ: mã của đoạn văn NO. 27 có dạng như sau :
LTRS N O FIGS . SPC 2 7
11111 00110 00011 11011 00111 00100 11001 11100
Khi dùng mã Baudot để truyền bất đồng bộ, số bit stop luôn luôn là 1,5
3.1.2 Mã ASCII
Là bộ mã thông dụng nhất trong truyền dữ liệu. Mã ASCII dùng số nhị phân 7 bit nên
7
có 2 = 128 mã, tương đối đủ để diễn tả các chữ, số và một số dấu hiệu thông dụng. Từ điều
khiển dùng trong các giao thức truyền thông thường lấy trong bảng mã ASCII.
Khi truyền bất đồng bộ dùng mã ASCII số bit stop là 1 hoặc 2.
Bảng 3.2 trình bày mã ASCII cùng các từ điều khiển.
* Từ điều khiển trong văn bản:
BS (Back space): chỉ cơ chế in hay con trỏ được dời lui một vị trí. Nó có thể được
dùng để in 2 ký tự ở một vị trí (thường dùng để gạch dưới) hay để in đậm một ký tự (in 1 ký
tự 2 lần ở cùng vị trí). Trên màn hình (CRT) chữ sau sẽ thay cho chữ trước.
HT (Horizontal Tab): chỉ cơ chế in hay con trỏ được dời tới vị trí tab kế cận hay vị trí
dừng.
LF (Line Feed): chỉ cơ chế in hay con trỏ được dời xuống đầu dòng kế.
VT (Vertical Tab): chỉ cơ chế in hay con trỏ được dời đến dòng kế của chuỗi dòng đã
đánh dấu.
FF (Form Feed): chỉ cơ chế in hay con trỏ được dời đến điểm bắt đầu của trang (màn
ảnh) sau
CR (Cariage Return): chỉ cơ chế in hay con trỏ được dời đến điểm bắt đầu trên cùng
một dòng
Bảng 3.2 Mã ASCII
Bit 765→ 000 001 010 011 100 101 110 111
Bit 4321↓ 0 1 2 3 4 5 6 7
_____________________________________________________________________________________________________
Nguyễn Trung Lập Truyền dữ liệu
___________________________________________ Chương 3 Các loại mã trong truyền dữ liệu
III - 3
* Information separator
FS (File Separator), GS (Group Separator), RS (Record Separator), US (United
Separator): Dùng cho sự phân cách. Chữ đầu chỉ thành được phân cách (F: File, G: Group, R:
Record (bảng ghi), U: Unit (đơn vị))
* Miscellaneous (Linh tinh)
NUL (Null): ký tự rổng, dùng lấp đầy khoảng trống khi không có dữ liệu
BEL (Bell): dùng khi cần báo sự lưu ý.
SO (Shift Out): chỉ các tổ hợp mã theo sau được thông dịch bởi ký tự ngoài tập hợp ký
tự chuẩn cho tới khi gặp từ Shift In.
SI (Shift In): chỉ tập hợp mã theo sau được thông dịch bởi ký tự chuẩn.
DEL (Delete): dùng bỏ từ
SP (Space): khoảng cách từ
DLE (Data Link Escape): dùng để chỉ sự thay đổi nghĩa của các từ theo sau. Nó có thể
cung cấp một sự điều khiển phụ, hay cho phép gửi ký tự dữ liệu có một tổ hợp bit bất kỳ.
DC1, DC2, DC3, DC4 (Device Control): từ dùng cho sự điều khiển thiết bị.
CAN (Cancel): chỉ dữ liệu đặt trước nó không có giá trị, do dò được lỗi.
EM (End of Medium): chỉ sự kết thúc về mặt vật lý của một card, băng hay môi
trường khác.
SUB (Substitute): thay thế một từ bị lỗi hoặc không có giá trị
ESC (Escape) : từ tăng cường để cung cấp một mã mở rộng.
_____________________________________________________________________________________________________
Nguyễn Trung Lập Truyền dữ liệu
___________________________________________ Chương 3 Các loại mã trong truyền dữ liệu
III - 4
_____________________________________________________________________________________________________
Nguyễn Trung Lập Truyền dữ liệu
___________________________________________ Chương 3 Các loại mã trong truyền dữ liệu
III - 5
Đây là phương pháp kiểm tra đơn giản nhất, bằng cách thêm vào sau chuỗi dữ liệu
(thường là một ký tự) một bit sao cho tổng số bit 1 kể cả bit thêm vào là số chẵn (hoặc lẻ), ở
máy thu kiểm tra lại tổng số này để biết có lỗi hay không. Phương pháp đơn giản nên chất
lượng không cao, nếu số lỗi là chẵn thì máy thu không nhận ra.
- Dùng kiểm tra chẵn lẻ để dò sai hai bit:
Vì mỗi lần thực hiện kiểm tra chẵn lẻ cho phép dò ra một bit lỗi nên ta có thể nghĩ
rằng nếu thực hiện nhiều phép kiểm tra đồng thời cho phép dò được nhiều lỗi.
Thí dụ, để dò ra 2 lỗi của một chuỗi dữ liệu có thể thực hiện hai phép kiểm tra, một
với các bit chẵn và một với các bit lẻ.
Cho chuỗi dữ liệu: 01101000
Lần lượt thực hiện kiểm tra chẵn với các bit ở vị trí 1, 3, 5, 7 và các bit ở vị trí 2, 4, 6,
8. Gọi P1 và P2 là các bit kiểm tra:
P1=0+1+1+0 = 0
và P2=1+0+0+0 = 1.
Chuỗi dữ liệu phát: 01101000 01.
Máy thu dò ra lỗi khi 2 bit liên tiếp bị sai. Tuy nhiên, nếu hai bit sai đều là 2 bit chẵn
(hoặc 2 bit lẻ) thì máy thu cũng không dò ra.
Gửi Nhận
Số Bit parity Số khung Bit parity
khung của từng (hàng) của từng
(hàng) hàng 1 hàng
1 01101 1 → 2 01101 1
2 10001 0 Nhiễu tác 3 10001 0
3 01110 1 đông vào 4 01100 1*
4 11001 1 cột 4, 5 11001 1
5 01010 0 làm cho 6 01000 0*
6 10111 0 tất cả 7 10101 0*
7 01100 0 các bit = 0 8 01100 0
8 00111 1 → 9 0 0 1 0 1 1*
9 10011 1 10 10001 1*
10 11000 0 Số cột 11000 0
Số cột 12345 6 12345 6
Máy thu dò ra các khung có lỗi (các bit parity có dấu *) nhưng không xác định được
cột nào bị sai do đó phải yêu cầu máy phát phát lại tất cả các cột
- Kiểm tra khối:
Một cải tiến của kiểm tra chẵn lẻ là kiểm tra khối (Block Check Character, BCC). Bản tin
được viết thành khối và việc kiểm tra chẵn lẻ được thực hiện theo cả 2 chiều dọc (Vertical
Redundancy Check, VRC) và ngang (Longitudinal Redundancy Check, LRC)
Gọi các bit của mỗi ký tự là bij (i=1,....., n là thứ tự các bit trong ký tự ; j=1,...., m là
thứ tự của ký tự)
_____________________________________________________________________________________________________
Nguyễn Trung Lập Truyền dữ liệu
___________________________________________ Chương 3 Các loại mã trong truyền dữ liệu
III - 6
00111010
11110000
10001011
1111 11001
+ 1010 x 11
_____________________________________________________________________________________________________
Nguyễn Trung Lập Truyền dữ liệu
___________________________________________ Chương 3 Các loại mã trong truyền dữ liệu
III - 7
0101 11001
11001
101011
- Phép cộng Mod-2 được thực hiện bởi cổng EX-OR
- Phép trừ Mod-2 giống như phép cộng
- Nhân Mod-2 một số với 2n tương ứng với dời số đó n bit về bên trái và thêm
n bit 0 vào bên phải số đó, thí dụ 11001* 23 = 11001000
- Phép chia Mod-2 được thực hiện giống như phép chia thường nhưng nhớ là
phép trừ trong khi chia được thực hiện như phép cộng.
Số phải tìm R (5 bit) cho khung FCS được xác định như sau :
- Nhân M với 25 cho : 101000110100000
- Thực hiện phép chia cho P
1101010110
110101 ⏐101000110100000
110101↓⏐⏐⏐⏐
0111011⏐⏐⏐⏐
110101↓↓⏐⏐
00111010⏐⏐
110101↓↓
00111110⏐⏐
110101↓↓
00101100⏐
110101↓
0110010
110101↓
_____________________________________________________________________________________________________
Nguyễn Trung Lập Truyền dữ liệu
___________________________________________ Chương 3 Các loại mã trong truyền dữ liệu
III - 8
0001110 ← R
Ta có R = 01110, cộng với 25M, sẽ cho số T phát đi là :
T = 101000110100000 + 01110 = 101000110101110
Nếu bản tin không có lỗi T phải chia đúng cho P.
Thực hiện phép chia T/P ta thấy số dư = 0
Tóm lại, để có một khung FCS n bit , người ta phải dùng một số P có n+1 bit để tạo số
R có n bit dùng cho khung FCS. P được gọi là đa thức sinh (generator polynomial), dạng của
nó do các giao thức qui định, tổng quát P phải có bit đầu và bit cuối là bit 1.
_____________________________________________________________________________________________________
Nguyễn Trung Lập Truyền dữ liệu
___________________________________________ Chương 3 Các loại mã trong truyền dữ liệu
III - 9
Máy thu sẽ luôn luôn dò ra lỗi gồm nhiều bit và có tổng số bit lỗi là số lẻ nếu ta
chọn P(x) chia đúng cho (x+1).
@-Giả sử nhiễu làm sai một đoạn dữ liệu có chiều dài m ≤ bậc n của P(x)
Giả sử chuỗi bit sai có vị trí từ thứ i đến thứ i+m-1, E(x) có dạng:
E(x) = xi+m-1 + . . . . +xi = xi*(xm-1+ . . . +1)
E(x) x i ∗ (x m −1 + .... + 1)
=
P(x) P(x)
P(x) không là thừa số của x nên E(x) chỉ chia đúng cho P(x) khi xm-1+ . . . +1 chia
i
đúng cho P(x). Vì m ≤ n hay m-1<n nên phép chia trên không thể là phép chia đúng. Vậy
Máy thu luôn luôn dò ra lỗi nếu chuỗi dữ liệu sai có chiều dài ≤ bậc của P(x)
@-Đoạn dữ liệu sai có chiều dài m >n
_____________________________________________________________________________________________________
Nguyễn Trung Lập Truyền dữ liệu
___________________________________________ Chương 3 Các loại mã trong truyền dữ liệu
III - 10
(H 3.2 )
A B C D E Dữ liệu vào
_____________________________________________________________________________________________________
Nguyễn Trung Lập Truyền dữ liệu
___________________________________________ Chương 3 Các loại mã trong truyền dữ liệu
III - 11
Bắt đầu 0 0 0 0 0
Bước 1 0 0 0 0 1 1⎫
Bước 2 0 0 0 1 0 0⏐
Bước 3 0 0 1 0 1 1⏐
Bước 4 0 1 0 1 0 0⏐
Bước 5 1* 0* Ë1 0* Ë0 0⏐
Bước 6 1 1Ë 1 0Ë 1 0*⎬ Bản tin để gửi
Bước 7 0 1 1 1 0
1⏐
Bước 8 1 1 1 0 1
1⏐
Bước 9 0 1 1 1 1
Bước 10 1 1 1 1 1 0⏐
Bước 11 0 1 0 1 1 1⎭
Bước 12 1 0 1 1 0 0⎫
Bước 13 1 1 0 0 1 0⏐
Bước 14 0 0 1 1 1 0⎬ 5 bit 0 thêm vào
Bước 15 0 1 1 1 0 0⏐
0⎭
14444444244444443
số dư
- Trong thí dụ trên P =110101 = x5 + x4 + x2 + 1, nên mạch chứa ba cổng EX-OR ở
các vị trí tương ứng với 1, x2 và x4 (x5 ứng với thanh ghi dịch cuối cùng FFA). Đường hồi tiếp
từ x5 về x4 , x2 và 1 (x0) để thực hiện phép cộng Mod-2 với số P(x) như nói trên.
- Trong 5 bước đầu tiên, các bit có trọng số lớn của M(x). 2n xuất hiện ở ngã ra các
FFD một cách bình thường.
- Từ bước thứ 6 các kết quả phải kể đến tác dụng của cổng EX-OR, thí dụ ở bước thứ
6 ở ngõ ra E chính là cộng Mod-2 của tín hiệu vào (bit 0) và tín hiệu ngã ra A trước đó (bit 1),
tức thực hiện EX-OR hai bit 0 và 1 ta được bit 1. Ngã ra D (bit 0) EX-OR với ngã ra A (bit 1)
để được bit 1 ở ngã ra C. Ngã ra B(bit 0) EX-OR với ngã ra A (bit 1) để được bit 1 ở ngã ra
A. Trên hình vẽ các bit EX-OR với bit ở ngã ra A được đánh dấu.
Tương tự như thế, sau 15 lần dịch (bước 15), dữ liệu ở ngã ra các FF chính là mã
CRC (số dư R = 01110). Ngã ra A là MSB.
Có 4 đa thức P(x) được dùng để tạo mã CRC thông dụng:
CRC_12 = x12 +x11 + x3 + x2 + x + 1
CRC_16 = x16+x15 + x2 + 1
CRC_CCITT = x16+x12 + x5 + 1
CRC_32 = x32+ x26+ x23+ x22 + x16+ x12 + x11+ x10+ x8+ x7 + x5 + x4 + x2+ x +1
CRC_12 dùng truyền với ký tự 6 bit và khung FCS dài 12 bit.
CRC_16 & CRC_CCITT dùng truyền ký tự 8 bit và khung FCS dài 16 bit. (ở Mỹ và
Âu châu).
CRC_32 Dùng trong mạng cục bộ (LAN) và một số ứng dụng của DOD (Department
Of Defense).
3.2.3 Mã Hamming
Mã Hamming là một bước phát triển của kiểm tra chẵn lẻ và có khả năng sửa sai do
xác định được vị trí lỗi. Số lượng bit của mã Hamming tùy thuộc số lượng bit của chuỗi dữ
liệu. Ta có thể lý luận như sau để xác định số lượng bit của mã Hamming.
Gọi m là số bit của chuỗi dữ liệu và n là số bit của mã Hamming, tổng số bit phát đi là
m+n
- Với n = 1 ta xác định được 1 trong 2 kết quả : chuỗi dữ liệu sai hoặc đúng nhưng
không biết vị trí lỗi.
- Với n = 2, 1 trong 4 trường hợp xảy ra: 2 phép kiểm tra đều cho kết quả đúng, 2 phép
kiểm tra đều cho kết quả sai, phép kiểm tra thứ nhất sai, phép kiểm tra thứ hai đúng và ngược
lại. 4 trường hợp này cho phép kết luận được 1 bit sai ở 1 trong 3 vị trí.
_____________________________________________________________________________________________________
Nguyễn Trung Lập Truyền dữ liệu
___________________________________________ Chương 3 Các loại mã trong truyền dữ liệu
III - 12
- Với n=3, có 8 khả năng xảy ra và ta có thể kết luận được 1 bit sai ở 1 trong 7 vị trí.
- Với số n bất kỳ, có 2n khả năng xảy ra và ta có thể kết luận được 1 bit sai ở 1 trong
n
2 -1 vị trí.
Vậy để có thể phát hiện 1 lỗi tại 1 vị trí cụ thể thì số n nhỏ nhất được chọn phải thỏa:
2n - 1 ≥ Ù m + n hay 2n ≥ Ù m + n + 1
Các bit của mã Hamming chèn vào vị trí 2n và dùng cho kiểm tra chẵn lẻ. Các bit
khác là bit thông tin (dữ liệu).
Dưới đây là một ví dụ để thấy cách xác định mã Hamming:
Giả sử chuỗi dữ liệu cần truyền gồm 4 bit như sau :
1 0 1 0
Với m = 4 , ta chọn n = 3, bất đẳng thức trên được thỏa
Gọi các bit của mã Hamming là H1 H2 và H4 (1, 2, 4 là các vị trí mà ta sẽ đặt 3 bit của
mã Hamming vào dòng dữ liệu). Gọi các bit dòng dữ liệu là X3, X5, X6, X7.
Tổ hợp các bit dữ liệu và bit mã, ta đươc
1 2 3 4 5 6 7
H1 H2 X3 H4 X5 X6 X7
Giả sử ta chọn Parity chẵn, các bit mã sẽ được xác định như sau:
H1⊕ X3⊕ X5⊕X7 = 0
H1 = X3⊕ X5⊕X7 =1 ⊕ ( 0 ⊕ 0 ) = 1 ⊕ 0 = 1
Tương tự:
H2 = X3⊕ X6⊕X7 =1 ⊕ (1 ⊕ 0 ) = 1 ⊕ 1 = 0
H4 = X5⊕ X6⊕X7 =0 ⊕ (1 ⊕ 0 ) = 0 ⊕ 1 = 1
Bản tin bao gồm bit mã trở thành: 1 0 1 1 0 1 0
Ở máy thu để kiểm tra người ta thực hiện các phép toán:
C1 = H1⊕ X3⊕ X5⊕X7
C2 = H2⊕ X3⊕ X6⊕X7
C4 = H4⊕ X5⊕ X6⊕X7
Nếu C1= C2 = C4 = 0, không có lỗi xảy ra
Nếu C1 = 1, C2 = C4 = 0, một trong các bit ở vị trí 1, 3, 5, 7 bị lỗi. Nhưng C2 = C4 = 0
có nghĩa là các bit ở vị trí 2, 3, 6, 7 và 4, 5, 6, 7 đã đúng. Vậy bit sai phải ở vị trí 1
Lý luận tương tự ta có các trường hợp khác. Thí dụ nếu C1= C2 = C4 = 1 thì bit lỗi là
bit ở vị trí 7
Thí dụ bản tin nhận được là 1 0 1 1 1 1 0
Mạch dò sai sẽ tính C1 , C2 , C4 như sau:
C1 = H1⊕ X3⊕ X5⊕X7 = 1 ⊕ 1 ⊕ 1 ⊕ 0 = 1
C2 = H2⊕ X3⊕ X6⊕X7 = 0 ⊕ 1 ⊕ 1 ⊕ 0 = 0
C4 = H4⊕ X5⊕ X6⊕ X7 = 1 ⊕ 1 ⊕ 1 ⊕ 0 = 1
Vì chỉ bit X5 thuộc cả C1 và C4 nên bit sai là bit thứ 5
Quan sát tổ hợp C4 C2 C1 ta thấy C4 C2 C1 = 101 = (5)10 . Như vậy giá trị có được của
tổ hợp này cho ta biết vị trí bit sai cần sửa chữa.
Nếu tổ hợp này bằng 0 chứng tỏ bản tin nhận đúng.
Mã Hamming có thể được phát triển để dò ra hai bit sai và sửa được một bit lỗi.
_____________________________________________________________________________________________________
Nguyễn Trung Lập Truyền dữ liệu
___________________________________________ Chương 3 Các loại mã trong truyền dữ liệu
III - 13
- Một phương pháp khác là mã hóa Run Length. Phương pháp này cho phép người ta
phát đi các mã thay cho các chuỗi ký tự có tính lặp lại kèm theo mã điều khiển báo cho bên
thu số lần lặp lại, nhờ mã này mà bên thu có thể tạo lại toàn bộ chuỗi thông tin đã truyền.
- Mã đồ họa trong hệ thống Videotex dùng một bảng mã hình học để phát đi các đồ
họa của máy tính hoặc hình ảnh video. Mỗi hình được phát đi là tập hợp các hình cơ bản với
vị trí, màu sắc và kích thước xác định. Các hình cơ bản là các vòng tròn, hình chữ nhật....Điều
này làm giảm rất nhiều số bit cần thiết so với việc phải phát đi từng tọa độ và màu của từng
điểm trên màn hình
3.3.1 Mã Huffman
Mã Huffman lợi dụng xác suất xảy ra của các ký tự khác nhau mà gán các từ mã ngắn
cho các ký tự có xác suất xảy ra lớn và ngược lại. Thí dụ, thay vì dùng 7 bit để mã tất cả các
ký tự như mã ASCII, người ta chỉ gán 2 bit cho chữ E và 10 bit cho chữ Z, bởi lẻ, trong tiếng
Anh xác suất xuất hiện chữ E rất lớn so với xác suất xuất hiện chữ Z. Mã này còn có tên Mã
phụ thuộc tần số (frequency dependent code)
Với phương pháp này số bit trung bình dùng cho mỗi ký tự sẽ giảm. Nhưng do các mã
dài ngắn khác nhau, để máy thu phân biệt được, người ta phải chọn các từ mã ngắn sao cho
không trùng với các bit đầu của các từ mã dài hơn. Gọi là tính tiền tô (prefix property).
Giải thuật Huffman: Dưới đây là các bước tạo mã Huffman
- Tương ứng với mỗi dữ kiện liên kết một cây nhị phân chứa duy nhất một nút. Ở mỗi
cây ghi tần số xuất hiện mà ta gọi là trọng lượng của cây.
- Tìm hai cây nhẹ nhất. Nếu có nhiều hơn hai, ta chọn ngẫu nhiên hai cây trong số các
cây có trọng lượng nhẹ nhất, ghép chúng lại thành một cây đơn với nút gốc mới. Tổng trọng
lượng hai cây này là trọng lượng của cây mới.
- Lặp lại các bước cho tới lúc chỉ còn một cây duy nhất.
Các cây ban đầu trở thành các lá của cây nhị phân cuối cùng này. Ta biết rằng đối với
cây nhị phân thì chỉ có một đường duy nhất từ gốc cho tới lá. Với mỗi lá, đường từ gốc đến
nó chính là mã Huffman tương ứng. Mã này xác định bằng cách ghi trị 0 cho nhánh bên trái
và 1 cho nhánh bên phải (hoặc ngược lại).
Thí dụ 1: Thiết lập mã Huffman cho các ký tự A, B, C, D, E với tần số xuất hiện lần
lượt là 0,25; 0,15; 0,10; 0,20; 0,30.
(H 3.3a) là cây với 5 nút đơn ban đầu và trọng lượng tương ứng.
(H 3.3b) ghép 2 cây B và C thành một cây mới với trọng lượng là tổng trọng lượng
cây B và C (0,25)
Bước tiếp theo ta có thể ghép cây mới hình thành với cây D hay cây A với D. (H 3.3c)
ghép cây mới với D để được một cây trọng lượng là 0,45.
(H 3.3d) ghép cây E và A
Cuối cùng, ghép hai cây mới tạo để được một cây duy nhất, Ghi trị 0 và 1 vào các
nhánh (H 3.3e).
_____________________________________________________________________________________________________
Nguyễn Trung Lập Truyền dữ liệu
___________________________________________ Chương 3 Các loại mã trong truyền dữ liệu
III - 14
(H 3.3)
Ta được bảng mã sau:
Ký tự Mã
A 01
B 100
C 101
D 11
E 00
_____________________________________________________________________________________________________
Nguyễn Trung Lập Truyền dữ liệu
___________________________________________ Chương 3 Các loại mã trong truyền dữ liệu
III - 15
(a) (b)
(H 3.4)
Mã Run length được tạo ra bằng cách quan sát chuỗi bit 0 (hoặc 1) liên tiếp và thay
thế chiều dài chuỗi bit này bởi một số nhị phân. Ở máy thu khi nhận được các số
nhị phân sẽ thay các số này bởi các bit 0 (hoặc 1) đồng thời chèn các bit khác loại vào.
Thí dụ ta phải tạo mã Run length cho chuỗi dữ liệu sau bằng cách dùng số 4 bit thay
cho số bit 0 liên tiếp:
Dòng dữ liệu 0. . .010. . .0110. . .010. . .0110. . .0 91 bit
Số bit 0 liên tiếp 14 9 20 30 11
Run length (nhị phân) 1110 1001 0000 1111 0101 1111 1111 0000 0000 1011 40 bit
Run length (thập phân) 14 9 0 15 5 15 15 0 0 11
Nhận xét cách tạo mã :
- 1 bit 1 giữa các chuỗi bit 0 sẽ không được mã, máy thu tự động chèn bit 1 này vào
khi phục hồi dữ liệu.
- Nếu có 2 bit 1 liên tiếp, ta xem như có 1 chuỗi gồm không bit 0 giữa 2 bit 1 này và
phải được thay thế bởi số 0000.
- Nếu số số 0 nhiều hơn 15 ta phải dùng 2 số nhị phân thay cho chuỗi này (20=15+5;
30=15+15). Ở máy thu khi gặp chuỗi bốn bit 1 nó phải hiểu là phải lấy tổng số này với các số
phía sau, nếu số sau cùng cũng gồm 4 bit 1, máy thu phải được báo bằng chuỗi 4 bit 0 theo
sau (trường hợp sau số 30)
- Nếu chuỗi dữ liệu bắt đầu bằng bit 1 thì máy phát sẽ gửi đi 4 bit 0 đầu tiên.
- Ở cuối bản tin máy phát sẽ gửi tín hiệu báo chấm dứt bản tin và nhờ đó máy thu biết
cách xử lý cho trường hợp bản tin kết thúc bởi chuỗi bit 0 hay bit 1.
Kỹ thuật nén này chỉ có hiệu quả khi chuỗi dữ liệu chứa rất nhiều một loại bit.
_____________________________________________________________________________________________________
Nguyễn Trung Lập Truyền dữ liệu
___________________________________________ Chương 3 Các loại mã trong truyền dữ liệu
III - 16
Ngoài ra, kỹ thuật nén Run length cũng được dùng mã hóa các chuỗi ký tự giống nhau
bằng cách thay mỗi chuỗi ký tự liên tiếp bằng con số chỉ độ dài đứng trước ký tự đó.
Thí dụ, với chuỗi
HHHHHFFFFFFFFYYYYYYYYYYYYYGGGGGGGGGG
Sẽ có mã là: 5H8F13Y10G
(H 3.5)
Dữ liệu gồm các số nguyên được biểu diễn trong một khung 2 chiều, chúng không
mang một ý nghĩa cụ thể nào, mục đích của thí dụ là để hiểu cách tạo mã. Khung thứ nhất
chứa một tập hợp các số nguyên và khung thứ hai chứa một tập hợp các số nguyên khác
khung thứ nhất một ít.
Trong hình, các khung nằm dưới khung thứ hai và thứ ba là khung chứa các mã vi
phân, số 0 chỉ không có sự khác biệt dữ liệu của 2 khung, số 1 chỉ dữ liệu khung sau lớn hơn
khung trước 1 đơn vị và số -1 chỉ ngược lại. Dĩ nhiên có thể sử dụng các số khác hơn là 1 và -
1.
Thí dụ cho ta thấy sự xuất hiện một chuỗi dài các bit 0 và có thể được nén nhờ phương
pháp Run length.
3.4 Mật mã
Trong nhiều trường hợp, bản tin cần được giữ bí mật đối với đệ tam nhân thì việc mã
hóa được thực hiện dưới dạng mật: bản tin được mã bởi một khóa mà chỉ hai người liên hệ
trong trao đổi thông tin biết để sử dụng khi mã hóa và giải mã.
_____________________________________________________________________________________________________
Nguyễn Trung Lập Truyền dữ liệu
___________________________________________ Chương 3 Các loại mã trong truyền dữ liệu
III - 17
Gọi bản tin ban đầu là P (Plaintext), bản tin đã cài mật mã là C (Ciphertext) thì C =
Ek(P), E và k là giải thuật và khóa tạo mã ( Algorithm & Encryption key). Nơi nhận, nhận bản
tin C và phục hồi lại P với giải thuật và khóa là D và k’ : P =Dk’(C) = Dk’ Ek(P). Trong đa số
trường hợp (nhưng không phải luôn luôn) k=k’.
Giải thuật và khóa càng phức tạp thì độ an toàn của bản tin càng cao.
Chúng ta sẽ xét một số cách tạo mật mã từ đơn giản đến phức tạp.
1 2 3 4 5
1 A B C D E
2 F G H IJ K
3 L M N O P
4 Q R S T U
5 V W X Y Z
Thí dụ bản văn N O W I S T H E T I M E
33 43 25 42 34 44 32 51 44 42 23 51
_____________________________________________________________________________________________________
Nguyễn Trung Lập Truyền dữ liệu
___________________________________________ Chương 3 Các loại mã trong truyền dữ liệu
III - 18
Để thay thế một ký tự, gọi i là vị trí tương đối của nó trong bản tin (bắt đầu là vị trí 0)
và j là vị trí tương đối của nó trong thứ tự Alphabet. Gọi V là mãng, ký tự sẽ được thay bằng
một ký tự trong V[ i mod 26,j ].
Thí dụ dùng mãng ở trên để thay các chữ THE trong bản tin ở các vị trí 25, 54 và 104.
Ta lập bảng thay thế như sau:
_____________________________________________________________________________________________________
Nguyễn Trung Lập Truyền dữ liệu
___________________________________________ Chương 3 Các loại mã trong truyền dữ liệu
III - 19
thứ hai, và cứ thế tiếp tục cho hết bản tin, sau đó hoán đổi vị trí các cột theo thứ tự mới, giả sử
p1, p2 . . . pm. Sự hoán đổi có thể thực hiện một cách ngẫu nhiên hoặc theo một qui luật định
trước. Bản tin sẽ được truyền đi theo thứ tự từ p1, p2 . . . đến pm
Thí dụ bản tin cần phát:
MISS PIGGY KERMIT ANIMAL AND FOZZIE BEAR
Giả sử dùng mãng 5 cột 1 2 3 4 5, Bản tin được đưa vào mãng như sau:
Số cột
1 2 3 4 5
M I S S
P I G G Y
K E R M
I T A N
I M A L
A N D F
O Z Z I E
B E A R
Sắp xếp lại các cột theo thứ tự 2, 4, 3, 1, 5, ta được bản tin:
IIKTMNZBSGRAL IASGE ADZEMP IIAO (2 khoảng trống) YMN FER
Rõ ràng là bản tin đã mã hóa không còn một dáng dấp nào của bản tin ban đầu. Nhưng
phương pháp vẫn còn khuyết điểm là sự lặp lại của các ký tự. Nếu kẻ gian xác định được mật
mã đã dùng là loại chuyển vị thì khả năng giải được mã không khó lắm (nhất là có phương
tiện tin học trong tay).
_____________________________________________________________________________________________________
Nguyễn Trung Lập Truyền dữ liệu
___________________________________________ Chương 3 Các loại mã trong truyền dữ liệu
III - 20
(H 3.6)
_____________________________________________________________________________________________________
Nguyễn Trung Lập Truyền dữ liệu
___________________________________________ Chương 3 Các loại mã trong truyền dữ liệu
III - 21
(H 3.7)
Tóm lại, giải thuật để có được một bản tin mật rất là phức tạp, nhưng như thế vẫn chưa
chắc đã bảo mật tuyệt đối được bản tin. Ngoài ra, việc qui ước với nhau cách tạo các khóa
hoặc cách thông tin cho nhau về các khóa cũng phải được thực hiện sao cho bí mật phải được
bảo đảm. Vấn đề bảo mật còn rất nhiều điều phải nghiên cứu.
_____________________________________________________________________________________________________
Nguyễn Trung Lập Truyền dữ liệu