Tải bản đầy đủ (.ppt) (39 trang)

Bài giảng Truyền số liệu 4 potx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (636.42 KB, 39 trang )

08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 1
Chương 4: Điều khiển liên kết dữ liệu
1. Chia khung dữ liệu
2. Kiểm soát luồng dữ liệu
3. Phát hiện và sửa lỗi
4. Kiểm soát lỗi
5. Giao thức HDLC
6. Các giao thức khác
7. Bài tập
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 2
Điều khiển liên kết dữ liệu

Truyền tín hiệu trên liên kết
vật lý

Truyền dữ liệu trên liên kết
vật lý

Thiết lập liên kết dữ liệu

Truyền dữ liệu

Giải phóng liên kết dữ liệu

Vấn đề cần giải quyết

Chia dữ liệu thành khung

Kiểm soát luồng dữ liệu

Kiểm soát lỗi



Đánh địa chỉ

Gộp dữ liệu điều khiển và dữ
liệu trên cùng một liên kết

Quản lí liên kết

Chưa có vấn đề nào
được giải quyết ở tầng
vật lý

Nội dung chương 4

Chia khung

Kiểm soát lỗi

Kiểm soát luồng dữ liệu

HDLC: Giao thức kiểm
soát dữ liệu bậc cao

Các giao thức khác
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 3
1. Chia khung

Dữ liệu cần chia thành từng khối để

đảm bảo đồng bộ vật lý


Bổ sung các bít kiểm tra để phát hiện và sửa lỗi

Bổ sung các thông tin điều khiển

Tầng vật lý truyền một chuỗi bít không có cấu trúc.

Có thể chia khung sử dụng các bít đặc biệt

Tầng liên kết dữ liệu có thể chia khung sử dụng

Khoảng lặng giữa các khung dữ liệu

Không đảm bảo đồng bộ, dễ bị ảnh hưởng bởi nhiễu

Số đếm ký tự

Ký tự đặc biệt

Chuỗi bít đặc biệt
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 4
Dùng số đếm ký tự

Dữ liệu chia thành nhiều ký tự, mỗi ký tự có từ 5-8 bít (giao
thức hướng ký tự)

Ký tự đầu tiên của một khung dữ liệu chứa số lượng ký tự của
khung dữ liệu

Tại đích, căn cứ vào số đếm để xác địng ranh giới các khung


Khi có 1 lỗi bất kỳ, mất đồng bộ, không có khả năng tái lập lại,
kể cả khi phát hiện ra có lỗi

Dùng để hỗ trợ các phương pháp khác (phát hiện lỗi)
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 5
Dùng ký tự đặc biệt

Dùng một ký tự đặc biệt
FLAG để phân tách các
khung dữ liệu

Nếu trong dữ liệu có ký tự
FLAG, chèn một ký tự đặc
biệt khác vào trước (ESC),
trước khi tạo khung dữ liệu

Nếu trong dữ liệu có ký tự
ESC, chèn tiếp một ký tự
ESC

Tại đích: khi nhận khung dữ
liệu,

Căn cứ vào FLAG đứng riêng
để chia khung

Loại bỏ các ký tự chèn thêm

ESC FLAG=FLAG


ESC ESC=ESC

Giới hạn trong một bảng chữ
cái

Dùng trong PPP cho liên kết
quay số
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 6
Dùng chuỗi bít đặc biệt

Dùng một chuỗi bít đặc
biệt để phân chia các
khung dữ liệu

Ví dụ 01111110

Khi có chuỗi 01111110
trong dữ liệu

Nếu có 5 bit 1 liền nhau,
chèn 1 bít 0 vào sau

Tại đích

Tách khung

111110 được chuyển
thành 11111
(a) Dữ liệu ban đầu.

(b) Dữ liệu truyền đi.
(c) Dữ liệu tại đích.
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 7
2. Kiểm soát luồng dữ liệu

Đảm bảo trạm nguồn không làm quá tải trạm đích

Trạm đích

lưu trữ các khung dữ liệu trong bộ nhớ đệm

Thực hiện một số thao tác trước khi chuyển dữ liệu lên tầng
trên

