Nhóm 13:Xử lý số liệu truyền
TRƯỜNG ĐẠI HỌC KHOA HỌC HUẾ
KHOA CÔNG NGHỆ THÔNG TIN
Kỹ Thuật Truyền Số liệu
Đề tài:
Xử Lý Số Liệu Truyền
Giáo viên hướng dẫn: Võ Thanh Tú
Nhóm thực hiện: Nguyễn Đắc Thịnh
Nguyễn Cảnh Liêm
Nguyễn Hữu Thanh Tùng
Lưu Đình Lộc
Phan Văn Hữu
Lê Anh Khoa
Page 1
Nhóm 13:Xử lý số liệu truyền
Mục lục:
I.M ã h óa s ố li ệu m ức v ật l ý
1. Những yêu cầu để mã hóa số
2. Mã hóa NRZ
3. Mã lưỡng cực
II. Phát hiện lỗi và sửa sai
1. Tổng quan:
2. Các khái niệm về lỗi:
3. Các kiểu lỗi:
4. Phát hiện sai trong truyền số liệu:
Các phương pháp kiểm tra
1. Phương pháp kiểm tra bit chẵn lẻ (Parity bit):
2. Kiểm tra tổng khối BSC ( Block Sum Check ):
3. Kiểm tra CRC ( cyclic redundancy check )
III. Nén dữ liệu
1.Giới thiệu chung
1.1). Nguyên tắc của nén dữ liệu
1.2). Tầm quan trọng của nén dữ liệu trong truyền tin nối tiếp
2. Một số phương pháp nén dữ liệu
2.1). Phương pháp mã hoá độ dài loạt (Run-Length Encoding)
2.2). Phương pháp nén LZW
3.Nén theo mã hóa Huffman
IV. MẬT MÃ HÓA SỐ LIỆU
1.Khái quát:
2. Mật mã hóa cổ điển:
V.Demo
1.Lập trình chat 2 máy server/client bằng java
2.Kiến trúc
3.Giao diện
Page 2
Nhóm 13:Xử lý số liệu truyền
I.M ã h óa s ố li ệu m ức v ật l ý
Trong một hệ thống truyền thông kỹ thuật số, bước đầu tiên là chuyển đổi các
thông tin thành các luồng bit 1 và 0. Sau đó, các dòng bit đã được biểu diễn thành một
tín hiệu điện. Trong chương này, chúng ta sẽ nghiên cứu các cách biểu diễn của dòng
bit thành tín hiệu điện.
1. Những yêu cầu để mã hóa số
Khi thông tin được chuyển đổi thành một dòng bit gồm 1 và 0, bước tiếp theo là
chuyển đổi các dòng bit đó thành tín hiệu điện. Kiểu biểu diễn tín hiệu điện đã được
lựa chọn cẩn thận vì những lý do sau đây:
Kiểu biểu diễn tín hiệu điện quyết định yêu cầu về băng thông.
Kiểu biểu diễn tín hiệu điện giúp xác định thời điểm bắt đầu và kết thúc của
mỗi bit.
Cơ chế phát hiện lỗi có thể được xây dựng thành các kiểu biểu diễn tín hiệu
điện.
Cơ chế chống nhiễu có thể được tốt hơn bởi kiểu biểu diễn tín hiệu tốt.
Có thể giảm sự phức tạp của bộ giải mã.
Các dòng bit được mã hoá thành tín hiệu điện tương đương bằng cách sử dụng các
chương trình mã hóa số. Chương trình mã hóa sẽ được chọn để quản lí băng thông,
định giờ, khả năng phát hiện lỗi, chống nhiễu, và độ phức tạp của bộ giải mã
Các phương pháp mã hóa thông dụng bao gồm
Mã lưỡng cực
Mã hóa NRZ
Mã Miller
Mã nhị phân đa mức
2. Mã hóa NRZ
Cách phổ biến nhất và cũng là dễ nhất để truyền các tín hiệu số là sử dụng hai mức
hiệu điện thế khác nhau cho hai số nhị phân. Các loại mã theo dạng này có cùng tính
chất là mức hiệu điện thế sẽ là hằng số trong khoảng thời gian 1 bit. Không có sự
chuyển đổi về giá trị mức hiệu điện thế 0 (non return to zero). Ví dụ, khi không có
hiệu điện thế có thể biểu diễn cho bit 0 và với mức hằng số dương của hiệu điện thế có
thể biểu diễn bit 1. Thông thường, một mức hiệu điện thế âm sẽ biểu diễn cho giá trị
của một bit và một mức hiệu điện thế dương sẽ biểu diễn cho bit kia.
Phương pháp mã hóa “không trả về zero”: NRZ-L (Non-return to Zero Level)
thường là loại mã được các trạm hoặc các thiết bị khác sử dụng để sinh ra hoặc thông
dịch dữ liệu số nhị phân. Các loại mã khác nếu được sử dụng trong truyền thông thì
thông thường đều được các hệ thống truyền sinh ra từ mã NRZ-L ban đầu.
Ở NRZ – L, nhị phân 1 được biểu diễn bởi điện áp dương và 0 bằng điện áp âm.
Phương pháp này, tuy đơn giản nhưng lại có vấn đề xảy ra: nếu có lỗi trong quá trình
đồng bộ hoá, sẽ khó cho máy thu để đồng bộ, và nhiều bit bị mất.
Sự đồng bộ hoá là vấn đề trong phương pháp mã hoá này.
Ví dụ: 01001010011
Page 3
Nhóm 13:Xử lý số liệu truyền
Phương pháp mã hóa “không trả về zero” nghịch đảo: NRZ-I (Nonreturn to
Zero Inverted)
Trong NRZ-I, bit 0 được biểu diễn bằng 0 volt và bit 1 biểu diễn bằng 0 volt hoặc
V volt, dựa theo điện áp trước đó. Nếu điện áp trước đó là 0 volt, thì bit 1 là V vôn.
Nếu điện áp trước đó là V volt, , thì bit 1 sẽ là 0 volt.
Ví dụ: 01001010011
Mã NRZ là một loại mã dễ thực hiện trong thực tế và thêm vào đó nó đem lại khả
năng sử dụng băng thông một cách hiệu quả.
Nhược điểm chính của các tín hiệu NRZ là sự có mặt của thành phần một chiều và
thiếu khả năng đồng bộ.
Bởi vì tính đơn giản và mối quan hệ với đặc tính tần số thấp, các mã NRZ thường
được sử dụng trong công nghệ ghi số băng từ. Tuy nhiên, các nhược điểm của các loại
mã này thường không thích hợp với các việc các ứng dụng sử dụng chúng trong vấn
đề truyền tín hiệu.
3. Mã lưỡng cực
Phương pháp này thực hiện việc chuyển đổi “0” của tín hiệu nhị phân sang xung của
mức “0” và “1” của tín hiệu nhị phân thành xung của 2 mức +A và –A. Đặc tính của
loại mã này là không tồn tại thành phần một chiều và sử dụng luân phiên +A, -A, để
có thể phát hiện lỗi. Nhược điểm của loại mã này là không có chức năng khử các mã 0
liên tục, đầu thu có nhiều khó khăn trong việc tách riêng tín hiệu thời gian. Để giải
quyết vấn đề này, một vài loại mã không có độ dài nhất định được chuyển sang các
mẫu đặc biệt dùng một mã lưỡng cực mật độ cao (như BNZS, HDBN).
Lưỡng cực AMI : (BIPOLAR ALTERNATE MARK INVERSION)
Theo lược đồ mã hóa Bipolar AMI, bit 0 đại diện tín hiện bằng 0, bit 1 đại diện
cho mức điện áp dương hoặc âm. Bit 1 phải luân phiên ở hai cực dương âm. Sự thuận
lợi của mã hóa này nếu có một chuỗi bit 1 phát sinh thì vẫn không mất đi sự đồng bộ.
Nếu sự đồng bộ bị mất thì cũng dễ dàng đồng bộ lại theo quá trình thay đổi điện áp.
Ví dụ: 0100101001100001
Page 4
Nhóm 13:Xử lý số liệu truyền
Lưỡng cực mật độ cao: HIGH-DENSITY BIPOLAR 3 (HDB3)
Phần lớn mã hóa HDB3 đều giống với AMI, ngoại trừ sự thay đổi nhỏ: hai xung,
được gọi là xung V và xung B, được sử dụng khi có 4 số 0 liên tiếp trong chuỗi bit mã
hóa. Khi có 4 bit 0 phát sinh, xung nhiệp sẽ là 000V, bit V chính là bit phía trước 4
các bit 0. Tuy nhiên thì xung V lại tạo ra thành phần xoay chiều. Để giải quyết vấn đề
này, bit B được đề xuất. Nếu có 4 bit 0 liên tiếp thì mã hóa sẽ là B00V .
Ví dụ: 0100101001100001
II. Phát hiện lỗi và sửa sai
Mạng cần có khả năng truyền dữ liệu một cách chính xác. Một hệ thống không bảo
đảm dược tính năng này thì không sử dụng được. Trong quá trình truyền thì dữ liệu
luôn bị tác động bởi nhiều yếu tố như nhiễu, vì vậy 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 hoặc lớp vận chuyển
trong mô hình OSI.
1. Tổng quan:
Khi dữ liệu được truyền đi giữa 2 DTE (Data Terminal Equipment - thiết bị
cuối xử lý số liệu)-đây là thiết bị lưu trữ và xử lý thông tin. Trong hệ thống truyền số
liệu hiện đại thì DTE thường là máy tính hoặc máy fax hoặc là trạm cuối (terminal).
Như vậy tất cả các ứng dụng của người sử dụng (chương trình, dữ liệu) đều nằm trong
DTE. Chức năng của DTE thường lưu trữ các phần mềm ứng dụng, đóng gói dữ liệu
rồi gửi ra DCE(thiết bị cuối kênh dữ liệu- Data circuit terminal equiment) hoặc nhận
gói dữ liệu từ DCE theo một giao thức xác định DTE trao đổi với DCE thông qua một
chuẩn giao tiếp nào đó. Như vậy mạng truyền số liệu chính là để nối các DTE lại cho
phép chúng ta phân chia tài nguyên, trao đổi dữ liệu và lưu trữ thông tin dùng chung
đặc biệt nếu các đường dây truyền dẫn ở trong môi truyền xuyên nhiễu như mạng điện
thoại công cộng, thì những tín hiệu điện đại diện luồng bit rất dễ bị thay đổi do ảnh
hưởng của các thiết bị điện gần đó. Điều đó có nghĩa là, tín hiệu đại diện cho bit 1 bị
máy thu dịch ra như bit nhị phân 0 và ngươc lại.
Page 5
Nhóm 13:Xử lý số liệu truyền
Có hai phương pháp cho vấn đề này, đó là :
- Kiểm soát lỗi hướng tới (FEC-Forward Error Control): Trong mỗi ký tự hay
mỗi frame dữ liệu được truyền đi có chứa thông tin bổ sung cần thiết để bên thu phát
hiện lỗi và có thể dò tìm vị trí của các bit lỗi . Sau đó chỉ cần đảo ngược các bit lỗi
để nhận được dữ liệu đúng.
- Kiểm soát lỗi quay lui (Backward Error Control) : Trong mỗi ký tự hay mỗi
frame dữ liệu được truyền đi chỉ chứa thông tin cần thiết để bên thu chỉ có thể phát
hiện ra lỗi. Một bộ điều khiển sẽ yêu cầu bên phát phát lại bản dữ liệu đúng.
Trong thực tế, số lượng bit thêm vào để đạt được độ tin cậy cần thiết trong điều
khiển hướng tới sẽ gia tăng nhanh chóng khi số lượng bit thông tin tăng lên. Do đó,
phương pháp điều khiển lỗi quay lui được sử dụng nhiều hơn trong các dạng truyền số
liệu và các hệ thống mạng .
2. Các khái niệm về lỗi:
Về bản chất, lỗi truyền số liệu là lỗi bit. Nếu tín hiệu mang dữ liệu nhị phân được
mã hóa, những thay đổi như thế có thể làm thay đổi ý nghĩa của dữ liệu.
Nguyên nhân gây ra lỗi:
- Các quá trình vật lý sinh ra: đó là các lỗi xẩy ra trong quá trình truyền số liệu trên
đường truyền vật lý. Bất cứ khi nào một tín hiệu điện từ di chuyển từ một điểm này tới
điểm khác, nó dễ bị nhiễu không đoán trước từ sức nóng, từ tính và các dạng của của
điện. Sự nhiễu này có thể làm thay đổi hình dạng và thời gian của tín hiệu.
- Các thiết bị truyền thông gây ra: là các lỗi xẩy ra do chính các thiết bị tham gia
truyền số liệu gây ra.
Để xác định xác suất lỗi bit sử dụng p
b
Xác định tỉ suất lỗi bit – BER (Bit Error Rate)
BER £ 10
-9
- đường truyền được xem là tốt
BER £ 10
-4
- đường truyền chấp nhận được
Ngoài ra còn một số đơn vị đo khác, ít được sử dụng hơn:
FER (Frame Error Rate)
PER (Packet Error Rate)
Để xác định xác suất lỗi gói số liệu sử dụng công thức:
p
f
= 1 – (1-p
b
)N với N - độ dài gói số liệu, đo bằng bit
p
f
≈ N.p
b
, nếu N.p
b
<< 1
Thí dụ minh hoạ: Cho N = 1000 bit, p
b
= 10-6
p
f
= 1 – (1-p
b
)N = 1 – (1-10-6)1000 = 0.00095
Hay p
f
≈ N.p
b
, ≈ 1000 .10-6 ≈ 0.001.
3. Các kiểu lỗi:
Về bản chất, lỗi có thể được chia thành 2 loại đó là lỗi đơn và lỗi chùm. Trong
một lỗi đơn bit, một bit 0 được thay đổi thành 1 hoặc 1 thành 0. Trong một lỗi bit
chùm bit, nhiều bit bị thay đổi. Ví dụ một nhiễu xung hàng hoạt kéo dài 0.01 giây trên
Page 6
Nhóm 13:Xử lý số liệu truyền
đường truyền cùng với một tốc độ dữ liệu 1200 bps có thể thay đổi tất cả hoặc một vài
bit trong 12 bit thông tin.
a. Lỗi bit đơn - single bit error
Thuật ngữ lỗi bit đơn có nghĩa là các lỗi bit riêng lẻ, phân bố ngẫu nhiên trong
gói số liệu.
Để hiểu tầm ảnh hướng của thay đổi đó, hình dung rằng mỗi nhóm 8 bit là một
ký tự ASCII với một bit 0 được bổ sung vào bên trái. Trong hình vẽ, 00000010
(ASCII STX) được gửi đi, có nghĩa là ký tự bắt đầu, nhưng bên nhận lại nhận được
00001010 (ASCII LF- line feed) .
Các lỗi bit đơn là kiểu lỗi ít xảy ra trong truyền dữ liệu nối tiếp. Để hiểu lí do
tại sao, ta hãy hình dung người gửi thực hiện gửi dữ liệu với tốc độ 1 Mbps. Điều đó
có nghĩa là một bit chỉ kéo dài trong khoảng 1/1.000.000 giây hay 1 micro giây. Để lỗi
bit đơn xảy ra, nhiễu phải nằm trong khoảng 1 micro giây, điều đó ít khi xảy ra; nhiễu
thường kéo dài hơn nhiều so với khoảng đó.
Tuy nhiên, lỗi bit đơn có thể xảy ra nếu gửi dữ liệu sử dụng truyền dữ liệu song
song. Ví dụ, nếu có 8 đường song song được sử dụng để gửi tất cả 8 bit của một byte
ở cùng một thời điểm, một trong những đường đó bị nhiễu, một bit có thể bị thay đổi
trong mỗi byte.Ví dụ như thực hiện truyền dẫn song song trong một máy tính giữa
CPU và bộ nhớ.
b. Lỗi bit chùm - Burst Error
Thuật ngữ lỗi bit chùm nghĩa là có 2 hay nhiều bit trong đơn vị dữ liệu có thay
đổi bit 1 thành bit 0 và từ 0 thành 1.
Trong trường hợp này, 0100010001000011 được gửi, nhưng bên nhận thì nhận
được 0101110101000011. Chú ý là lỗi bit hàng loạt không phải luôn luôn có nghĩa là
Page 7
Nhóm 13:Xử lý số liệu truyền
xảy ra ở các bit liên tiếp nhau. Chiều dài của một loạt đƣợc định lƣợng từ bit bịt lỗi
đầu tiên tới bit bị lỗi cuối cùng. Một số bit nằm giữa có thể không bị ảnh hưởng.
Các khái niệm liên quan:
- Gap (kẽ hở): Là vùng nằm giữa 2 vùng lỗi.
- Burst (Bùng nổ): Là vùng trong đó BER cục bộ vượt quá một giá trị ngưỡng
nhất định. Burst bắt đầu và kết thúc bằng các lỗi.
- Burst interval (khoảng lỗi chùm): vùng giữa 2 vùng lỗi chùm liên tiếp.
- Cluster: vùng không có bất kì một bit đúng nào xen giữa.
- Ký hiệu: 1 là 1 bit bị lỗi, 0 là 1 bit đúng (không bị lỗi), 0
x
là một dãy liên tiếp
x bit đúng
Lỗi ở một số môi trường có khuynh hướng bùng nổ.
- Mặt dễ giải quyết: số liệu máy tính luôn được gửi thành các khối bit. Giả sử
rằng kích thước khối là 1000 bit, và tỉ lệ lỗi là 0.001. Nếu các lỗi là độc lập thì hầu hết
các khối đều chứa lỗi. Nếu các lỗi xuất hiện một cách bùng nổ trong 100 khối, thì tính
trung bình chỉ có một hoặc hai khối trong 100 khối bị ảnh hƣởng. Khi đó việc giải
quyết các khối bit bị lỗi sẽ trở nên đơn giản.
- Mặt khó: khó phát hiện và sửa hơn so với các lỗi cô lập.
4. Phát hiện sai trong truyền số liệu:
Phương pháp để phát hiện sai trong truyền số liệu là dò dùng dư thừa. Một cơ
chế dò tìm lỗi phải thoả mãn những yêu cầu đặt ra cần phải gửi tất cả dữ liệu 2 lần.
Thiết bị nhận sau đó sẽ có thể thực hiện công việc so sánh bit-bit giữa hai phiên bản
dữ liệu. Bất kỳ sự khác nhau nào sẽ chỉ báo một lỗi và một cơ chế sửa lỗi phù hợp sẽ
được thiết lập tại đó. Hệ thống này sẽ hoàn thành một cách chính xác (các lỗi bít lẻ
được đưa ra bằng đúng các bit trong cả hai tập dữ liệu là rất nhỏ), nhưng cách này
cũng khá chậm, Không chỉ mất gấp đôi thời gian cho việc truyền dẫn mà còn mất thời
gian cho quá trình so sánh từng đơn vị bit-bit.
Khái niệm bao gộp thông tin bổ sung trong truyền dẫn chỉ dành cho mục đích so
sánh là một cách tốt. Nhưng thay vì lặp lại toàn bộ dòng dữ liệu, một nhóm nhỏ hơn
các bit có thể được ghép thêm vào cuối mỗi đơn vị. Kỹ thuật này được gọi là dư thừa
– redundancy bởi vì các bit phụ thêm là dư thừa đối với dữ liệu thông tin; chúng sẽ bị
loại bỏ ngay khi độ chính xác của truyền dẫn được xác nhận.
Dò tìm lỗi sử dụng khái niệm về dư thừa có nghĩa là ghép thêm các bit phụ thêm
cho việc dò tìm lỗi tại thiết bị nhận.
Page 8
Nhóm 13:Xử lý số liệu truyền
Một khi dòng dữ liệu được tạo ra, nó truyền qua một thiết bị và thiết bị này thực
hiện phân tích dòng dữ liệu, bổ sung một mã kiểm tra dư thừa một cách hợp lý. Đơn
vị dữ liệu giờ có chiều dài được mở rộng thêm nhiều bit (trong hình minh họa là 7 bit
thêm), đi qua đường kết nối tới bên nhận. Bên nhận chuyển toàn bộ dòng dữ liệu đó
qua một bộ phận chức năng kiểm tra. Nếu dòng bit nhận được kiểm tra dựa vào các
tiêu chuẩn xác định, phần dữ liệu của đơn vị dữ liệu được chấp nhận và các bit dư
thừa được loại bỏ.
Như vậy phương pháp này có thể hiểu:
- Bên gửi bổ sung thêm các thông tin dư thừa vào số liệu cần gửi đi một cách
thích hợp (theo quy luật = thuật toán nhất định).
- Bên nhận dựa trên các thông tin dư thừa để xác định xem gói tin nhận được
có bị lỗi hay không.
Các phương pháp kiểm tra:
1. Phương pháp kiểm tra bit chẵn lẻ (Parity bit):
Đây là phương pháp thông dụng nhất để dò tìm các bit lỗi trong truyền bất
đồng bộ và đồng bộ hướng ký tự.
Với lược đồ này, máy phát sẽ thêm vào mỗi ký tự truyền đi một bit kiểm tra
parity (được tính toán trước khi truyền) . Khi tiếp nhận thông tin, máy thu sẽ thực hiện
các thao tác tính toán tương tự trên các ký tự thu được, và so sánh kết quả với bit
parity thu được. Nếu chúng bằng nhau, thì không có lỗi xảy ra, nếu chúng không bằng
nhau thì có lỗi xảy ra.Gồm 3 phương pháp:
+ Phương pháp kiểm tra ngang
+ Phương pháp kiểm tra dọc
+ Kết hợp 2 phương pháp
Nguyên lý:
- Thêm vào mã cần truyền 1 tập bit kiểm tra nào đó để bên dẫn có thể kiểm soát
lỗi
- Trước khi truyền dữ liệu đi, người ta thêm vào cuối bit 1 gọi là parity bit.
- Nếu tổng số bit 1 của xâu truyền đi là chẵn thì bit thêm vào là 0
- Nếu tổng số bit 1 của xâu truyền đi là lẻ thì bit thêm vào là 1
Ví dụ: Truyền xâu CDSPHD
Page 9
Nhóm 13:Xử lý số liệu truyền
C(67) = 1000011
D(68) = 1000100
S(83) = 1010011
P(80) = 1010000
H(72) = 1001000
+ Phương pháp kiểm tra ngang:
(1) C D S P H D
1 1 1 1 1 1 0
0 0 0 0 0 0 0
0 0 1 1 0 0 0
0 0 0 0 1 0 1
0 1 0 0 0 1 0
1 0 1 0 0 0 0
(2) C D S P H D Lỗi do mạng truyền thông
1 1 1 1 1 1 0 sinh ra
0 0 0 0 0 0 0
0 1 1 0 0 0
0 0 0 0 1 0 1
0 1 0 0 0 1 0
1 0 1 0 0 0 0
(3) C D S P H D
1 1 1 1 1 1 0
0 0 0 0 0 0 0
1 1 0 0 0
0 0 0 0 1 0 1
0 1 0 0 0 1 0
1 0 1 0 0 0 0
=> Phương pháp này chỉ kiểm tra được số bit trên cùng 1 hàng bị lỗi là lẻ, nếu
số bit trên cùng 1 hàng bị lỗi là chẵn thì không kiểm tra được
Page 10
1
1 1
Nhóm 13:Xử lý số liệu truyền
+ Phương pháp kiểm tra dọc:
(1) C D S P H D
1 1 1 1 1 1
0 0 0 0 0 0
0 0 1 1 0 0
0 0 0 0 1 0
0 1 0 0 0 1
1 0 1 0 0 0
1 0 1 0 0 0
1 0 0 0 0 0
(2) C D S P H D Lỗi do mạng truyền thông
1 1 1 1 1 1 sinh ra
0 0 0 0 0
0 0 1 1 0 0
0 0 0 0 1 0
0 1 0 0 0 1
1 0 1 0 0 0
1 0 1 0 0 0
0 0 0 0 0 0
(3) C D S P H D
1 1 1 1 1 1
0 0 0 0 0
0 1 1 0 0
0 0 0 0 1 0
0 1 0 0 0 1
1 0 1 0 0 0
1 0 1 0 0 0
1 0 0 0 0 0
Page 11
1
1
1
Nhóm 13:Xử lý số liệu truyền
+ Kết hợp 2 phương pháp:
(1) C D S P H D
1 1 1 1 1 1 0
0 0 0 0 0 0 0
0 0 1 1 0 0 0
0 0 0 0 1 0 1
0 1 0 0 0 1 0
1 0 1 0 0 0 0
1 0 0 0 0 0 1
(2) C D S P H D
1 1 1 1 1 1 0
0 0 0 0 0 1
0 1 1 0 0 1
0 0 0 0 1 0 1
0 1 0 0 0 1 0
1 0 1 0 0 0 0
1 0 0 0 0 0 1
(3) C D S P H D
1 1 1 1 1 1 0
0 0 0 0 0 0 0
1 1 0 0 0
0 0 0 0 1 0 1
0 1 0 0 0 1 0
1 0 1 0 0 0 0
0 1 0 0 0 0 1
(4) C D S P H D
1 1 1 1 1 1 0
0 0 0 0 0 0 0
1 1 0 0 0
0 0 1 0 1 0
0 1 0 0 0 1 0
1 0 1 0 0 0 0
1 0 0 0 0 0 1
Page 12
1
1 1
1 1
1 1
Nhóm 13:Xử lý số liệu truyền
=> Phát hiện các lỗi đơn và lỗi ghép, không phát hiện tất cả các lỗi đặc biệt lỗi
tạo ra hình chữ nhật như trường hợp (4)
2. Kiểm tra tổng khối BSC ( Block Sum Check ):
Block Sum Check (BSC): kết hợp parity hàng và cột
• Phát hiện được lỗi sai một số lẻ bit.
• Dò được các lỗi sai một số chẵn bit, ngoại trừ những lỗi xảy ra đồng thời trên
cả hàng và cột.
• Chỉ sửa được sai một bit đơn.
- Khi các khối ký tự đang được truyền, xác suất một ký tự chứa lỗi bit gia tăng.
- Xác suất một khối ký tự bị lỗi bit được gọi là tỉ lệ lỗi bit BER.
- Phương pháp này sử dụng một tập parity bit được tính từ toàn bộ khối ký tự
trong khung.
- Mỗi ký tự trong khung được phân phối một parity bit ( parity hàng ). Ngoài ra
một bit mở rộng được tính cho mỗi vị trí bit ( parity cột ) trong toàn bộ khung. Tập
các parity bit cho mỗi cột được gọi là ký tự kiểm tra khối BCC ( Block Check
Character )
Ví dụ:
Data Start Data Parity(even) stop
B1 B2 B3 B4 B5 B6 B7
H 1 0 0 0 0 0 0 1 1 0
E 1 1 0 0 0 0 0 1 0 0
L 1 0 1 0 0 0 0 1 0 0
L 1 0 1 0 0 0 0 1 0 0
O 1 1 1 0 0 0 0 1 1 0
BCC(odd) 1 1 0 1 1 1 1 0 1 0
Page 13
Nhóm 13:Xử lý số liệu truyền
3. Kiểm tra CRC ( cyclic redundancy check )
CRC (cyclic redundancy check) là một loại hàm băm, được dùng để sinh ra giá
trị kiểm thử, của một chuỗi bit có chiều dài ngắn và cố định, của các gói tin vận
chuyển qua mạng hay một khối nhỏ của tệp dữ liệu. Giá trị kiểm thử được dùng để dò
lỗi khi dữ liệu được truyền hay lưu vào thiết bị lưu trữ. Giá trị của CRC sẽ được tính
toán và đính kèm vào dữ liệu trước khi dữ liệu được truyền đi hay lưu trữ. Khi dữ liệu
được sử dụng, nó sẽ được kiểm thử bằng cách sinh ra mã CRC và so khớp với mã
CRC trong dữ liệu.
CRC là một loại mã phát hiện lỗi. Cách tính toán của nó giống như phép toán
chia số dài trong đó thương số được loại bỏ và số dư là kết quả, điểm khác biệt ở đây
là sử dụng cách tính không nhớ (carry-less arithmetic) của một trường hữu hạn. Độ
dài của số dư luôn nhỏ hơn hoặc bằng độ dài của số chia, do đó số chia sẽ quyết định
độ dài có thể của kết quả trả về. Định nghĩa đối với từng loại CRC đặc thù quyết định
số chia nào được sử dụng, cũng như nhiều ràng buộc khác.
CRC dựa chủ yếu vào phần bit bổ sung, kỹ thuật CRC dựa trên phép chia nhị
phân. Trong CRC, thay vì thêm các bit để cùng đạt được một tính chẵn lẻ theo mong
đợi, một chuỗi các bit dư thừa được gọi là CRC hay số dư CRC, được ghép vào cuối
đơn vị dữ liệu do đó đơn vị dữ liệu kết quả có thể chia hết cho số nhị phân thứ hai
được xác định trước. Tại đích của nó, đơn vị dữ liệu đến được chia bởi cùng số đó.
Nếu tại bƣớc này, phép chia có số dư bằng 0, đơn vị dữ liệu đƣợc coi là còn nguyên
vẹn và do đó được chấp nhận. Nếu số dư khác không có nghĩa là đơn vị dữ liệu đó đã
bị hư hại trong quá trình truyền và do đó bị loại bỏ. Các bit dư thừa được sử dụng bởi
CRC lấy được từ phép chia đơn vị dữ liệu theo số chia đã xác định trước; phần dư của
phép chia sẽ là CRC. Để có thể phân loại quá trình này, bắt đầu một cách tổng quan và
sau đó đi sâu vào chi tiết hơn.
Bước thứ nhất, một chuỗi n bit được ghép vào đơn vị dữ liệu. Số n là một số nhỏ
hơn số các bit trong số chia xác định tước có chiều dài n+1 bit
Page 14
Nhóm 13:Xử lý số liệu truyền
Bước thứ hai, đơn vị dữ liệu mới kéo dài chia cho số chia sử dụng một quá
trình gọi là chia nhị phân. Phần dư của phép chia là CRC.
Bước thứ 3, CRC của n bit dẫn ra từ bước 2 thay thế các bit 0 được ghép vào
cuối đơn vị dữ liệu. Chú ý là CRC có thể bao gồm tất cả các bit 0.
Đầu tiên, dữ liệu được nhận, theo đó là CRC. Bên nhận coi toàn bộ chuỗi dữ
liệu đó là một đơn vị và chia nó cho cùng số chia mà đã được sử dụng trước đó để tìm
ra số dư CRC.
Nếu chuỗi đến mà không có lỗi, bộ kiểm tra CRC sẽ cho kết quả đầu ra là số dư
bằng 0 và đơn vị dữ liệu được qua. Nếu chuỗi đó bị thay đổi trong quá trình truyền,
kết quả phép chia là một số khác 0, do đó đơn vị dữ liệu không được qua.
Bộ sinh CRC- CRC generator
Một bộ sinh CRC sử dụng phép chia modulor 2. Trong bước đầu tiên, số chia 4
bit được trừ đi từ 4 bit đầu tiên của số bị chia. Mỗi bit của số chia được trừ đi tương
ứng với bit của số bị chia mà không cần nhớ sang bit tiếp theo cao hơn. Trong ví dụ
của , số chia 1101 được trừ từ 4 bit của số bị chia, 1001 cho kết quả là 100 (số 0 ở đầu
của số dư được bỏ đi).
Các bít chưa được sử dụng tiếp theo từ số bị chia sau đó được chuyển xuống
dưới để tạo ra số các bit trong số dư bằng với số các bit ở số chia. Do đó, theo bước
tiếp theo là 1000-1101=101…
Trong quá trình này, số chia luôn bắt đầu với bit 1; số chia được trừ từ một
phần của số bị chia/số dư trước bằng nhau về độ dài; số chia chỉ có thể được trừ đi từ
số bị chia/số dư mà bit trái nhất của nó bằng 1. Tại bất kỳ thời điểm nào bit trái nhất
này của bị chia/số dư là 0, một chuỗi các số 0, có cùng chiều dài nhƣ số chia, thay thế
số chia trong bƣớc đó của toàn bộ quá trình. Ví dụ, nếu số chia có độ dài 4 bit, nó
đƣợc thay thế bằng 4 số 0. (Chú ý rằng đang xử lý với các mẫu bit, chứ không phải
với các giá trị định lƣợng; 0000 không giống 0.). Hạn chế này có nghĩa rằng tại bất kỳ
bước nào bên trái nhất của phép trừ sẽ là 0-0 hoặc 1-1, cả hai đều bằng 0. Vì vậy, sau
phép trừ, bit bên trái nhất của số dư sẽ luôn dẫn tới 0, do đó bit này được loại bỏ và bit
tiếp theo chưa được sử dụng của số bị chia được đẩy xuống để đưa ra số dư. Cần chú
ý là chỉ có bit đầu tiên của số dư được loại bỏ- nếu bit tiếp theo cũng là 0, nó vẫn được
giữ lại, và số bị chia/số dư cho bước tiếp theo sẽ bắt đầu với 0. Quá trình này lắp lại
cho đến khi toàn bộ số bị chia được sử dụng.
Page 15
Nhóm 13:Xử lý số liệu truyền
Bộ kiểm tra CRC- CRC Checker
Bộ kiểm tra CRC thực hiện chức năng một cách chính xác như bộ sinh CRC. Sau khi
nhận được dữ liệu được ghép với CRC, nó tương tự thực hiện phép chia modulor-2.
Nếu số dư tất cả bằng 0, các bit CRC được bỏ đi và dữ liệu được chấp nhận, nếu
không dòng các bit nhận được bị bỏ đi và dữ liệu được gửi lại. giải sử rằng không có
lỗi xảy ra. Số chia do đó tất cả bằng 0 và dữ liệu được chấp nhận.
Page 16
Nhóm 13:Xử lý số liệu truyền
Các đa thức CRC
Bộ sinh CRC (số chia) thường được biểu diễn không chỉ ở dưới dạng chuỗi các
bit 0 và 1 mà còn là một đa thức đại số. Khuôn dạng của đa thức là hữu dụng vì hai lý
do: Nó ngắn, và có thể được sử dụng để chứng minh khái niệm toán học
Mối quan hệ của một đa thức đối với biểu diễn nhị phân
Một đa thức sẽ được lựa chọn sao cho thỏa mãn:
-Nó sẽ không được chia hết bởi x
- Nó có thể được chia hết bởi (x+1)
Page 17
Nhóm 13:Xử lý số liệu truyền
Điều kiện đầu tiên đảm bảo rằng tất cả các lỗi bit chùm bit có độ dài bằng với độ
dài của đa thức được dò thấy. Điều kiện thứ 2 đảm bảo rằng mọi lỗi bit hàng loạt ảnh
hưởng một số lẻ các bit được dò thấy.
Các đa thức sinh chuẩn:
CRC12: x12+x11+x3+x+1
CRC16: x16+x15+x2+1
CRC-ITU-T: x16+x12+x5+1
CRC32: x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1
Hiệu quả của kỹ thuật của CRC
CRC là phương pháp dò tìm lỗi rất hiệu quả. Nếu số chia được chọn theo nguyên
tắc đã nếu trước đó thì:
- CRC có thể dò tất cả các lỗi bit chùm bit mà ảnh hưởng một số lẻ các bit
- CRC có thể dò tất cả các lỗi bit chùm có chiều dài nhỏ hơn hoặc bằng bậc của
đa thức.
- CRC có thể dò tìm với khả năng tìm thấy lỗi bit chùm bit có chiều dài lớn hơn
bậc của đa thức.
III. Nén dữ liệu:
1.Giới thiệu chung
1.1). Nguyên tắc của nén dữ liệu
Thông thường, hầu hết các tập tinh trong máy tính có rất nhiều thông tin dư
thừa, việc thực hiện nén tập tin thực chất là mã hoá lại các tập tin để loại bỏ các thông
tin dư thừa.
Trong các lĩnh vực của công nghệ thông tin – viễn thông hiện nay, việc truyền
tải tin tức đã là một công việc xảy ra thường xuyên. Tuy nhiên thông tin được truyền
tải đi thường rất lớn, điều này gây khó khăn cho công việc truyền tải: gây tốn kém tài
nguyên mạng, tiêu phí khả năng của hệ thống… Để giải quyết vấn đề đó, các thuật
toán nén đã được ra đời.
Nhìn chung không thể có phương phát nén tổng quát nào cho kết quả tốt đối
với tất cả các loại tập tin vì nếu không ta sẽ áp dụng n lần phương pháp nén này để đạt
được một tập tin nhỏ tuỳ ý! Kỹ thuật nén tập tin thường được áp dụng cho các tập tin
văn bản (Trong đó có một số kí tự nào đó có xác suất xuất hiện nhiều hơn các kí tự
khác), các tập tin ảnh bitmap (Mà có thể có những mảng lớn đồng nhất), các tập tin
dùng để biểu diễn âm thanh dưới dạng số hoá và các tín hiệu tương tự (analog signal)
khác (Các tín hiệu này có thể có các mẫu được lặp lại nhiều lần). Ðối với các tập tin
nhị phân như tập tin chương trình thì sau khi nén cũng không tiết kiệm được nhiều.
Ngoài ra, trong một số trường hợp để nâng cao hệ số nén người ta có thể bỏ bớt
một số thông tin của tập tin (Ví dụ như kỹ thật nén ảnh JPEG).
1.2). Tầm quan trọng của nén dữ liệu trong truyền tin nối tiếp
Page 18
Nhóm 13:Xử lý số liệu truyền
-Trong kỹ thuật truyền tin nối tiếp, do các bit dữ liệu được truyền đi nối tiếp,
lại bị giới hạn về dãi thông của kênh truyền và giới hạn về các chuẩn ghép nối nên
tốc độ truyền tin tương đối chậm.
Nén dữ liệu trước khi truyền đi cũng là một trong các phương pháp nhằm tăng
tốc độ truyền dữ liệu. Trong các modem hiện đại, việc thực hiện nén dữ liệu trước khi
truyền đi có thể được thực hiện ngay trong modem theo các giao thức V42bis, MNP5.
Phương pháp này đòi hỏi hai modem phải có cùng một giao thức nén dữ liệu, điều này
nhiều khi khó thoã mãn.
- Có một phương pháp khác là thực hiện nén các tập tin ngay tại các máy vi
tính trước khi truyền đi, tại các máy tính nhận, các tập tin lại được giải nén để phục
hồi lại dạng ban đầu. Phương pháp này có ưu điểm là bên phát và bên thu chỉ cần có
chung phần mềm nén và giải nén, ngoài ra còn có thể áp dụng được để truyền dữ liệu
qua các modem không hỗ trợ nén dữ liệu hoặc truyền dữ liệu trực tiếp qua cổng COM
của máy tính. Nhược điểm của phương pháp này là các máy vi tính phải tốn thêm thời
gian nén và giải nén, nhưng do sự phát triển nhanh chóng của các bộ vi xử lý mà thời
gian thực hiện nén và giải nén được giảm nhỏ hơn rất nhiều thời gian để truyền dữ
liệu.
Ví dụ, khi truyền một tập tin có kích thước là 100Kbyte với dạng thức của một
SDU là: 8 bits dữ liệu, 2 bit STOP và 1 bit START, không dùng bit chẵn lẻ, tốc độ
truyền là 9600bits/giây thì mất khoảng 120 giây, trong khi một máy vi tính với bộ vi
xử lí 80386 có thể thực hiện nén tập tin trên xuống còn 50Kbyte chỉ mất chưa đến 10
giây
2. Một số phương pháp nén dữ liệu
2.1). Phương pháp mã hoá độ dài loạt (Run-Length Encoding)
Loại dư thừa đơn giản nhất trong một tập tin là các đường chạy dài gồm các kí tự
lặp lại, điều này thường thấy trong các tập tin đồ hoạ bitmap, các vùng dữ liệu hằng
của các tập tin chương trình, một số tập tin văn bản
Ví dụ, xét chuỗi sau:
AAAABBBAABBBBBCCCCCCCCDABCBAAABBBBCCCD
Chuỗi này có thể được mã hoá một cách cô đọng hơn bằng cách thay thế chuỗi kí
tự lặp lại bằng một thể hiện duy nhất của kí tự lặp lại cùng với một biến đếm số lần kí
tự đó được lặp lại. Ta muốn nói rằng chuỗi này gồm bốn chữ A theo sau bởi ba chữ B
rồi lại theo sau bởi hai chữ A, rồi lại theo sau bởi năm chữ B Việc nén một chuỗi
theo phương pháp này được gọi là mã hoá độ dài loạt. Khi có những loạt dài, việc tiết
kiệm có thể là đáng kể. Có nhiều cách để thực hiện ý tưởng này, tuỳ thuộc vào các đặc
trưng của ứng dụng (các loạt chạy có khuynh hướng tương đối dài hay không ? Có
bao nhiêu bit được dùng để mã hoá các kí tự đang được mã ?).
Page 19
Nhóm 13:Xử lý số liệu truyền
Nếu ta biết rằng chuỗi của chúng ta chỉ chứa các chữ cái, thì ta có thể mã hoá biến
đếm một cách đơn giản bằng cách xen kẻ các con số với các chữ cái. Vì vậy chuỗi kí
tự trên được mã hoá lại như sau:
4A3BAA5B8CDABCB3A4B3CD
Ở đây "4A" có nghĩa là "bốn chữ A" Chú ý là không đáng để mã hoá các loạt
chạy có độ dài 1 hoặc 2 vì cần đến hai kí tự để mã hoá.
Ðối với các tập tin nhị phân một phiên bản được tinh chế của phương pháp này
được dùng để thu được sự tiết kiệm ÐÁNG KỂ. Ý tưởng ở đây là lưu lại các độ dài
loạt, tận dụng sự kiện các loạt chạy thay đổi giữa 0 và 1 để tránh phải lưu chính các số
0 và 1 đó. Ðiều này giả định rằng có một vài loạt chạy ngắn (Ta tiết kiệm các bit trên
một loạt chạy chỉ khi độ dài của đường chạy là lớn hơn số bit cần để biễu diễn chính
nó trong dạng nhị phân), nhưng khó có phương pháp mã hoá độ dài loạt nào hoạt động
thật tốt trừ phi hầu hết các loạt chạy đều dài.
Việc mã hoá độ dài loạt cần đến các biễu diễn riêng biệt cho tập tin và cho bản đã
được mã hoá của nó, vì vậy nó không thể dùng cho mọi tập tin, điều này có thể hoàn
toàn bất lợi, ví dụ, phương pháp nén tập tin kí tự đã được đề nghị ở trên sẽ không
dùng được đối với các chuỗi kí tự có chứa số. Nếu những kí tự khác được sử dụng để
mã hoá các số đếm, thì nó sẽ không làm việc với các chuỗi chứa các kí tự đó. Giả sử
ta phải mã hoá bất kì kí tự nào từ một bảng chữ cái cố định bằng cách chỉ dùng các kí
tự từ bảng chữ cái đó. Ðể minh hoạ, giả sử ta phải mã hoá bất kì một chuỗi nào từ một
chữ cái đó, ta sẽ giả định rằng ta chỉ có 26 chữ cái trong bảng chữ cái (và cả khoảng
trống) để làm việc.
Ðể có thể dùng vài chữ cái để biểu diễn các số và các kí tự khác biểu diễn các phần
tử của chuỗi sẽ được mã hoá, ta phải chọn một kí tự được gọi là kí tự "Escape". Mỗi
một sự xuất hiện của kí tự đó báo hiệu rằng hai chữ cái tiếp theo sẽ tạo thành một cặp
(số đếm, kí tự) với các số đếm được biểu diễn bằng cách dùng kí tự thứ i của bảng chữ
cái để biểu diễn số i. Vì vậy, chuỗi ví dụ của chúng ta sẽ được biểu diễn như sau với Q
được xem là các kí tự "Escape"
QDABBBAABQHCDABCBAAAQDBCCCD
Tổ hợp của kí tự "Escape", số đếm và một kí tự lặp lại được gọi là một dãy Escape.
Chú ý rằng không đáng để mã hoá các đường chạy có chiều dài ít hơn bốn kí tự, vì ít
nhất là cần đến ba kí tự để mã hoá bất kì một loạt chạy nào.
Trong trường hợp bản thân kí tự "Escape" xuất hiện trong dãy kí tự cần mã hoá ta
sử dụng một dãy "Escape" với số đếm là 0 (kí tự space) để biểu diễn kí tự "Escape".
Như vậy trong trường hợp kí tự "Escape" xuất hiện nhiều thì có thể làm cho tập tin
nén phình to hơn trước.
Các loạt chạy dài có thể được cắt ra để mã hoá bằng nhiều dãy Escape, ví dụ, một
loạt chạy gồm 51 chữ A sẽ được mã hoá như QZAQYA bằng cách dùng trên.
Phương pháp mã hoá độ dài loạt thường được áp dụng cho các tập tin đồ hoạ
bitmap vì ở đó thường có các mảng lớn cùng màu được biểu diễn dưới dạng bitmap là
Page 20
Nhóm 13:Xử lý số liệu truyền
các chuỗi bit có đường chạy dài. Trên thực tế, nó được dùng trong các tập tin .PCX,
.RLE.
2.2). Phương pháp nén LZW
Phương pháp nén LZW được phát minh bởi Lempel - Zip và Welch. Nó hoạt động
đựa trên một ý tưởng rất đơn giản là người mã hoá và người giải mã cùng xây dựng
bản mã.
Giải thuật nén LZW được sử dụng cho tất cả các file nhị phân, nó thường dùng để
nén các loại văn bản , ảnh đen trắng , ảnh màu, ảnh đa mức xám … và là chuẩn nén
cho các dạng ảnh GIF và TIFF.
Nguyên tắc hoạt động của nó như sau:
- Một xâu kí tự là một tập hợp từ hai kí tự trở lên.
- Nhớ tất cả các xâu kí tự đã gặp và gán cho nó một dấu hiệu (token) riêng.
- Nếu lần sau gặp lại xâu kí tự đó, xâu kí tự sẽ được thay thế bằng dấu hiệu của
nó. Phần quan trọng nhất của phương pháp nén này là phải tạo một mảng rất lớn dùng
để lưu giữ các xâu kí tự đã gặp (Mảng này được gọi là "Từ điển"). Khi các byte dữ
liệu cần nén được đem đến, chúng liền được giữ lại trong một bộ đệm
chứa(Accumulator) và đem so sánh với các chuỗi đã có trong "từ điển". Nếu chuỗi dữ
liệu trong bộ đệm chứa không có trong "từ điển" thì nó được bổ sung thêm vào "từ
điển" và chỉ số của chuỗi ở trong "từ điển" chính là dấu hiệu của chuỗi. Nếu chuỗi
trong bộ đệm chứa đã có trong "từ điển" thì dấu hiệu của chuỗi được đem ra thay cho
chuỗi ở dòng dữ liệu ra. Có bốn qui tắc để thực hiên việc nén dữ liệu theo thuật toán
LZW là:
• Qui tắc 1:
- 256 dấu hiệu đầu tiên được dành cho các kí tự đơn (0 - 0ffh).
Chứa các số nguyên từ 0-255 , đây là mã của 256 ký tự trong bảng mã ASCII.
-Từ mã thứ 256 chứa một mã đặt biệt đó là mã xóa. Nhằm khắc phục tình trạng
số mẫu lặp lặp ảnh lớn hơn 4906. khi dó một ảnh được quan niệm là nhiều mảnh ảnh,
và từ điển là một bộ từ điển gồm nhiều từ điển con.
-Từ mã thứ 257 chứa mã kết thúc thông tin, mã này có giá trị 257 , chương
trình giải mã sẽ lặp đi lặp lại cho đến khi gặp mã kết thúc thông tin thì dừng lại.
- Các từ mã còn lại từ 258-4095 chứa các mẫu thường gặp , 512 phần tử đầu
tiên của từ điển được biểu diễn bằng 9 bit, các từ mã từ 512-1023 biểu diễn bằng 10
bit, 1024-2047 biều diễn bằng 11 bit, 2048-4095 bằng 12 bit.
• Qui tắc 2: Cố gắng so sánh với "từ điển" khi trong bộ đệm chứa đã có nhiều
hơn hai kí tự.
• Qui tắc 3: Các kí tự ở đầu vào (Nhận từ tập tin sẽ được nén) được bổ sung
vào bộ đệm chứa đến khi chuỗi kí tự trong bộ đệm chứa không có trong "từ
điển".
• Qui tắc 4: Khi bộ đệm chứa có một chuỗi mà trong "từ điển" không có thì
chuỗi trong bộ đệm chứa được đem vào "từ điển". Kí tự cuối cùng của
Page 21
Nhóm 13:Xử lý số liệu truyền
chuỗi kí tự trong bộ đệm chứa phải ở lại trong bộ đệm chứa để tiếp tục tạo
thành chuỗi mới.
3.Nén theo mã hóa Huffman
- Phương pháp nén theo mã Huffman khai thác một đặc tính là không phải tất cả
các ký hiệu trong một frame truyền có cùng tần suất xuất hiện.
-Thay vì dùng một số bit nhất định trên một ký tự, chúng ta dùng một lược đồ mã
hóa khác trong đó các ký tự xuất hiện thường xuyên được mã hóa với số bit ít hơn các
ký tự có tần suất xuất hiện thấp. Do đó lược đồ này là dạng mã hóa thống kê. Vì số bit
trên mỗi ký tự thay đổi nên chúng ta phải dùng phương pháp truyền đồng bộ thiên
hướng bit.
- Chuỗi ký tự truyền được phân tích và các loại ký tự và tần suất xuất hiện được
xác định. Hoạt động mã hóa sau đó liên quan đến việc tạo ra môt cây không cân bằng
trong đó một số nhánh (là các từ mã trong thực tế) ngắn hơn một số nhánh khác
- Mức độ thiếu cân bằng là một hàm của tần suất xuất hiện các ký tự, càng trải
rộng ra độ mất cân bằng trong cây càng lớn. Kết quả cuối cùng sẽ được một cây được
gọi là cây Huffman.
Ví dụ, muốn mã hóa từ "PETE", với 3 ký tự “E”, “P”, “T”. Ta có:
- Nếu mã hóa bằng các từ mã có độ dài bằng nhau, ta dùng ít nhất 2 bit cho một ký
tự. Chẳng hạn “E”=00, “P”=01, “T”=10. Khi đó mã hóa của cả từ là 0001010010.
- Nếu mã hóa “E”=0, “P”=01, “T”=11 thì bộ từ mã này không là mã tiền tố. Vì từ
mã của “E” là tiền tố của từ mã của “P”.
- Nếu mã hóa “E”=0, “P”=10, “T”=11 thì bộ mã này là mã tiền tố. Khi đó, để mã
hóa xâu “PETE” ta có 01010011.
Biểu diễn mã tiền tố bằng cây nhị phân
Một bộ mã tiền tố gồm n lá sẽ được biểu diễn bằng cây nhị phân n lá. Với qui ước,
khi duyệt từ nút gốc đến lá, nếu rẽ sang phải là 1, và rẽ sang trái là 0. Ví dụ, bộ từ mã ở
trên có thể được biểu diễn như sau:
*
0 1
(E) (*)
0 1
(P) (T)
- Mỗi cây Huffman là một cây nhị phân với các nhánh được gán giá trị 0 hay
1 ví dụ về cây huffman được trình bày hình 4.11(a).cây này tương ứng với chuỗi ký tự
AAAABBCD.
RN
Page 22
Nhóm 13:Xử lý số liệu truyền
0 1
BN LN=A
BN LN=B RN=root node
LN=D LN=C BN=branch node
LN=leaf node
A=1
B=01
C=001
D=000
Hình 4.11(a).
- Mỗi từ mã được dùng cho mỗi ký tự(được ghi lại tại các nút lá)được xác định bằng
cách dò theo đường dẫn từ node gôc đến node lá tương ứng và hình thành một chuỗi
cácgiá trị nhị phân. từ các mã này có thể sẽ dùng.
4X1+2X2+1X3+1X3=14bit
Để truyền chuỗi AAAABBCD
-Lượng bit trung bình trên mỗi từ mã bằng cách lấy lượng bit trong mỗi từ mã nhân với
xác suất xuất hiện rồi cộng toàn bộ lại
1x0,5+2x0,25+3x0,125+3x0,125=1,75 bit/từ mã
-Lượng bit trung bình tối thiểu trên một từ mã theo lý thuyết để truyền chuỗi thông điệp
được gọi là entropy,H,của thông điệp này.có thể tính toán H bằng cách dùng công thức
được suy ra từ luật Shannon.
H bit/từ mã
Trong đó: + n số ký tự trong thông điệp
+ pi là xác suất xuất hiện của ký tự i trong thông điệp
Do đó trong thông điệp AAAABBCD,lượng bit trung bình tối thiểu trên một từ mã là:
H=-(0,5log
2
0,5+0,25log
2
0,25+0,125log
2
0,125+0,125log
2
0,125)=1,75 bit/từ mã
-Dùng từ mã ASCII 7-bit sẽ cần 8x7=56bit để truyền toàn bộ chuỗi thông điệp này,con
số này nhiều hơn đáng kể so với 14bit khi dùng mã hóa Huffman.
-Để diễn tả làm thế nào xác định cây Huffman trong hinh 4.11(a),chúng ta phải dùng
thêm thông tin liên quan đến tần số xuất hiện mỗi ký tự như liệt kê trong
8
0 1
4 A4
Page 23
Nhóm 13:Xử lý số liệu truyền
2 B2
D1 C1
A4 A4 A4(1) A4=(1) 1
B2 B2(1) 4(0) B2=(1)(0) 01
C1(1) 2(0) C1=(1)(0)(0) 001
D1(0) D1=(0)(0)(0) 000
Tần số xuất hiện Bắt đầu tại Bắt đầu tại
nút lá nút gốc
hình 4.11(b)
Cây Huffman
Mã Huffman dựa trên cơ sở của cây Huffman, là một cây nhị phân với các tính chất:
-Mỗi ký tự được biểu diễn bằng một nút lá.
-Mã cho một ký tự được lấy thông qua đường dẫn từ gốc đến nút lá đó, đi sang trái ta
nhận được bit 0, sang phải bit 1
-Tính chất tiền tố thể hiện ở việc các ký tự phải nằm ở nút lá.
Ưu điểm và Nhược điểm
-Ưu điểm: Mã Huffman có ưu điểm là có thể dùng để nén một tập hợp các phần tử dữ
liệu bất kỳ.
-Nhược điểm: File nén cần chứa thông tin để dựng lại cây mã, nếu không ta không thể
giải mã.
IV. MẬT MÃ HÓA SỐ LIỆU
1. Khái quát:
Đường truyền số liệu trong một số trường hợp cần được bảo mật như quốc
phòng, ngân hàng ……
- Ngoài các biện pháp xử lý số liệu cần thiết khi truyền thì số liệu còn được mã
hóa theo một phương pháp nào đó, theo một khóa mã nào đó mà chỉ máy thu
và máy phát mới biết được Quá trình giải mã
- Các quá trình mật mã hóa và giải mã thường được thực hiện ở tầng liên kết
(DATA LINK).
- Tuy nhiên cũng có những vi mạch cỡ lớn chuyên thực hiện việc mã hóa.
2. Mật mã hóa cổ điển:
Page 24
Nhóm 13:Xử lý số liệu truyền
Bản gốc sẽ được mã hóa bằng một khóa được xác định trước để tạo ra một bản
mã =>Bản mã chính là bản được truyền lên kênh.
Khi thâm nhập vào kênh, đối phương có thể thu trộm được bản mã nhưng không
biết khóa mã nên không thể hoặc khó mà tìm ra được bản gốc.
• Về mặt toán học có thể mô phỏng mật mã cổ điển như sau:
Một hệ thống mã là một tập có 5 thành phần (P, C, K, E, D) trong đó :
+ P là tập hợp hữu hạn các bản gốc có thể
+ C là tập hợp hữu hạn các mã gốc có thể
+ K là tập hợp khóa có thể đối với mỗi k K có một luật mã : P
C; và một luật giải mã tương ứng : P C; .
• Có nhiều phương pháp trong mã hóa cổ điển, sau đây chúng ta sẽ trình bày
về phương pháp MÃ DỊCH VÒNG:
- Phương pháp này có cơ sở là phép toán module.
Ta sẽ dùng phép module 26 (trong tiếng Anh có 26 chữ cái):
Ví dụ minh họa :
Giả sử chúng ta sẽ sử dụng khóa cho mã dịch vòng này là 5.
Muốn truyền một chuỗi ký tự có bản gốc như sau:
THANHTUNG
Trước hết theo phương pháp dịch vòng cho module 26. Bên máy phát
thống nhất với bên thu sẽ sử dụng khóa là 5.
- Bước 1: Biến bản gốc thành chuỗi các số nguyên theo bảng trên:
T = 19 H = 7 A = 0 N = 13 H = 7
T = 19 U = 20 N = 13 G = 6
- Bước 2: Cộng thêm 5 (K = 5) vào mỗi giá trị rồi module 26 ta được:
24 12 5 18 12
24 25 18 11
Page 25