Chương 4<br />
<br />
LỖI TRUYỀN THÔNG, ĐIỂU KHIEN<br />
VÀ THỦ TỤC<br />
LIẾN KẾT DỮ LIỆU<br />
•<br />
»<br />
4.1. P h á t h i ệ n v à s ử a lỗ i<br />
M ạ n g p h ả i có k h ả n ă n g t r u v ề n c h í n h xác d ữ liệu t ừ t h i ế t bị n à v<br />
<br />
tới thiết bị khác. Một hệ thống không bảo đảm dữ liệu nhận giống<br />
như dữ liệu truyền là hệ thông không sử dụng đ ư ợ c . Có nhiều nhân<br />
tô, như tạp nhiễu đường dây có thể làm hỏng một hoặc nhiều bit của<br />
khối dữ liệu đang truyền. Một hệ thông thực sự dùng được phải có cơ<br />
cấu đê p h át hiện và sửa các lỗi đó.<br />
Việc p h á t h i ệ n v à s ử a lỗi được t r a n g bị ở lớp liên k ế t d ữ liệu h o ặ c<br />
lớp giao v ậ n t ư ơ n g ứ n g t r o n g m ô h ì n h OSĨ.<br />
<br />
4.1.1. Các loại lôi<br />
T í n h i ệ u đ i ệ n t ừ t r u y ề n t ừ nơi n à y s a n g nới k h á c có t h ề bị n h i ễ u<br />
từ nguồn nhiệt, n g u ồ n diện từ hoặc từ n h ữ n g d ạ n g điện khác. N hiễu<br />
là m t h a y đổi h ì n h d ạ n g h o ặ c độ kéo d à i c ủ a tí n h i ệ u N ế u là t í n h iệ u<br />
n h ị p h â n “0 ”, “1” t h ì n h i ễ u có t h ể b i ế n đổi “0 ” t h à n h “ 1” v à “ 1” t h à n h<br />
“0’\ S ự t h a y đổi có t h ể là t ừ n g b i t h o ặ c m ộ t n h ó m bit.<br />
Có 3 loại lỗi t h ư ờ n g g ặ p n l i ấ t là đơ n bĩt, n h i ề u b i t v à đ ả o bit.<br />
T r o n g SC) đó đ ơn b i t x ả y r a n h i ê u hơn cả, còn đ ả o b i t ít x ả y r a hơn.<br />
<br />
4.1.1.1. Lỗi đơn bit<br />
C hỉ có m ộ t b i t t r o n g d ơ n vị d ữ liệu bị t h a y đôi ( t h í d ụ n h ư m ộ t<br />
b i t t r o n g b y t e , t r o n g m ộ t k í tự, t r o n g m ộ t gói d ữ liệu...).<br />
<br />
Trên hình 4.1. dãy 00000010 là mã ASCII của kí tự STX, có nghĩa<br />
là bắt đẩu đoạn vàn bản, nhưng thiết bị nhận lại n h ậ n được chuỗi<br />
0001010 (mã ASCII c ủ a ký tự LF) có nghĩa là xuống dòng.<br />
121<br />
<br />
“0" biến thành “ 1”<br />
<br />
0<br />
<br />
0<br />
<br />
0<br />
<br />
0<br />
<br />
0<br />
<br />
1<br />
<br />
0<br />
<br />
0<br />
<br />
0<br />
<br />
0<br />
<br />
1<br />
<br />
0<br />
<br />
0<br />
<br />
Gửi đi<br />
<br />
0<br />
<br />
1<br />
<br />
I°<br />
<br />
Nhặn được<br />
<br />
Hình 4.1 Lỗi đơn bit<br />
<br />
4.1.1.2. Lỗi đa bit<br />
Có n g h ĩ a là<br />
<br />
2<br />
<br />
h o ặ c n h i ề u b i t t r o n g k h ỏ i d ữ liệu bị b i ế n đối<br />
<br />
t h à n h u0 ” h o ã c t ừ “ 0 ” t h à n h “ 1 ”.<br />
Hai lỗi<br />
<br />
1<br />
<br />
0<br />
<br />
0<br />
<br />
0<br />
<br />
0<br />
<br />
0<br />
<br />
1<br />
<br />
Q.-Ỉ— ► 0<br />
<br />
0<br />
<br />
0<br />
<br />
Gửi đi<br />
<br />
i l 0 !..1.1 0<br />
<br />
0<br />
<br />
Nhặn được<br />
Hình 4.2 Lỗi đa bit<br />
<br />
Hình 4.2 chỉ ra rằng chuỗi 01000010 (mã ASCII của kí tự B)<br />
được gửi đi nhưng nơi n hận lại nh ận được chuỗi 00001010 (mã ACSII<br />
của LF) có nghĩa là xuống dòng.<br />
4.1.1.3. Lỗi đảo bit<br />
Lỗi này gồm 2 hoặc nhiều bit liên tiếp trong khôi dữ liệu bị biến<br />
đổi từ “1” th à n h “0” hoăc từ “0” th à n h “1”.<br />
Gửi đi<br />
0<br />
<br />
1<br />
<br />
0<br />
<br />
r... .......<br />
0 I 0<br />
1<br />
<br />
0<br />
<br />
3<br />
<br />
0<br />
<br />
1 I 0<br />
<br />
I 0<br />
<br />
0<br />
<br />
0<br />
<br />
1 1 1 J<br />
<br />
0<br />
<br />
0<br />
<br />
1<br />
<br />
Đảo bit<br />
0<br />
<br />
1<br />
<br />
0<br />
<br />
1 . 1 1 .0 . ì 1<br />
<br />
1<br />
<br />
0<br />
<br />
1<br />
<br />
Nhận được<br />
<br />
Hình 4.3: Lỗi đảo bit<br />
<br />
122<br />
<br />
0<br />
<br />
0<br />
<br />
1<br />
<br />
4.1.2. P h á t h i ệ n lôi<br />
Làm t h ê nào dể biết được khi nào có m ộ t trong nh ữ n g lỗi kể<br />
t r ê n xảy ra nếu c h ú n g t a k h ô n g có copy b ả n gốc của dữ liệu gửi đi<br />
để so sán h . Rõ r à n g cần một cơ câu đơn giản và hoàn thiện đê<br />
p h á t hi ện lỗi t r u y ề n .<br />
Có t h ể p h ả i gửi mỗi đ ơ n vị d ữ liệu h a i lầ n , nơi n h ậ n so s á n h h a i<br />
đơ n vị d ữ liệ u n h ậ n được t h e o t ừ n g b it m ột, t ừ đó p h á t h i ệ n r a lỗi,<br />
n h ư n g n h ư v ậ y t h ì m ấ t 2 l ầ n t h ò i g i a n đ ể gửi m ộ t đơn vị d ữ liệu, cộng<br />
t h ê m thời g i a n đ ế so s á n h t ừ n g b i t d ữ liệu. C h ỉ b ằ n g c á c h đ ư a vào các<br />
t h ô n g ti n d ư t h ừ a t r o n g q u á t r ì n h t r u y ề n n h ằ m m ụ c đ ích so s á n h mởi<br />
là một ý tô t. T h a y t h ế việc l ặ p lại t o à n bộ c h u ỗ i d ữ liệu, chỉ c ầ n m ộ t<br />
n h ó m n h ỏ c á c b i t t h ê m v à o cuối mỗi đơn vị d ữ liệu. Kỹ t h u ậ t n à y<br />
được gọi là d ư t h ừ a bơi vì có m ộ t sô b i t b ê n n goài được t h ê m v à o là<br />
t h ừ a so<br />
<br />
với<br />
<br />
t h ô n g t i n c ầ n gửi đi.<br />
<br />
Những<br />
<br />
b i t dư t h ừ a n à y sẽ được bỏ đi.<br />
<br />
k h i t h ô n g t i n t r u y ề n tới nơi n h ậ n đ ã được k i ể m t r a v à xác n h ậ n là<br />
k h ô n g bị lỗi.<br />
H ì n h 4.4 chỉ r a q u á t r ì n h s ử d ụ n g n h ữ n g b it d ư t h ừ a đ ể nơi n h ậ n<br />
k i ể m t r a s ự c h í n h xác c ủ a đơ n vị dữ liệu.<br />
<br />
Data<br />
<br />
1010000000010101010<br />
Nhận<br />
Chức năng<br />
kiểm tra<br />
<br />
Chức nâng<br />
phát<br />
<br />
Từ chối<br />
nhân<br />
<br />
1011101<br />
Dư thừa<br />
Nơi gửi<br />
<br />
Nơi nhận<br />
1 Dư thừa<br />
1011101<br />
<br />
Dữ liêu<br />
101000000001010101010<br />
<br />
Hinh 4.4 Phương pháp sử dụng các bit dư thừa<br />
<br />
Mỗi k h i c h u ỗ i d ữ li ệ u được p h á t đi đ ề u p h ả i q u a m ộ t t h i ế t bị<br />
p h â n tíc h v à b ổ s u n g v à o c h u ỗ i d ữ liệ u đó m ã k i ể m t r a dư t h ừ a t h í c h<br />
hợp. Đơn vị d ữ li ệ u t r ở n ê n lớn h ơ n bởi m ộ t sô" b it t h ê m v à o ( t r ê n<br />
123<br />
<br />
h ì n h 4.4 là 7 bit) t ấ t cả được t r u y ề n lên đ ư ờ n g liê n k ế t đ ế n nơi n h ậ n .<br />
T h i ê t bị n h ậ n đ ặ t t o à n bộ c h u ỗ i n à y v à o m ộ t k h ô i k i ể m t r a . N ế u<br />
c h u ỗ i d ữ liệu n h ậ n được đi q u a được k h ô i k i ể m t r a t h ì p h ầ n d ữ liệu<br />
sẽ được n h ậ n còn các b i t d ư t h ừ a sẽ được bỏ q u a .<br />
Có 4 c á c h đ ể k i ể m t r a d ư t h ừ a t r o n g t r u y ề n t h ô n g d ữ liệu: K iểm<br />
t r a d ư t h ừ a đ ứ n g (VRC) loại n à y còn được gọi là k i ể m t r a c h ẵ n lẻ.<br />
<br />
kiểm tra dư thừa dài (LRC), kiểm tra dư thừa tu ầ n h o à n (CRC), và<br />
t ô n g k i ể m t r a ( c h e c k s u m ) . Ba loại đ ầ u được t h ự c h i ệ n t r o n g lớp v ậ t lý<br />
đốì với ứ n g d ụ n g t r o n g lớp liên k ế t d ữ liệu. L o ạ i t h ứ t ư ( tứ c t ổ n g<br />
k i ể m t r a ) được s ử d ụ n g t r o n g các m ạ n g , k ể c ả I n t e r n e t v à t h ự c th i<br />
t r o n g lớp g iao v ậ n .<br />
Các phương pháp phát I<br />
hiên lỗi<br />
<br />
Hình 4.5<br />
<br />
a)<br />
<br />
Kiểm tra dư thừa đứng (VRC): Nó là cơ c ấ u c h u n g n h ấ t v à dơn<br />
<br />
g i ả n n h ấ t đ ể k i ể m lỗi. B it d ư t h ừ a ở đ â y được gọi là b i t c h ẵ n lẻ được<br />
bô s u n g v à o đơn vị d ữ liệu sao cho t ổ n g sô" c ác b i t<br />
<br />
1<br />
<br />
t r o n g k h ô i là c h ẵ n<br />
<br />
h o ặ c lẻ. C ả h ệ t h ô n g gửi và n h ậ n đ ề u p h ả i s ử d ụ n g c ù n g m ộ t loại<br />
c h ẵ n lẻ, h o ặ c c h ẵ n lẻ là c h ẵ n h o ặ c c h ẵ n lẻ là lẻ, q u a đó t h i ế t bị n h ậ n<br />
b i ế t r ằ n g đơ n vị d ữ liệu đ ã t r u y ề n có bị lỗi dọc đ ư ờ n g đi k h ô n g , n ế u<br />
lỗi th ì k h ô n g n h ậ n nó.<br />
T h í d ụ c h ú n g t a m u ô n t r u y ề n dơn vị d ữ l i ệ u<br />
<br />
1100001<br />
<br />
( m ã ARC II<br />
<br />
c ủ a 97). T ổ n g các số’“ 1” t r o n g đơn vị d ữ l i ệ u n à y b ằ n g 3 lả m ộ t sô lẻ.<br />
T rư ớ c k h i t r u y ề n k h ô i n à y p h ả i q u a bộ p h á t c h ẵ n lẻ. Bộ p h á t c h ẵ n lẻ<br />
đ ê m các sô<br />
11100001<br />
<br />
1<br />
<br />
v à p h á t c h ẵ n lẻ ( c h ẵ n ) bố s u n g t h ê m<br />
<br />
: t ổ n g sô"<br />
<br />
1<br />
<br />
n g h ĩ a là<br />
<br />
b â y giò là 4 là m ộ t số’ c h ẵ n . H ệ t h ô n g t r u y ề n<br />
<br />
1<br />
<br />
t o à n bộ kh ô i đ ã được m ỏ r ộ n g n à y q u a li ê n k ế t . K h i đ ế n nơi n h ậ n ,<br />
t h i ế t bị n h ậ n đ ặ t cả<br />
<br />
8<br />
<br />
b i t vào k hôi k i ể m t r a c h ẵ n lẻ (c h ẵ n ) . N ế u t h i ế t<br />
<br />
bị n h ậ n t h ấ y c h u ỗ i 1 1 1 00 001 v à t í n h được t ổ n g c á c sô" “ 1” b ằ n g 4 là<br />
m ộ t sô c h ẵ n , k hôi d ữ liệu được x e m là k h ô n g lỗi, b i t c h ẵ n lẻ đư ợ c bỏ<br />
đi v à p h ầ n d ữ liệu được n h ậ n . N ế u q u á t r ì n h t r u y ề n bị lỗi, g iả sử<br />
124<br />
<br />
t h i ê t bị n h ậ n dược c h u ỗ i 1110 0 1 0 1 . Khi đó k h ỏ i k i ể m t r a c h ẵ n lẻ<br />
( c h a n ) t í n h được t ố n g các sô" “ 1” b ằ n g 5, đó là m ộ t sô lẻ. T h i ế t bị n h ậ n<br />
biêt rằ n g<br />
<br />
có lỗi t r o n g c h u ỗ i d ữ liệu t r u y ề n tới v à nó t ừ chối n h ậ n<br />
<br />
t o à n bộ khôi d ữ liệ u n à y . T h í d ụ m i n h h o ạ chỉ r a t r ê n h ì n h 4.6.<br />
<br />
Nơi gửi<br />
Hinh 4.6 Kiểm lỗi VRC<br />
<br />
Độ tin cậy:<br />
<br />
VRC p h á t<br />
<br />
h iệ n<br />
<br />
được<br />
<br />
các lỗi đơn bit. Nó chỉ có th ể p h á t hiện<br />
<br />
đ ư ợ c lỗi đ a b i t k h i t ố n g c á c b i t t h a y đổi là m ộ t s ố ’ lẻ (1, 3. 5...). T h í<br />
d ụ c h u ỗ i 100011 1011 t ổ n g sô b i t “ 1” b ằ n g 6 là m ộ t sô c h ẵ n . N ế u có<br />
<br />
3 bit bị th ay đối giá trị thì c h ẵ n lẻ cuối cùng là một sô" lẻ và sẽ<br />
dược p h á t hiện.<br />
N ế u h a i b i t c ủ a d ữ liệu t h a y đối giá trị th ì t ổ n g sô" các sỗ» “ 1” t r o n g<br />
đơn vị dữ liệu là m ộ t s ố c h ẵ n , việc k i ể m t r a k h ô n g p h á t h i ệ n được lỗi<br />
<br />
và sẽ cho qua đơn vị dữ liệu này mặc dù nó chứa hai lỗi. VRC không<br />
thể ph át hiện lỗi khi tổng sô' bit bị thay đổi giá trị là một số’chẵn.<br />
<br />
b) Kiếm lỗi dư thừa dài LRC :<br />
C á c h k i ể m lỗi n à y t h ự c h i ệ n việc k i ể m lỗi V R C t h e o cả h a i<br />
<br />
hướng. C á c h này p h á t hiện được cả lỗi đa bit và đảo bit vì nó kiểm<br />
t r a m ỗi b it h a i lầ n .<br />
K iể m lỗi L R C n h ó m m ộ t số ’ đ ơ n vị d ữ liệu t h à n h k h ố i, n h ữ n g đơn<br />
vị d ữ liệu n à y đ ề u c h ứ a b i t c h ẵ n lẻ VRC. N h ữ n g b i t có vị t r í b i t t ư ơ n g<br />
ứ n g c ủ a mỗi đ ơ n vị d ữ liệu (các b i t t h ứ n h ấ t , các b i t t h ứ hai...) được<br />
di q u a m á y p h á t đ ể t ì m c h ẵ n lẻ t h e o vị t r í c ủ a c h ú n g t r o n g khôi. Mỗi<br />
vị t r í lấy c h ẵ n lẻ c ủ a r i ê n g m ì n h . C ác b i t c h ẵ n lẻ c ủ a t ấ t cả các vị t r í<br />
<br />