Bộ nhớ đệm có thể bị đầy, dẫn tới mất khung dữ liệu

Chưa đặt vấn đề lỗi truyền tin

Các khung dữ liệu luôn luôn được truyền chính xác

Độ trễ truyền tin không xác định

Giải pháp

Cơ chế dừng và chờ

Cơ chế cửa sổ trượt
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 8
Cơ chế dừng và chờ


Nguyên tắc

Nguồn gửi một khung dữ liệu

Đích nhận khung dữ liệu, xử lí, sau đó thông báo sẵn sàng nhận các
khung dữ liệu tiếp theo bằng một thông báo báo nhận
(acknowledgement)

Nguồn chờ đến khi nhận được báo nhận mới truyền tiếp khung dữ liệu
tiếp theo

Ưu điểm

Đơn giản, đặc biệt thích hợp với các khung dữ liệu lớn

Nhược điểm

Với các khung dữ liệu nhỏ, thời gian sử dụng đường truyền bị lãng phí

Không thể sử dụng các khung dữ liệu lớn một cách phổ biến

Bộ nhớ đệm có hạn

Khung dữ liệu dài khả năng lỗi lớn

Trong môi trường truyền tin chia sẻ, không cho phép trạm nào chiếm dụng
lâu đường truyền
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 9
Cơ chế cửa sổ trượt


Cơ chế dừng và chờ: chỉ cho phép truyền một khung
dữ liệu

Cơ chế cửa sổ trượt cho phép truyền nhiều khung dữ
liệu cùng một lúc

Xét hai trạm A, B kết nối bằng một đường truyền song
công

B có bộ nhớ đệm n khung dữ liệu

Như vậy A có thể gửi cùng một lúc n khung dữ liệu mà
không cần báo nhận

Báo nhận

Để ‘nhớ’ các khung dữ liệu đã báo nhận, cần đánh số các
khung dữ liệu

B báo nhận một khung bằng cách báo số khung dữ liệu mà
B đang chờ nhận, ngầm định đã nhận tất cả các khung
trước đó

Một báo nhận có thể dùng cho nhiều khung dữ liệu
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 10
Cơ chế cửa sổ trượt

Cửa sổ

A quản lý một danh sách các số thứ tự khung được

quyền gửi đi (cửa sổ gửi)

B quản lý một danh sách các số thứ tự khung đang
chờ nhận (cửa sổ nhận)

-> cơ chế cửa sổ trượt

Số thứ tự khung dữ liệu có độ dài giới hạn, do đó
cần được lấy modulo. Vd 3 bít-> modulo 8

Cửa sổ bị giới hạn bởi giá trị lớn nhất của số thứ tự

Ví dụ 3 bít, cửa sổ gửi = cửa sổ nhận=8
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 11
Cơ chế cửa sổ trượt

Hình trên

Tại nguồn

Cận dưới của cửa sổ tăng lên khi
gửi một (nhiều) khung dữ liệu

Cận trên của cửa sổ tăng lên khi
nhận một (nhiều) báo nhận

Tại đích

Cận dưới của cửa sổ tăng lên khi
nhận một (nhiều) khung dữ liệu


Cận trên của cửa sổ tăng lên khi
gửi một (nhiều) báo nhận

Hình dưới

A có thể gửi 7 khung dữ liệu cùng
một lúc từ F0

A gửi F0,F1,F2, giảm cửa sổ
xuống còn 4

B có thể nhận 7 khung

B nhận F0,F1,F2 giảm CS còn 4

B xử lí xong F0,F1,F2, RR 3, tăng
CS

A gửi F3,4,5,- giảm CS còn 3

B nhận F3, xử lí, gửi RR 4
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 12
Cơ chế cửa sổ trượt

Kiểm soát luồng dữ liệu

Khi trạm B không có khả năng nhận thêm khung dữ liệu, CS
nhận tin=0, B gửi thông báo RNR 5 Receive Not Ready


Sau khi B xử lí một số các khung dữ liệu trong bộ nhớ đệm,
CS>0, B gửi RR x Receive Ready, báo nhận và chờ nhận

Trong trường hợp truyền tin hai chiều

A và B cùng truyền tin

Khi B cần báo nhận và cần truyền số liệu. B gửi kèm báo
nhận trong khung dữ liệu: Piggybacking

Nếu không, B gửi một khung báo nhận riêng

Sau khi gửi báo nhận, nếu B truyền khung dữ liệu, B vẫn
đặt số báo nhận trong khung dữ liệu

Cơ chế cửa sổ trượt hiệu quả hơn nhiều so với dừng
và chờ!
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 13
3. Phát hiện và sửa lỗi

Vì sao phải phát hiện và sửa
lỗi

Xác suất lỗi của một bít tương
đối nhỏ

(P
1
=10
-6

)

Xác suất một khung dữ liệu
1000 bit không lỗi

(1-P
1
)
1000
~0,999

Xác suất lỗi của một khung dữ
liệu

1- (1-P
1
)
1000
=10
-3
Quá lớn!

Làm thế nào?

Bổ sung một số bít (dư thừa)
để phát hiện lỗi

Tại đích tính lại các bít bổ sung

Nếu hai giá trị bằng nhau:

không có lỗi

Nếu không, có lỗi, căn cứ vào
kết quả để phát hiện lỗi
 Một khung dữ liệu m bít, sử dụng thêm r
bít
 Một từ dữ liệu m bít được mã hóa bằng
một từ mã m+r bít

Hai loại mã
 Mã phát hiện lỗi: Mã Hamming
 Mã sửa lỗi

Parity bit (bít chẵn lẻ)

CRC (Cyclic Redundancy Check) mã vòng
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 14
Khoảng cách Hamming

Định nghĩa: Số các bít khác nhau giữa hai từ

Có 2
m+r
từ mã để mã hóa 2
m
từ dữ liệu

Có một số từ mã không sử dụng: từ mã không hợp lệ

Nguyên tắc phát hiện lỗi: khi có lỗi xảy ra, từ mã thu được

không hợp lệ

Ví dụ:

Thêm một bít chẵn lẻ vào sau dữ liệu

Có một tập từ mã với khoảng cách =2

Khi có 1 bit lỗi, có một từ mã không hợp lệ-> phát hiện có lỗi

Nguyên tắc sửa lỗi: khi có lỗi xảy ra, luôn luôn xác định được
từ mã hợp lệ gần nhất.

Ví dụ

Dùng 4 từ mã 0000000000, 0000011111,1111100000, 1111111111

Mã hóa từ dữ liệu 2 bít 00,01,10,11

Khoảng cách giữa các từ mã 5

Sửa được 2 lỗi: khi có 2 lỗi, từ mã hợp lệ tương ứng có khoảng cách gần
nhất

Vd khi nhận chuỗi bít 0000000111, mã hợp lệ là 0000011111 (2 bít lỗi)
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 15
Mã hamming sửa một lỗi

Giới hạn lý thuyết


từ dữ liệu có m bit, mã hóa bằng m+r bit

Có 2m từ mã hợp lệ, mỗi từ mã có m+r bit

Khi có một bít lỗi, có khả năng tạo ra m+r từ mã không hợp lệ có khoảng
cách đến từ mã hợp lệ là 1

Tập hợp của các từ mã không hợp lệ tạo ra bởi 2 từ mã hợp lệ khác
nhau phải rời nhau

Do đó 2
m
(m+r+1)<=2
m+r
hay m+r+1<=2
r

Mã Hamming sửa 1 lỗi có thể đạt được giới hạn trên

Từ mã sử dụng các checkbit ở vị trí 1,2,4,8,16….

Bít ở vị trí 2
K
sẽ là bít chẵn lẻ của tất cả các bít có số thứ tự có vị trí bít
thứ k trong khai triển nhị phân bằng 1

Một bít sẽ tham gia vào quá trình tính toán của các checkbit tương ứng
với tất cả các bit 1 trong khai triển nhị phân của số thứ tự

Khi nhận được từ mã, kiểm tra các checkbit


Nếu có 1 bít nào đó bị sai, thì tất cả các checkbit tương ứng với 1 trong
khai triển nhị phân của số thứ tự bít đó đều bị đảo dấu, các checkbit
khác giữ nguyền
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 16
Mã hamming sửa một lỗi-ví dụ

Từ mã 15 bít, bít 1,2,4,8 là
checkbit (xem bảng). Mã hóa
từ dữ liệu 11 bit

Bất cứ bít nào bị sai, các
check bít tương ứng sẽ bị
đảo

Căn cứ vào đó, đích sẽ biết
được bít nào bị đảo để sửa
lỗi

Thuật toán sửa lỗi

Tổng=0

Kiểm tra lần lượt các checkbit

Nếu checkbit bị đảo, cộng số
thứ tự của checkbit đó vào
tổng

Kết thúc kiểm tra, tổng=0:

không có lỗi, nếu tổng<>0 là số
thứ tự của bít lỗi
Số TT Số TT 1 2 4 8
0001 0010 0100 1000
1 0001 X
2 0010 x
3 0011 X X
4 0100 X
5 0101 X X
6 0110 X X
7 0111 X X X
8 1000 X
9 1001 X X
10 1010 X X
11 1011 X X X
12 1100 X X
13 1101 X X X
14 1110 X x X
15 1111 x X X X
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 17
Mã hamming sửa một chuỗi lỗi liên tiếp

Thường các bit lỗi hay xảy ra
liên tiếp

Mã hamming chỉ sửa được
một lỗi

Để sửa k lỗi liên tục


truyền cùng một lúc k từ mã mã
hóa bằng mã hamming

K từ mã này được xếp thành
ma trận bit

Ma trận này được truyền theo
từng cột.

Tại đích, ma trận được nhận, tái
tạo lại các từ mã

Trường hợp xấu nhất, khi có
k bít liên tiếp bị truyền lỗi, mỗi
từ mã chỉ có đúng 1 bít lỗi

Bằng mã Hamming, sửa
được lỗi cho mỗi từ
Dùng kr checkbit cho km bit dữ
liệu, sửa được một lỗi gồm tối đa
k bít liên tiếp
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 18
Mã phát hiện lỗi

Sửa lỗi đòi hỏi một số bít bổ sung

Nếu tỷ lệ lỗi nhỏ, các bít bổ sung đó bị lãng phí

Khi tỷ lệ lỗi nhỏ, giải pháp tốt hơn là truyền lại cả
khung dữ liệu.


Ví dụ: Tỷ suất lỗi 10
-6

Truyền 1Mb bằng khung dữ liệu mã sửa lỗi hamming độ lớn
1000 bit

Cần 10 checkbit bổ sung cho mỗi khung dữ liệu. Tổng cộng
10.000bit cho 1Mb

Nếu dùng 1 bít chẵn lẻ cho 1000 bít, khi truyền 1Mb có 1 lỗi

Tổng cộng dùng thêm 1x1000+1001=2001 bít

Do đó khi tỷ suất lỗi nhỏ, sử dụng các mã phát hiện lỗi

Parity check (bít chẵn lẻ)

Mã vòng (Cyclic redundancy check-CRC)
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 19
Bít chẵn lẻ (Parity checkbit)

Thêm một bít vào cuối khung dữ liệu.

Giá trị của bit đảm bảo số bít 1 trong khung dữ liệu
luôn là số chẵn

Khi có một bít bị lỗi, tính chẵn lẻ bị thay đổi, phát
hiện ra lỗi


Nếu có một chuỗi bít liên tiếp bị lỗi, xác suất
phát hiện ra lỗi là 0.5

Có thể dùng kỹ thuật ma trận giống như với mã
hamming để phát hiện k lỗi liên tiếp

Khi truyền lại cần truyền cả k khối dữ liệu
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 20
Mã vòng

Nguyên tắc: thêm r bít (FCS Frame Check Sequence)
vào m bít dữ liệu

số nhị phân m+r bít chia hết cho một số nguyên xác định
trước

Khi nhận được khung dữ liệu, chia cho số nguyên
trên. Nếu không còn dư tức là không có lỗi

Trong trường hợp có lỗi, giá trị của dữ liệu bị sai lệch một
số E nào đó

Lỗi luôn được phát hiện, chỉ trừ khi E chia hết cho số
nguyên trên (hiếm)

Giải thuật

Mô tả bằng phép toán nhị phân

Mô tả bằng phép toán đa thức


Mô tả bằng mạch logíc số
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 21
Mã vòng bằng phép toán nhị phân

Phép cộng, trừ nhị phân
không nhớ

X+X=0, X-X=0

Định nghĩa

T=khung dữ liệu k+n bit

M: k bit đầu tiên (dữ liệu) của T

F: n bit cuối cùng (FCS) của T

P: Số nhị phân n+1 bít

T=M 2
n
+F

Mục tiêu: Chọn F để T/P
không dư

Chia M 2
n
cho P được Q dư R.


Vì các phép trừ không nhớ nên
R có <=n bít

Chọn F=R.

T=M 2
n
+R=PQ+R+R=PQ chia
hết cho P

Ví dụ

M=1010001101 (10 bít)

P=110101 (6 bít)

Cần tính F (5 bít)

Thêm 5 số 0 sau M: Mx2
5
=
101000110100000

Chia giá trị thu được cho P

R=01110, F=01110

T=101000110101110
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 22

4. Kiểm soát lỗi

Đảm bảo truyền tin tin cậy
trên môi trường truyền tin
không tin cậy

Điều kiện

Các khung dữ liệu luôn luôn
được truyền chính xác

Độ trễ truyền tin không xác
định

Có hai loại lỗi

Mất khung dữ liệu

Khung dữ liệu bị lỗi

Các kỹ thuật sử dụng:

Phát hiện lỗi (đã học)

Báo nhận

Truyền lại với timeout

Truyền lại với báo không nhận


Các kỹ thuật trên gọi chung
là tự động truyền lại (ARQ
automatic repeat request).
Có 3 phiên bản chuẩn hóa

Dừng và chờ (Stop and
Wait)ARQ

Quay lại N(Go Back N) ARQ

Loại bỏ chọn lọc (Selective
Reject) ARQ
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 23
Dừng và chờ

Dựa trên cơ chế KS luồng
dữ liệu dừng và chờ

Nguồn chỉ có thể truyền tiếp
khi có báo nhận

Hai loại lỗi

Khung dữ liệu bị mất hoặc bị
lỗi: trạm nguồn cần có cơ chế
timeout

Báo nhận bị mất: trạm nguồn
gửi lại khung dữ liệu, trạm đích
cần loại khung dữ liệu lặp


Đánh số các khung bằng 0
và 1

Hai báo nhận tương ứng cho
0 và 1

Ưu điểm: đơn giản

Nhược điểm: không hiệu quả
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 24
Go back-N ARQ

Nguyên tắc

Dựa trên cơ chế cửa sổ trượt

Khi có một khung dữ liệu chưa được nhận, tất cả
các khung có số thứ tự sau đều bị loại bỏ

Trạm nguồn sẽ truyền lại tất cả các khung từ khung
bị lỗi

Sử dụng một khung dữ liệu báo không nhận REJ
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 25
Hoạt động

A gửi khung dữ liệu cho B, khởi động đồng hồ và chờ báo
nhận. Có thể có các trường hợp sau xảy ra


Khung dữ liệu bị lỗi.

A gửi khung i. Khung i bị lỗi. B nhận tốt khung i-1. B gửi cho A REJ i và
loại bỏ tất cả các khung nhận được sau đó. A khi nhận được REJ
truyền lại tất cả các khung từ i

Khung i bị mất. A đã gửi khung i+1, …. B nhận đuợc i+1 khi đang chờ i.
B gửi REJ i. A truyền lại tất cả khung từ i

Khung i bị mất, A không gửi thêm khung nữa. B không trả lời A. Sau
một thời gian, A timeout. A gửi cho B một khung RR đặc biệt, đề nghị B
gửi lại báo nhận cuối cùng. Sau đó A gửi lại khung i

Báo nhận bị lỗi

B nhận khung i và gửi RR i+1 bị mất. A có thể nhận được các báo nhận
tiếp theo bao gồm báo nhận i

A timeout, A gửi khung RR đặc biệt giống trường hợp trên

REJ bị lỗi: giống trường hợp trên

×