1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Bài giảng Truyền số liệu: Phần 2 - ĐH Sư Phạm Kỹ Thuật Nam Định

83 73 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 83
Dung lượng 2,06 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tiếp nối nội dung phần 1, nội dung Bài giảng Truyền số liệu: Phần 2 cung cấp cho người học các kiến thức như sau: Điều khiển liên kết dữ liệu; Mạng chuyển mạch, Mạng chuyển mạch kênh, Mạng chuyển mạch gói. Mời các bạn cùng tham khảo!

Trang 1

CHƯƠNG 5: ĐIỀU KHIỂN LIÊN KẾT DỮ LIỆU

5.1 Phát hiện lỗi và sửa sai

Trong các hệ thống truyền dẫn số, lỗi xảy ra khi có một bit bị biến đổi giữa bên gửi và bên nhận

Có 2 dạng lỗi: Lỗi một bit và lỗi nhiều bit (burst) còn gọi là lỗi cụm

Hình 5 1 Các dạng lỗi

- Lỗi một bit: Chỉ có một bit bị sai trong một đơn vị dữ liệu (byte, ký tự, đơn vị

dữ liệu, hay gói)

Ví dụ: thay đổi từ 1 0 hoặc từ 0 1

00000010 (STX: start of text) khi bị sai 1 bit dữ liệu nhận được 00001010 (LF: line feed)

Hình 5 2 Lỗi một bit Lỗi một bit ít xuất hiện trong phương thức truyền nối tiếp, mà thường xuất hiện trong truyền song song

- Lỗi cụm: có hai hoặc nhiều bit sai trong đơn vị dữ liệu

Hình 5.3 Lỗi nhiều bit (lỗi cụm) Lỗi cụm không có nghĩa là các bit bị lỗi liên tục, chiều dài của bệt tính từ bit sai đầu tiên cho đến bit sai cuối Một số bit bên trong cụm có thể không bị sai

Trang 2

Lỗi cụm thường xuất hiện trong truyền nối tiếp

Lỗi bit là không thể tránh khỏi trong quá trình truyền dẫn do nhiều nguyên nhân: đường truyền, lưu lượng truyền, loại mã đùng, loại điều chế, loại thiết bị phát, thiết bị thu, hay xuyên nhiễu và kết quả là một hoặc một số bit trong khung truyền bị lỗi Để tăng xác suất thu đúng thông tin tại bên thu thì hệ thống cần sử dụng các biện pháp phát hiện và sửa sai tại đầu thu Một số kỹ thuật thường được dùng:

- Dùng bộ giải mã có khả năng tự sửa sai

- Truyền lại một bộ phận của dữ liệu để thực hiện việc sửa sai, cách này gọi là ARQ - Automatic Repeat Request

Hình 5.4 Xử lý phát hiện lỗi Các phương pháp sửa lỗi đều dựa trên nguyên tắc sau: Khi một khung dữ liệu được truyền đi thì nó sẽ được chèn thêm một số bit kiểm tra gọi là mã phát hiện lỗi hay các bit kiểm tra Mã này được tính toán như một hàm của các bit được truyền Cụ

thể, có một khối gồm k bit dữ liệu cần được truyền đi; từ khối bit này, người ta sử dụng một thuật toán phát hiện lỗi để tính ra mã phát hiện lỗi gồm (n – k) bit, với (n – k) < k, để đóng gói cùng dữ liệu tạo thành một khung gồm n bit truyền đi Bên thu tách khung thu được thành k bit dữ liệu và (n – k) các bit kiểm tra Sau đó, dựa vào k bit

thông tin thu được, bên thu sử dụng thuật toán phát hiện lỗi tương tự như bên phát để tính toán lại các bit kiểm tra; đối chiếu với các bit kiểm tra thu được Nếu chúng khác nhau thì kết luận quá trình truyền tin có lỗi Nguyên tắc trên được thể hiện như sơ đồ hình 5.4

Trang 3

5.1.1 Phương pháp kiểm tra bit chẵn lẻ (parity bit)

Phương pháp thông dụng nhất được dùng để phát hiện lỗi của bit trong truyền không đồng bộ và truyền đồng bộ hướng ký tự là phương pháp kiểm tra bit chẵn lẻ

(parity bit) Với cách này máy phát sẽ thêm vào mỗi ký tự truyền một bit kiểm tra

parity đã được tính toán trước khi truyền Khi nhận được thông tin truyền, máy thu sẽ thực hiện các thao tác tính toán trên các ký tự thu được, và so sánh với bit kiểm tra parity thu được Nếu chúng bằng nhau, được giả sử là không có lỗi, ở đây ta dùng từ giả sử, bởi vì cách này có thể không phát hiện được lỗi trong khi lỗi vẫn tồn tại trong

dữ liệu Nhưng nếu chúng khác nhau thì chắc chắn một lỗi xảy ra

Hình 5.5 Mạch tạo bit kiểm tra chẵn (VRC) của một dữ liệu 7 bit: 1100001

Hình 5.6 Mạch kiểm tra chẵn (VRC) của một dữ liệu 8 bit (11000011)

Để tính toán bit parity cho một ký tự, số các bit trong mã ký tự được cộng module 2 với nhau và bit parity được chọn sao cho tổng số các bit 1 bao gồm cả bit parity là chẵn (even parity) hoặc là lẻ (odd parity) Trong bộ mã ASCII mỗi ký tự có

7 bit và một bit kiểm tra

Với kiểm tra chẵn giá trị của bit kiểm tra là 0 nếu số lượng các bit có giá trị 1 trong 7 bit là chẵn và có giá trị 1 trong trường hợp ngược lại

Với kiểm tra lẻ thì ngược lại Thông thường người ta sử dụng kiểm tra chẵn và bit kiểm tra gọi là P Giá trị kiểm tra đó cho phép ở đầu thu phát hiện những sai sót

Trang 4

Phương pháp kiểm tra bit chẵn lẻ chỉ phát hiện các lỗi đơn bit (số lượng bit lỗi

là số lẻ) và không thể phát hiện các lỗi 2 bit (hay số bit lỗi là một số chẵn)

5.1.2 Kiểm tra tổng BSC (Block Sum Check)

Khi các khối ký tự được truyền đi, xác suất một ký tự chứa lỗi bit gia tăng Chúng ta có thể mở rộng các khả năng phát hiện lỗi từ một bit parity trên một ký tự (byte) bằng cách dùng một tập bit parity được tính từ toàn bộ khối ký tự trong khung Với phương pháp này, mỗi ký tự trong khung được phân phối một bit parity như trên (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 bit parity cho mỗi cột được gọi là ký tự kiểm tra khối, BCC (block check character) vì mỗi bit tạo nên ký tự này là tổng module 2 của tất cả các bit trong cột tương ứng Ví dụ trong hình 5.7 dùng phương pháp kiểm tra lẻ cho các bit parity hàng, phương pháp kiểm tra chẵn cho các bit parity cột và giả sử khung chứa các

ký tự in được

a)

[ ] = ví dụ tổ hợp lỗi không phát hiện được

Pr = Bit parity hàng

Trang 5

b)

Hình 5.7 Ví dụ kiểm tra BSC: a) Các bit parity hàng và cột; b): Tổng bù 1

Trong ví dụ này thì, mặc dù các lỗi 2 bit trong một ký tự sẽ thoát khỏi kiểm tra parity theo hàng, nhưng chúng sẽ bị phát hiện bởi kiểm tra parity cột tương ứng Tuy nhiên, điều này chỉ đúng khi không có lỗi 2 bit xảy ra trong cùng một cột tại cùng thời điểm Xác suất xảy ra trường hợp này nhỏ hơn nhiều so với xác suất xảy ra lỗi 2 bit trong một ký tự Việc dùng kiểm tra tổng khối cải thiện đáng kể các đặc trưng phát hiện lỗi của lược đồ kiểm tra chẵn lẻ

Một dạng khác của lược đồ trên dùng tổng bù 1 làm cơ sở cho kiểm tra tổng khối, thay vì dùng tổng module 2 Nguyên lý của lược đồ này minh họa trên hình 5.2 b

Trong lược đồ này, các ký tự trong khối cần truyền được xem như các số nhị phân không dấu Trước hết, các số này được cộng với nhau dùng phép toán bù 1 Tất

cả các bit trong kết quả được đảo ngược bit (mã bù 1) và kết quả đảo ngược được dùng như ký tự kiểm tra khối BCC (mã bù 1) Tại máy thu, tổng bù 1 của tất cả các ký tự trong khối, bao gồm cả ký tự kiểm tra được tính Nếu không có lỗi xuất hiện thì kết quả sẽ bằng zero Với phép toán bù 1, số nhớ cuối được dùng, là bất kỳ giá trị nào vượt

ra ngoài vị trí bit có nghĩa lớn nhất được cộng vào tổng nhị phân hiện hữu Zero trong phép bù 1 được biểu diễn bởi tất cả các bit nhị phân đều là 0 hoặc tất cả đều là 1

Từ hình 5.2 b, suy ra các đặc tính phát hiện lỗi của lược đồ này tốt hơn so với phương pháp tổng module 2 Tổng bù 1 được tính dễ dàng, nên được dùng như một phương pháp phát hiện lỗi trong một số ứng dụng yêu cầu hoạt động phát hiện lỗi chỉ được thực hiện bằng phần mềm

Trang 6

5.1.3 Kiểm tra CRC (Cyclic Redundancy Check)

Các mã trên đây khá thích hợp cho các ứng dụng trong đó xuất hiện các lỗi đơn bit ngẫu nhiên Tuy nhiên, khi các khối lỗi xuất hiện, chúng ta phải dùng một phương pháp chắc chắn hơn Một trong những loại mã phát hiện lỗi phổ biến nhất hiện nay là

mã vòng dư thừa CRC (Cyclic Redundancy Check)

Phương pháp kiểm tra tín hiệu bằng mã vòng được thực hiện như sau:

Cách 1:

Một từ mã được viết dưới dạng một đa thức

0 1 2

2 1 1 )

Kết quả dư lại của phép chia chính là CRC Bên thu sau khi nhận được thông báo cũng đem chia cho hàm biết trước như bên phát Nếu kết quả bằng 0 quá trình truyền không gây sai số

Tính FCS gồm 4 bước:

+ Bước 1: Chuyển thông báo nhị phân thành đa thức M(x) Chọn hàm cho trước G(x) có bậc c, ( )  c  1

X x

Trang 7

+ Bước 2 : NhânM (x)với c

X

+ Bước 3 : Thực hiện phép tính

)(

)(

x G

X x

)()()

(

)

x G

x R x Q x

G

X x

Thông tin cần truyền trên đường truyền là 110101011

Thu và kiểm tra CRC

Để kiểm tra sai số khi truyền, bộ phận thu đem khối thông tin thu được chia cho )

)()()

(

)(

x G

x R x Q x

G

x M

)()()(

)()

(

)(.)

(

)()()

(

)(

'

x R

x R x G

x R x Q x G

x R x

G

x M X x

G

x R x M X x G

x

)(

)()

x G

x R x

)(

)(

'

x Q x G x

Trang 8

Phần dư bằng 0

Ví dụ 5.3:

Thông tin đã truyền đi là: 110101011

Thông tin nhận được là: 110101011 Thực hiện kiểm tra việc truyền tin không lỗi tại bên nhận

Giải:

Kiểm tra việc truyền tin không lỗi tại bên nhận, điều này có nghĩa là truyền đúng tức là R (x) phải bằng0

Kiểm tra CRC như sau :

Chuyển thông tin nhận được thành đa thức :

T = khung gồm n bit được truyền đi

D = khối dữ liệu gồm k bit, k bit ở vị trí đầu của T

F = mã kiểm tra FCS gồm (n – k) bit, (n-k) bit ở vị trí cuối của T

P = mẫu gồm (n – k + 1) bit, đây là số chia được xác định trước

Ta có thể biều diễn T như sau:

T = 2n-kD + F

F là chuỗi bit kiểm tra thêm vào sau các bit dữ liệu, và đảm bảo cho phép chia T/P không có dư

Thực hiện phép chia 2n-kD/P, ta có:

Trang 9

ít hơn số chia 1 bit Chúng ta lấy phần dư này làm FCS

Dưới đây, ta sẽ chứng minh R thỏa mãn điều kiện đảm bảo cho phép chia T/P không có dư Thật vậy:

T Q R R

P   P P (5.4) Tuy nhiên, một số nhị phân khi cộng module 2 với chính nó thì bằng 0 Do đó:

T Q R R Q

   (5.5) Như vậy, phép chia T/P không có dư, hay T chia hết cho P Qua đó, ta thấy, FCS dễ dàng được tạo ra bằng cách chia 2n kD cho P và sử dụng (n – k) bit phần dư

làm FCS Bên thu sẽ thực hiện chia T cho P, nếu dư bằng 0 thì kết luận khung không lỗi

Bản tin được nhân với 25 : 101000110100000

Ta thực hiện phép chia module 2: 25

D cho P:

Trang 10

Phần dư được cộng với 25D tạo thành chuỗi bit T = 101000110101110 được truyền đi Tại bên thu, chuỗi bit T nhận được sẽ được chia cho P để kiểm tra Nếu không có lỗi xảy ra thì phần dữ sẽ bằng 0

5.1.4 Phát hiện và sửa sai theo Hamming

Các phương pháp này được trình bày ở trên chỉ phát hiện lỗi truyền, không thể sửa sai Phương pháp này được trình bày sau đây chỉ phát hiện lỗi sai mà còn có thể sửa sai cho một số bit nhất định

Hình 5.8 mô tả tổng quát quá trình xử lý phát hiện lỗi Khi dữ liệu được đọc vào trong bộ nhớ, việc tính toán biểu diễn bởi hàm f được tiến hành trên dữ liệu này để tạo

ra một mã sửa sai Cả mã và dữ liệu được lưu giữ Do đó, nếu một M bit từ (word) được lưu giữ, và mã có chiều dài là k bit thì kích thước thực sự được lưu giữ là M + K bit

Trang 11

Khi các từ được lưu giữ được đọc ra, mã được dùng để phát hiện và có sửa lỗi Một tập mới của K bit đã được tạo ra từ M bit dữ liệu và được so sánh với các bit dữ liệu và được so sánh với các bit mã đã lưu giữ Sự so sánh sẽ cho ra một trong ba trường hợp:

1 Không có lỗi Các bit giữ liệu được gửi ra

2 Có lỗi, và có khả năng sửa được Các bit dữ liệu và các bit sai được nạp vào một bộ sửa lỗi, nó tạo ra một tập M bit đã sửa được gửi ra

3 Một lỗi nhưng không thể sửa được Đây là điều kiện để gửi thông báo

Một mã được đặc tính hoá bởi một số bit lỗi trong một từ mà nó có thể phát hiện lỗi và sửa sai Các mã sửa sai đơn giản nhất là mã Hamming được phát minh bởi Richard Hamming tại Bell Laboratories

Hình 5.9 Cơ sở của mã sửa lỗi Hamming

Trang 12

Hình 5.9 dùng lược đồ Venn để mô tả việc dùng mã này trên các từ 4 bit (M = 4) Với 3 vòng tròn giao nhau có 7 ngăn, gán 4 bit dữ liệu vào các ngăn trong, hình 5.9

a Các ngăn còn lại được làm đầy với parity (bit kiểm tra chẵn lẻ) Mỗi bit parity được chọn sao cho tổng số bit 1 trong các vòng tròn là chẵn (hình 5.9 b) Do đó, vì vòng A bao gồm 3 bit dữ liệu 1, nếu bit parity là 1 Bây giờ, nếu một lỗi xảy ra thay đổi một trong các bit này (hình 5.9 c), sẽ dễ dàng nhận ra Bằng cách kiểm tra các bit parity sẽ thấy sự trái ngược trong vòng tròn A và C Chỉ một trong 7 ngăn vừa thuộc A vừa thuộc C nhưng không thuộc B Sau đó có thể sửa lại bit trong ngăn này

Để sáng tỏ hơn khái niệm này, tiếp theo có thể phát triển một mã có thể phát hiện và sửa sai các lỗi đơn trong các từ 8 bit Khởi đầu cần xác định mã sẽ dài bao nhiêu Xem hình 5.3, logic so sánh nhận hai giá trị K bit Sự so sánh bit với bit được thực hiện bằng cách cộng module (xor) 2 ngõ nhập Kết quả được gọi là syndrome Do

đó phải mỗi bit của syndrome là 0 hay 1 tuỳ vào sự giống hay khác nhau của vị trí bit của trong 2 ngõ nhập

Từ syndrome có chiều dài K bit và có giá trị trong dải từ 0 đến (2k

-1) Giá trị 0 cho biết không có lỗi Vì một lỗi có thể xảy ra trên bất kỳ M bit dữ liệu hay K bit kiểm tra nào, nên phải có: 2k-1>=M+K

Bất đẳng thức này cho biết số bit cần thiết để sửa sai một bit bị sai trong một từ

có M bit Bảng 5.1 liệt kê số bit kiểm tra cần đối với chiều dài từ thay đổi Từ bảng này, ta có thể thấy với từ 8 bit cần 4 bit cần 4 bit để kiểm tra Để tiện dụng, Syndrom 4 bit với các đặc tính sau:

 Nếu Syndrom chứa tất cả các bit 0, thì không có lỗi

 Nếu Syndrom chứa một và chỉ một bit đặt là 1 thì một lỗi xảy ra đối với một trong 4 bit kiểm tra Không cần phải sửa

 Nếu Syndrom chứa nhiều hơn một bit 1 thì giá trị của sydrom chỉ vị trí của bit dữ liệu bị lỗi Để sửa, bit dữ liệu này được đổi thành bit ngược lại

Bảng 5.1 Gia tăng chiều dài từ với sửa lỗi

Số bit dữ liệu Số bit kiểm tra %gia tăng Số bit kiểm tra %gia tăng

Trang 13

Các bit kiểm tra được tính toán như sau:

Ví dụ 5.5 :

Cho chuỗi bit dữ liệu là 0 0 1 1 1 0 0 1, và nếu vị trí bit 3 từ phải qua bị sai (thay

vì 0 lại là 1) thì khi các bit kiểm tra mới được so sánh với các bit kiểm tra cũ, một từ Syndrom được hình thành:

Kết quả này chỉ vị trí bit 6 từ vị trí bit 6 tử trái qua bị sai

Giả sử chuỗi bit dữ liệu trên khi truyền đi bị lỗi ở vị trí thứ 3 tính từ bit có trọng

số lớn nhất MSB nên dữ liệu thu được là: 01000101

Trang 14

Ví dụ chúng ta truyền dữ liệu qua mạng PSTN dùng tốc độ 4800 bps, thời gian truyền hết dữ liệu là 20 phút Rõ ràng nếu dùng nén dữ liệu chúng ta có thể giảm một nửa số lượng dữ liệu truyền, và có thể tiết kiệm 50% giá tiền Điều này tương đương với việc dùng tốc độ truyền 9600 bps nhưng không nén

Trong thực tế chúng ta có thể dùng một loạt các giải thuật nén khác nhau, mỗi giải thuật sẽ phù hợp với một loại dữ liệu Vài modem thông minh sẽ cung cấp đặc trưng nén thích nghi tự động thực hiện các giải thuật nén phù hợp với loại dữ liệu đang được truyền

Trang 15

5.2.1 Nén nhờ đơn giản mã cho các chữ số

Khi các khung chỉ bao gồm các ký tự số học đang được truyền, chúng ta có thể tiết kiệm đáng kể bằng cách giảm số bit trên mỗi ký tự từ 7 xuống 4 thông qua

mã BCD, thay cho mã ASCII

5.2.2 Nén theo mã hoá quan hệ

Một phương pháp khác được sử dụng khi truyền dữ liệu số học kế tiếp chỉ khác nhau phần nhỏ về giá trị là chỉ gửi lượng khác nhau giữa các giá trị này cùng với một giá trị tham khảo Điều này được gọi là mã hóa quan hệ và nó có thể đem lại hiệu quả đặc biệt trong các ứng dụng ghi nhân dữ liệu

Ví dụ nếu giám sát từ xa mực nước của dòng sông thường đọc mức nước theo các khoảng thời gian định trước Để tối thiểu thời gian cần truyền thay vì truyền giá trị chỉ mức nước tuyệt đối, chúng ta chỉ cần truyền đi các giá trị khác nhau

5.2.3 Nén bằng cách bỏ bớt các ký tự giống nhau

Thông thường khi các khung gồm các ký tự có thể in đang được truyền thường xuất hiện chuỗi lặp lại các ký tự giống nhau Thiết bị điều khiển tại máy phát sẽ quét nội dung của khung trước khi truyền nếu gặp một chuỗi ký tự liên tiếp giống nhau thì chúng sẽ được thay thế bởi tuần tự số và ký tự

5.2.4 Nén theo mã hoá 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 khung có cùng tần suất xuất hiện, ví dụ trong một khung bao gồm một chuỗi ký tự ,vài ký tự nào đó xuất hiện nhiều hơn các ký tự khác 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ã hoá khác trong đó các ký tự xuất hiện thường xuyên được mã hoá với số bit ít hơn các ký tự có tần số xuất hiện thấp Do đó lược đồ này là dạng mã hoá thống kê

Trước hết, 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ã hoá sau đó liên quan đến việc tạo ra một cây không cân bằng trong đó một số nhanh (là các 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 ham của tần suất xuất hiện các ký tự, càng đợc 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 một cây được gọi là cây Huffman

Trang 16

Hình 5.10 Cấu trúc cây mã Huffman a) Cây sau cùng với các mã; b) Sự dẫn xuất cây

Một 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 Xuất phát của cây thường là một đỉnh (hình học), trong thực tế được gọi là node gốc(root node), và một điểm tại đó một nhánh được rẽ ra coi như node nhánh (branch node) Điểm kết thúc của một nhánh gọi là node lá (leaf node), là các vị trí được gán cho các ký hiệu đang được mã hoá Một ví dụ về Huffman được trình bày hình 5.9(a) Cây này tương ứng với các ký tự AAAABBCD

Khi mỗi nhánh chia ra, một giá trị nhị phân 0 hay 1 được gán cho mỗi nhánh mới: một giá trị nhi phân 0 cho nhánh trái và một giá trị nhị phân 1 cho nhánh phải Mỗi từ mã được dùng cho mỗi ký tự (được ghi tại các node lá) được xác định bằng cách dò theo đờn dẫn từ node gốc đến node lá tương ứng và hình thành một chuỗi các

Trang 17

giá trị nhị phân nằm trên đường dẫn Từ các mã này chúng ta có thể suy ra sẽ dùng: 4x1 + 2x2 + 1x3 + 1x3 = 14 bit để truyền chuỗi hoàn chỉnh AAAABBCD

Chúng ta cũng có thể suy ra lượng bit trung bình trên mỗi từ mã bằng 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 Cụ thể là :

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 suy ra từ luật Shannon:

1

2 log bit/ từ mã (5.6) Trong đó n là số ký tự trong thông điệp và pi là xác suất xuất hiện của ký tự i trong thông điệp Do đó thông điệp AAAABBCD, lượng bit trung bình tối thiểu trên một từ mã là :

H= - (0,5log20,5 + 0,25log20,25 +0,125 log20,125 +0,125 log20,125)=1,75 bit/ từ mã

Trong trường hợp này chúng ta có cùng kết quả khi dùng mã hoá Huffman Dùng từ mã ASCII 7-bit sẽ cần 8x7=56 bit đề truyền toàn chuỗi thông điệp này, con số này nhiều hơn đáng kể so với 14 bit khi dùng mã hoá Huffman

Trong thực tế, điều này không phải là một so sánh chính xác vì với mã hoá Huffman, máy thu phải biết được tập ký tự biến đổi đang đợc truyền và các từ mã tương ứng, hay nói cách khác là cây Huffman Một so sánh tốt hơn là xem sét số bit yêu cầu với mã hoá nhị phân thờng: bốn ký tự (A-D) cần hai bit cho mỗi ký tự, vậy cần truyền 8 ký tự Rõ ràng, lượng tiết kiệm không đang kể Nhìn chung mã hoá Huffman

là hiệu quả nhất khi các ký tự dang truyền có phân bố tần số rộng và các chuỗi ký tự dài Ngược lại, nó không phù hợp cho truyền dữ liệu mã nhị phân của máy tính vì các byte 8 bit thờng xuất hiện với tần số như nhau

Để diễn tả làm thế nào xác định cây Huffman trong hình 5.10a, 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 hình 5.10b Các ký tự được liệt kê trong một cột theo thứ tự giảm dần của tham số định lượng Chúng ta có thể suy ra cây như sau:

Hai node lá đầu tiên phía dới danh sách C1 và D1 lần lượt được gán là nhánh 1

và nhánh 0 của một node nhánh Sau đó hai node lá sẽ được thay thế bởi một node nhánh có định lượng bằng tổng hai node lá 2.1, cột mới được hình thành chứa node mới, sự kết hợp với các node còn lại từ cột đầu tiên, việc sắp xếp lại phải theo thứ tự định lượng giảm dần Thủ tục này được lặp lại cho đến khi chỉ còn hai node

Để suy ra từ mã kết quả cho mỗi ký tự chúng ta bắt đầu với ký tự trong cột đầu tiên và sau đo tiến hành liệt kê các số trong nhánh 0 hay 1 khi chúng gặp phải Do đó

Trang 18

cho ký tự A số nhánh là 1 trong cột cuối cùng trong khi cho ký tự C nhánh đầu tiên là 1 sau đó là 0 tại node nhánh 2 và cuối cùng là 0 tại node nhánh 4 Tuy nhiên, các từ mã bắt đầu tại gốc chứ không phải tại node là vì các từ mã thực tế là ký tự ngược của các

số này Sau đó cây Huffman được xây dựng dễ dàng từ tập từ mã

Chúng ta kiểm tra xem đây có phải là cây tối ưu và do đó là tập từ mã tối ưu hay không bằng cách liệt kê kết quả của tất cả các node nhánh và node là trong cây bắt đầu

có định lượng nhỏ nhất và xử lý từ trái sang phải và từ đó lên trên các từ mã là tối ưu nếu danh sách kết quả ra tăng theo định lượng

Ví dụ 5.7:

Một chuỗi thông điệp được truyền giữa hai máy tính PSTN Các thông điệp bao gồm chỉ các ký tự từ A đến H Phân tích cho thấy tần số xuất hiện của mỗi ký tự như sau: A và B = 0,25 C và D = 0,14 E,F,G and H =0,055

a) Dùng công thức Shannon để suy ra lượng bit trung bình tối thiểu trên một ký tự

b) Dùng mã hoá Huffman để suy ra một tập từ mã và chứng minh tập này là tối

ưu bằng cách xây dựng cây mã Huffman tương ứng

c) Suy ra số bit trung bình trên một ký tự cho tập mã này và so sánh với:

(i) Giá trị Shannon (ii) Các từ mã nhị phân có chiều dài cố đinh (iii) Các từ mã ASCII 7 bit

1

2 log Do đó: H = -(2(0,25 log20,25) + 2(0,14 log20,14) +

4(0,055log20,055))=1+0,794 + 0,921 = 2,715 bit/ từ mã

b) Việc suy ra bộ từ mã dùng mã hoá Huffman được trình bày trên hình 5.11 a Trước hết các ký tự được liệt kê theo thứ tự trong số và hai ký tự dưới cùng của danh sách được gán nhanh (1) và (0) Tuy nhiên trong trường hợp này khi hai node kết hợp lại, trong số của node nhánh (0,11) lớn hơn trong số của hai ký tự E và F (0,055) Từ

đó node nhánh này được chèn vào danh sách thứ hai có thứ tự cao hơn cả E và F Thủ tục tương tự được lặp lại cho đến khi danh sách chỉ còn lại một node thì dừng

Cây Huffman tương ứng với tập mã được suy ra được biểu diễn trên hình 5.6 b, và đây là cây tối ưu vì tất cả các node nhánh và node lá đều gia tăng theo thứ tự số học

c) Số bit trung bình trong một từ mã dùng Huffman là:

2 (2 x 0,25) + 2 ( 3 x 0,14) + 4 (4 x 0,055) = 2,72 bit/ từ mã, bằng 99,8 % giá trị Shannon Dùng các từ mã nhị phân có chiều dài cố định:

Từ A đến H có 8 ký tự do đó có 3 bit trong mỗi từ mã, bằng 90,7 % giá trị Huffman:

Trang 19

(b)

Hình 5.11 Ví dụ mã hoá Huffman:

a) Phát sinh từ mã; b) Cây mã Huffman

Dùng các từ mã ASCII 7 bit :

7 bit trong một từ mã, bằng 38,86 % giá trị Huffman

Vì ký tự trong dạng mã hoá này có số bit thay đổi, nên luồng bit nhận được phải được dich ra theo từng bit thay vì dịch theo ranh giới 8 bit cố định Do thứ tự các bit được gán trong quá trình mã hoá mà các từ mã Huffman có một đặc tính duy nhất là các từ mã ngắn hơn sẽ không bao giờ trùng với phần đầu của một từ mã dài hơn Ví dụ nếu 011 là một từ mã hợp lệ thì không có một từ mã nào dài hơn chứa 011 kể từ bit đầu Chúng ta có thể kiểm chứng điều này từ các mã được suy ra từ ví dụ trên

Đặc tính này còn được gọi là đặc tính tiền tố (prefix), có nghĩa là luồng bit nhận được có thể bị giải mã một cách đơn giản bằng cách dò từng bit một cho đến khi tìm

Trang 20

thấy được từ mã hợp lệ Một lưu đồ thuật toán giải mã thích hợp như hình 5.6 Giải thuật này giả sử ở máy thu đã có bảng mã và cũng giữ từ mã ASCII tương ứng

5.3 Điều khiển luồng

5.3.1 Tổng quan

Nếu số lượng dữ liệu truyền giữa hai thiết bị là nhỏ, thiết bị phát có thể truyền tất cả dữ liệu ngay tức thời vì máy thu có đủ tài nguyên để tiếp nhận dữ liệu Tuy nhiên, trong nhiều tình huống truyền tin điều kiện này không thể có Do đó chúng ta phải dùng kỹ thuật để đảm bảo máy thu không bỏ qua bất kỳ phần tử dữ liệu nào do không đủ tài nguyên để lưu giữ Điều này hết sứ quan trọng khi hai thiết bị đang truyền tin thông qua mạng số liệu, khi mà rất nhiều mạng sẽ đệm số liệu trong các bộ đệm có kích thước giới hạn Nếu hai thiết bị hoạt động với tốc độ khác nhau, chúng ta thường phải điều khiển số liệu ngõ ra của thiết bị tốc độ cao hơn để ngăn chặn trường hợp tắc nghẽn trên mạng Điều khiển luồng thông tin giữa hai thiết bị truyền thường được gọi vắn tắt là điều khiển luồng (flow control)

Như vậy, điều khiển luồng là tập hợp các thủ tục để giới hạn lượng dữ liệu mà bên phát có thể gửi đi trước khi nhận được tín hiệu xác nhận ACK

- Lưu lượng truyền này không được phép làm quá tải bên thu

- Thiết bị thu thông báo cho bên gửi biết về các giới hạn dữ liệu và có thể yêu cầu gửi ít hơn hay tạm dừng truyền

- Thiết bị thu còn có bước kiểm tra và xử lý dữ liệu trước khi sử dụng, điều này làm chậm đáng kể lưu lượng truyền dẫn, nên bên thu thường có thêm một khối nhớ tạm, thường được gọi là bộ nhớ đệm (buffer)

5.3.2 Các phương pháp điều khiển luồng

Có hai phương pháp được dùng là: dừng - và - chờ và cửa sổ trượt

Hình 5.12 Hai phương pháp dùng trong điều khiển lưu lượng

Trang 21

5.3.2.1 Dừng - và - chờ (Stop - and - wait)

Hình 5.13 Phương pháp dừng - và - chờ Trong phương pháp này, thiết bị phát gửi xong một khung và đợi tín hiệu xác nhận ACK rồi gửi tiếp khung kế

Ưu điểm của phương pháp này là đơn giản

Nhược điểm: tốc độ truyền bị chậm do quá trình dừng - và - chờ

5.3.2.2 Cửa sổ trƣợt (Sliding Window)

Phương pháp này cho phép nhiều khung cùng truyền một lúc

Hình 5.14 Ghép nhiều khung thành một cửa sổ

Cửa sổ phát

Hình 5.15 Cửa sổ phát Dùng ý tưởng, cửa sổ trượt co từ bên trái khi khung dữ liệu được gửi đi Cửa sổ trượt của thiết bị phát mở rộng về bên phải khi nhận được tín hiệu xác nhận ACK

Cửa sổ thu:

Trang 22

Hình 5.16 Cửa sổ thu Dùng ý tưởng, cửa sổ trượt của máy thu co từ bên trái khi khung dữ liệu được nhận Cửa sổ trượt của thiết bị thu mở rộng về bên phải khi gửi tín hiệu xác nhận ACK đi

Ví dụ 5.8:

Khi mới bắt đầu, cửa sổ thiết bị phát và thu đều mở rộng tối đa bao gồm 7 khung

Các khung này được đánh số từ 0 đến 7 và được lưu vào bộ đệm

Bộ đệm phải có kích thước lớn hơn Ví dụ trên bộ đệm có kích thước là 13 Kích thước của cửa sổ: kích thước của cửa sổ luôn nhỏ hơn chuỗi khung truyền

1 đơn vị để dễ thực hiện tín hiệu ACK Giả sử số chuỗi khung là 8 và ta chọn kích thước cửa sổ cũng là 8 Nếu khung 0 được gửi và nhận tín hiệu ACK 1 Máy phát mở rộng cửa sổ và gửi các khung 1, 2, 3, 4, 5, 6, 7 và 0 Nếu lại nhận được ACK 1 thì không thể xác nhận được khi tín hiệu này là bản sao của ACK 1 trước đó (do mạng thực hiện) hay đó là ACK 1 mới khi mới nhận xong 8 khung Nếu ta chọn kích thước cửa sổ là 7 thì điều nói trên không thể xảy ra

Hình 5.17 Quá trình truyền nhận dữ liệu dùng cửa sổ trượt

Trang 23

5.4 Kiểm soát lỗi

Kiểm soát lỗi là kỹ thuật nhằm phát hiện và sửa lỗi nếu khung truyền bị lỗi Chúng ta sử dụng mô hình nghiên cứu cho các trường hợp được khái quát như mô tả trên hình 5.18 Dữ liệu được gửi đi dưới dạng một chuỗi các khung và các khung đến theo thứ tự Số lượng các khung truyền đi không cố định Có hai loại lỗi cơ bản trên đường truyền như sau:

- Mất khung: là trường hợp khung được gửi đi nhưng không đến đích (máy thu) theo yêu cầu

- Lỗi khung: là trường hợp máy thu nhận được khung dữ liệu nhưng phát hiện ra một số bit trong khung bị lỗi

Hầu hết các kỹ thuật điều khiển lỗi đều dựa trên một số hoặc tất cả các thành phần sau đây:

- Phát hiện lỗi: như đã tìm hiểu ở mục 5.1 và 5.2

- ACK: Máy thu sẽ gửi lại gói tin báo nhận dương ACK để thông báo khung đã nhận thành công và không có lỗi

- Truyền lại sau một khoảng thời gian chờ xác định (timeout): Máy phát sẽ tự động gửi khung dữ liệu nếu hết timeout mà không thấy có báo nhận ACK từ máy thu

- NAK và truyền lại: Máy thu sẽ gửi lại một khung báo nhận âm NAK nếu nó phát hiện ra có lỗi khung Máy phát sẽ phát lại khung bị thu lỗi đó

Hình 5.18 Mô hình truyền khung Các kỹ thuật kiểm soát lỗi thường sử dụng cơ chế yêu cầu lặp lại tự động ARQ (automatic repeat request)

Trang 24

Có hai loại ARQ cơ bản:

- Idle RQ (Stop – and – wait ARQ): là kỹ thuật kiểm soát lỗi được dùng với các lược đồ truyền số liệu thiên hướng ký tự (character oriented)

- Continuous RQ được chia thành hai loại: truyền lại có chọn lựa (Selective – repeat ARQ) hoặc truyền lại một nhóm (Go – back – N ARQ) Continnuous RQ được dùng chủ yếu trong các lược đồ truyền thiên hướng bit (bit – oriented)

Mặc dù cơ chế Idle RQ đang bị Continuous RQ thay thế trong nhiều ứng dụng

để việc truyền đạt hiệu quả cao hơn, nhưng vẫn còn nhiều giao thức liên kết số liệu đang được dùng có cơ sở là Idle RQ Tuy vậy, điều quan trọng hơn vẫn là do Idle RQ

là lược đồ kiểm soát lỗi đơn giản nhất, nó tạo nên một phương tiện lý tưởng để lý giải nhiều vấn đề tổng quát hơn liên quan đến các giao thức liên kết số liệu

5.4.1 Idle RQ

Đặc điểm

Idle RQ còn gọi là Stop - and - wait ARQ hay ARQ dừng - và - chờ, là dạng điều khiển lưu lượng truyền dạng ngừng và chờ, có nghĩa là sau khi máy phát gửi đi một khung dữ liệu thì nó phải đợi máy thu báo cho biết khung dữ liệu đó có được nhận thành công hay không Sau đó, máy phát gửi khung kế tiếp nếu khung trước đó nhận tốt hoặc truyền lại một bản sao của nó nếu nhận được không thành công Để có thể gửi lại dữ liệu, có đặc điểm cho cơ chế kiểm tra lỗi như sau:

- Thiết bị phát lưu một bản sao của khung gửi cuối cùng cho đến khi nhận được tín hiệu chấp nhận khung này Việc lưu giữ bản sao (copy) nhằm để bộ phát gửi lại khung bị thất lạc hoặc bị hỏng cho đến khi khung được nhận đúng

- Nhằm mục đích nhận dạng, tất cả các khung dữ liệu và ACK đều được đánh

số tuần tự là 0 và 1 Nếu khung dữ liệu 0 thì sẽ có tín hiệu ACK là 1, cho thấy là bộ thu

đã nhận được dữ liệu 0 và đang chờ dữ liệu 1 Cách đánh số này cho phép nhận dạng các khung dữ liệu trong trường hợp phải gửi lại nhiều lần

- Thiết bị phát được trang bị một bộ định thời (timer), nếu không nhận được tín hiệu xác nhận cần thiết trong một khoảng thời gian xác cho phép (timeout), máy thu sẽ hiểu là khung dữ liệu vừa gửi đã bị thất lạc và sẽ tiếp tục gửi lại lần nữa

Có hai phương pháp để thực hiện lược đồ Idle RQ

- Phương pháp thứ nhất là phương pháp truyền lại ngầm định (implicit retrainsmission) Máy thu chỉ gửi đi xác nhận dương ACK để báo nhận thành công với những khung được không phát hiện ra lỗi Nếu khung dữ liệu bị lỗi thì máy thu không gửi

gì cả Máy phát không nhận được xác nhận dương ACK thì nó sẽ ngầm hiểu là khung dữ liệu đã bị hỏng và thực hiện việc gửi lại khung đó

Trang 25

- Phương pháp thứ hai là phương pháp yêu cầu (explicit request) Phương pháp này yêu cầu máy thu phải gửi báo nhận âm NAK cho khung dữ liệu bị mất hoặc khung dữ liệu nhận được bị lỗ

Idle RQ đòi hỏi máy phát phải chờ cho đến khi nhận được tín hiệu ACK của khung cuối cùng vừa gửi, trước khi chuyển khung kế tiếp Khi máy phát nhận được NAK, máy phát phải gửi lại khung đã gửi của lần nhận ACK trước, không kể số lượng

Hoạt động

Lỗi khung dữ liệu: Nếu máy thu phát hiện một khung vừa nhận có lỗi thì sẽ

chuyển về một khung NAK và máy phát sẽ chuyển lại khung vừa chuyển

Ví dụ 5.8:

trong hình bên dưới, máy phát chuyển một khung dữ liệu Data 0 Máy thu chuyển về một tín hiệu ACK1, cho biết data 0 đã đến tốt và máy thu đang chờ data 1 Máy phát chuyển tiếp khung dữ liệu Data 1 Tín hiệu được nhận tốt, máy thu chuyển

về ACK 0 Máy phát chuyển tiếp khung dữ liệu mới: data 0 Máy thu nhận ra lỗi và gửi

về NAK Máy phát gửi lại data 0 Trường hợp này máy thu tốt, nên máy thu chuyển về tín hiệu ACK 1

Hình 5.19 Truyền dữ liệu trong giao thức Stop and Wait ARQ khi lỗi khung dữ liệu

Mất khung

- Bị mất khung dữ liệu trong quá trình truyền

- Bị mất khung ACK trong quá trình truyền

- Bị mất khung NAK trong quá trình truyền

Mất khung data:

Trang 26

Hình 5.20 Truyền dữ liệu trong giao thức Stop - and - wait ARQ

khi mất khung dữ liệu Máy phát có trang bị bộ định thời khi truyền dữ liệu Máy phát chờ đợi tín hiệu ACK hay NAK khi tín hiệu được nhận, nếu tín hiệu không đến nơi nhận, sẽ không có ACK hay NAK, máy thu đợi hết thời gian qui định, sẽ gửi lại bản tin vừa gửi rồi chờ đợi thông tin xác nhận từ máy thu

Mất khung ACK và NAK:

Trường hợp này, khung dữ liệu đã tới được máy thu, nhưng tín hiệu ACK và NAK lại bị thất lạc trong khi gửi về Máy phát chờ cho đến khi hết thời gian do timer qui định, và tiếp tục gửi khung vừa gửi Máy thu nhận và kiểm tra, nếu tín hiệu là NAK, máy thu chấp nhận khung mới này và gửi trả lời bằng ACK Nếu mất khung là ACK thì nhận khung copy này như là bản sao, chấp nhận rồi hủy đi để chờ bản tin kế

tiếp đến

Hình 5.21 Truyền dữ liệu trong giao thức Stop and Wait ARQ

khi mất ACK hoặc NAK

Trang 27

Hiệu suất Stop and Wait ARQ

- Hiệu suất truyền trên kênh không lỗi

Hình 5.22 Các phần tử trễ trong Stop and Wait ARQ

Hình 5.22 chỉ ra các thành phần trễ cơ bản t 0 trong giao thức Stop - and - Wait ARQ từ khi khung dữ liệu bắt đầu truyền vào kênh tới khi ACK được xác nhận Bit đầu tiên được đặt vào kênh truyền cho tới khi xuất hiện tại đầu ra của kênh sau một

thời gian truyền t prop; bit cuối cùng của khung được nhận tại trạm B sau khi cộng thêm

t f giây Trạm B yêu cầu t proc giây để chuẩn bị một khung ACK, nó sẽ yêu cầu t ack giây thời gian truyền Sau đó cộng thêm một thời gian trễ truyền để khung ACK nhận được

tại trạm A Cuối cùng là thời gian t proc được cộng thêm để lấy ra mã kiểm tra CRC Như vậy tổng thời gian để gửi một khung và nhận một ACK trong trường hợp bỏ qua lỗi được tính như sau :

t0 2t prop2t proct ft ack

R

n R

n t

proc prop  

2 2 (5.7) Trong công thức trên, ta đã lấy xấp xỉ thời gian xử lý khung dữ liệu bằng thời gian xử lý khung ACK

Trong đó: n f là số bit trong khung dữ liệu

n a là số bit trong khung ACK

R là tốc độ của kênh truyền

Tốc độ truyền tin hiệu quả:

Trong đó n0 là số bit của header và CRC trong một khung

Như vậy hiệu suất truyền của Stop and Wait ARQ là tỉ số giữa R effR

Trang 28

proc prop

f a

f f

eff

n

R t t

n n

n n

R t

n n

R

R

h

)(

21

0 0

Trong thực tế hầu hết các trường hợp phù hợp với giao thức Idle RQ, thời gian

xử lý t proc đều rất nhỏ so với thời gian truyền t prop, số bit khung ACK n avà số bit của header và CRC n0cũng nhỏ hơn rất nhiều so với khung dữ liệu n f nên n a,n0có thể bỏ qua Biểu thức hiệu suất là:

- Hiệu suất truyền trên kênh có không lỗi

Gọi P f là xác suất để một khung truyền có lỗi Ta giả sử rằng khung truyền có lỗi độc lập với các khung khác → xác suất truyền khung đến máy thu không lỗi

là1 P f

f

f f

e p

Để tính hiệu suất của truyền của Stop and Wait ARQ chúng ta cần tính tổng thời

gian trung bình để tạo ra một khung không lỗi là

f P

t

1

0

Khi đó hiệu suất truyền sẽ là:

1

11

0 0

0

f

f

proc prop

f a

f f

n

n n

R P t

n n

Tương tự như trong phần xét hiệu suất truyền trên kênh không lỗi, nếu xét trong

các trường hợp thực tế, bỏ qua t ,n và Biểu thức hiệu suất là:

Trang 29

W 1

1 2

f S

P h

Truyền 1500 byte thông tin theo giao thức HDLC, sử dụng giao thức Stop - and

- wait ARQ Giả sử bỏ qua thời gian xử lý gói tin tại nút và chiều dài gói tin ACK là rất nhỏ Xác định hiệu suất sử dụng đường truyền trong bốn trường hợp:

- Cáp xoắn đôi chiều dài 1km

- Đường kênh thuê riêng chiều dài 1000 km

Giả thiết các đường truyền là không nhiễu Đánh giá các kết quả thu được?

Giải:

Trường hợp 1: Tốc độ truyền 1Kbaud, Cáp xoắn đôi chiều dài 1km

Vì sử dụng kỹ thuật điều chế 4-ASK nên tốc độ bit là:

do đó 1+2a1 nên h0 1

Trường hợp 3: Tốc độ truyền 1Mbaud, Cáp xoắn đôi chiều dài 1km

Vì sử dụng kỹ thuật điều chế 4-ASK nên tốc độ bit là:

R= Rslog2M =106 log24 = 2 106 bps

Trang 30

Ưu điểm chính của giao thức Stop - and - wait ARQ là nó yêu cầu lượng bộ

đệm tối thiểu để thực hiện vì cả máy phát và máy thu chỉ cần chứa đủ một khung,

Ngoài ra máy phát chỉ phải duy trì một số định danh của khung nhận thành công sau

- Thiết bị phát lưu một bản sao của tất cả các khung gửi đi cho đến khi chúng được xác nhận

- Trong cửa sổ trượt ARQ được trang bị bộ định thời có khả năng xử lý các xác nhận bị thất lạc

- Trong cửa sổ trượt ARQ, (n-1) khung (kích thước của cửa sổ) có thể được gửi đi trước khi nhận được xác nhận Nếu (n-1) khung là các xác nhận mong đợi, máy

phát khởi động bộ định thời và chờ trước khi gửi nữa Nếu đã hết thời gian cho phép

mà không nhận được xác nhận thì máy phát giả sử là các khung chưa nhận được và gửi lại một hay tất cả các khung tùy theo từng giao thức Chú ý rằng trong phương pháp

Trang 31

Stop - and - wait ARQ, máy phát không có cách nào biết được là khung bị thất lạc là

dữ liệu, ACK hay NAK Bằng cách gửi lại các khung dữ liệu, có hai khả năng khôi phục: dữ liệu thất lạc và NAK thất lạc Nếu thất lạc khung là khung ACK thì máy thu

có thể nhận biết sự dư thừa thông qua số trên khung và loại các dữ liệu thừa

Hoạt động

Trong phương pháp cửa sổ trượt Go - back - N ARQ, nếu một khung bị thất lạc hay hỏng, tất cả các khung được phát khi tín hiệu xác nhận cuối cùng được gửi đi Có 3 dạng phát lại: Lỗi khung dữ liệu, mất khung dữ liệu và mất khung ACK

Để đơn giản ta giả sử với các trường hợp cụ thể như sau

Lỗi khung dữ liệu:

Việc gì xảy ra nếu các khung 0, 1, 2 và 3 đã được gửi đi, nhưng tín hiệu xác nhận đầu tiên lại là NAK 3? Chú ý rằng NAK có hai ý nghĩa: (1) một xác nhận về tất

cả các khung nhận được trước khi có khung bị hỏng và (2) tín hiệu không xác nhận đối với khung hiện tại Nếu NAK đầu tiên là NAK 3, có nghĩa là các khung dữ liệu 0, 1, và

2 đã được nhận tốt Chỉ cần gửi lại khung số 3

Việc gì xảy ra nếu các khung từ 0 đến 4 đã được gửi đi trước khi nhận được NAK 2? Ngay vừa khi máy thu phát hiện lỗi, thì máy ngừng tiếp nhận các khung cho đến khi khung bị hỏng được thay thế xong Trong trường hợp này thì dữ liệu 2 xuất hiện hỏng và bị loại, cùng các dữ liệu 3 và 4 Dữ liệu 0 và 1, đã được nhận trước khi có khung bị hỏng, đã được chấp nhận, bằng cách gửi về máy phát khung NAK 2 Như thế cần gửi lại các khung 2, 3 và 4

Time Time

Data 0

Error, Discarded

Data 1 Data 2 Data 3

Data 5

NAK 3

Data 3 Data 4 Data 5

Discarded Discarded

Resent Resent Resent

Hình 5.23 Hoạt động của Go - back - N khi lỗi khung dữ liệu Hình 5.23 là một ví dụ về hoạt động của Go - back – N, trong đó 6 khung được gửi đi trước khi phát hiện ra lỗi ở khung 3 Trường hợp này máy thu gửi về tín hiệu ACK 3 cho biết các khung 0, 1 và 2 đã được chấp nhận Trong hình thì ACK 3 đã được gửi trước khi dữ liệu 3 đến Phát hiện lỗi tại khung 3, tín hiệu NAK được gửi tức thì và

Trang 32

các khung 4 và 5 bị loại khi chúng đến Thiết bị phát gửi lại cả ba khung (3, 4 và 5) do

từ xác nhận trước đó, và quá trình tiếp tục Máy thu đã loại các khung 4 và 5 (cùng các khung tiếp theo) cho đến khi nhận tốt được khung 3

Mất khung dữ liệu:

Giao thức cửa sổ trượt đòi hỏi các khung dữ liệu phải được chuyển đi tuần tự Nếu một trong số các khung này bị nhiễu và bị thất lạc trong khi truyền, thì khung đến sau sẽ bị máy thu loại Máy thu kiểm tra số nhận dạng của mỗi khung, phát hiện ra là một số khung đã bị bỏ qua, và gửi về tín hiệu NAK cho khung thất lạc đầu tiên Khung NAK không chỉ ra là khung đã bị thất lạc hay hỏng, chỉ thông báo yêu cầu gửi lại Thiết bị phát sẽ phát lại khung do NAK yêu cầu, cùng các khung đã được chuyển đi sau khung vừa thất lạc

Time Time

Hình 5.24 Hoạt động của Go back N khi mất khung dữ liệu Trong hình trên, dữ liệu 0 và 1 thu được nhưng dữ liệu 2 thì bị mất Khung kế tiếp

sẽ đến máy thu là khung 3 Máy thu đang chờ khung 2 nên khung 3 bị xem là lỗi, bị loại

và gửi về thông báo NAK 2, cho biết các khung 0 và 1 đã được chấp nhận nhưng khung 2 thì bị sai (bị thất lạc trong trường hợp này) Trong ví dụ trên, do máy phát đã phát dữ liệu

4 trước khi nhận được NAK 2, dữ liệu 4 đến đích nhưng bị loại Một khi máy phát nhận được tín hiệu NAK 2, thì chuyển tất cả các khung còn bị kẹt lại (2, 3 và 4)

Mất ACK:

Máy phát không mong nhận được các khung ACK sau mỗi dữ liệu đã gửi Vì vậy nên không thể dùng các chuỗi số của ACK để nhận dạng các khung ACK hay NAK bị thất lạc, mà phải dùng một timer Thiết bị phát có thể gửi bất kỳ khung nào

Trang 33

trong lúc mà cửa sổ còn cho phép trước khi chờ tín hiệu chấp nhận Một khi giới hạn thời gian này đã hết hay máy phát không còn khung để gửi thì máy phát phải chờ Nếu một tín hiệu ACK (đặc biệt nếu là NAK) do máy thu gửi đi bị thất lạc, thì máy phát phải chờ mãi Để tránh tình trạng này, phải phát phải trang bị một bộ timer nhằm bắt đầu đếm khi dung lượng cửa sổ đã đầy Khi không nhận được tín hiệu xác nhận sau một thời gian hạn định, máy phát gửi lại mỗi khung đã được phát từ lần nhận được ACK gần nhất

Time Time

Data 0

Lost

Data 1 Data 2 ACK 3 0 1 2

5.4.2.2 Lặp lại có lựa chọn (Selective - repeat ARQ)

Trong giao thức này, chỉ phải truyền lại các khung bị hỏng hay thất lạc Nếu một khung bị hỏng trong khi truyền thì tín hiệu NAK được gửi về và khung này được gửi riêng Bộ thu phải có khả năng chọn lọc các khung và chèn vào đúng chỗ trong chuỗi khung Để thực hiện được việc này, hệ thống Selective - repeat ARQ có điểm khác so với Go - back - N ARQ như sau:

- Thiết bị thu phải có trình tự chọn lọc cho phép sắp xếp lại các khung nhận được Thiết bị thu cũng cần lưu trữ được các khung đã nhận được từ sau khi gửi về NAK cho đến khi khung hỏng này được thay thế

- Thiết bị phát phải có cơ chế tìm kiếm nhằm cho phép tìm và chọn lọc các khung được yêu cầu truyền lại

Trang 34

- Bộ nhớ đệm tại phần thu sẽ lưu trữ tất cả các khung đã nhận được trước đó cho đến khi tất cả các khung truyền lại được chọn lọc và các khung trùng lặp được nhận ra

và loại bỏ

- Nhằm tăng tính chọn lọc, các số ACK, cũng như số NAK cũng được ghi cho các khung đã nhận được (hay thất lạc) thay vì là các khung mong muốn nhận

- Tính phức tạp này đòi hỏi kích thước của cửa sổ phải bé hơn so với trường hợp

Go - back -N để cho phép hệ thống hoạt động hiệu quả hơn Kích thước cửa sổ nên được chọn bé hơn hay bằng (n 1 ) / 2, trong đó (n 1 ) là kích thước cửa sổ của trường hợp Go - back - N

Các trường hợp hỏng:

Lỗi khung dữ liệu

Hình 5.26 minh họa tình huống trong đó khung dữ liệu nhận được bị lỗi Theo

đó, khung 0 và 1 được nhận nhưng không được xác nhận Dữ liệu 2 đến và bị phát hiện

là có lỗi, đến có tín hiệu NAK về Tương tự khung NAK trong phương pháp sửa lỗi go-back-n, một NAK ở đây chứa thông tin của phần xác nhận dữ liệu nhận và chỉ thị sai số ở khung hiện tại Trong hình thì NAK-2 cho máy phát biết rằng dữ liệu 0 và 1 đã được chấp nhận, nhưng phải gửi lại dữ liệu 2 Khác với trường hợp máy thu của hệ thống sử dụng Go - back - N ARQ, trường hợp này máy thu truyền lại có chọn lọc nên bắt đầu chấp nhận các khung mới trong khi chờ đợi các lỗi phải sửa Tuy nhiên, do ACK cho biết về các cuộc nhận thành công không chỉ trong khung đang có mà còn có giá trị cho tất cả các khung đã nhận được trước đó, các khung nhận được sau khi khung lỗi chưa được xác nhận, cho đến khi các khung lỗi được gửi lại Trong hình thì máy thu chấp nhận dữ liệu 3, 4 và 5 trong khi chờ bản copy của dữ liệu 2 Khi dữ liệu 2 mới tới, tín hiệu ACK 5 được gửi trả về, xác nhận về tín hiệu 2 mới, và các khung gốc 3, 4 và

5 Máy thu cần có phương thức chọn lựa trong các chuỗi khung được truyền lại và theo dõi xem khung hỏng còn thiếu để có thể xác nhận

Trang 35

` `

Time Time

Data 0

Resent

Data 1 Data 2

NAK 2 Data 3 Data 4 Data 5

Hiệu suất Continuous RQ

Trong phần thảo luận giao thức Idle RQ, chúng ta đã thấy hiệu suất sử dụng liên kết là một hàm theo thời gian truyền một khung dữ liệu và thời gian lan truyền của liên

kết Tuy nhiên, trong các liên kết với t prop lớn hơn t f thì hiệu suất sử dụng liên kết cũng

bị chi phối bởi cửa sổ truyền

Đối với giao thức Continuous RQ, hiệu suất truyền có mối liên hệ với cửa sổ

truyền K như sau:

0 1

h  nếu K 1 2a (5.15)

Trang 36

So sánh giữa phương pháp Go – back – N và Selective – repeat ARQ

Mặc dù chỉ truyền lại các khung bị hỏng hay thất lạc nên có vẻ hiệu quả hơn so với việc chuyển lại tất cả các khung bị hỏng, nhưng do cơ chế chọn lọc và lưu trữ mà máy thu phải có, cùng với cơ chế chọn lọc phức tạp nên phương pháp Selective - repeat có chi phí đắt hơn và ít được dùng Tức là, tuy có hiệu quả hơn nhưng thực tế thì phương pháp Go – back – N được dùng nhiều hơn do dễ thiết lập

Nhận xét: Giao thức Stop – and – Wait ARQ có thể coi là một trường hợp đặc biệt của giao thức cửa sổ trượt trong đó kích thước cửa sổ được chọn là 1

Ví dụ 5.11:

Truyền 1500 bit thông tin theo giao thức HDLC, sử dụng giao thức Selective – repeat ARQ Xác định hiệu suất sử dụng đường truyền trong các trường hợp sau nếu tốc độ lan truyền là 2.108 m/s và độ lỗi bit của các liên kết thấp không đáng kể:

a) Một liên kết dài 2km có tốc độ 2Mbps và cửa sổ truyền K= 3

b) Một liên kết dài 20km có tốc độ 300Mbps và cửa sổ truyền K= 8

c) Một liên kết vệ tinh dài 20 000km có tốc độ 2Mbps và cửa sổ truyền K= 128

Giải:

Một liên kết dài 2km có tốc độ 2Mbps và cửa sổ truyền K= 3

Thời gian cần truyền 1 frame t f là:

t f = số bit trong frame/ tốc độ bit (bps)

K=8 nhỏ hơn 1+2a nên U=K/(1+2a)=8/(1+2*20)=0,2

c) Một liên kết vệ tinh dài 20 000km có tốc độ 2Mbps và cửa sổ truyền K= 128

Trang 37

=1500/2 106 = 750 10-6s

a = 0,1/750 10-6=133

K=128 nhỏ hơn 1+2a nên U=K/(1+2a)=128/(1+2*133)=0,48

5.5 Điều khiển liên kết dữ liệu mức độ cao HDLC

Giao thức HDLC là một giao thức chuẩn hoá quốc tế đã được định nghĩa bởi ISO để dùng cho cả liên kết điểm - nối - điểm và đa điểm Nó hỗ trợ hoạt động ở chế

độ trong suốt, song công hoàn toàn và ngày nay được dùng một cách rộng dãi trong các mạng đa điểm và trong các mạng máy tính Ngoài tên gọi là HDLC nó còn có các tên gọi khác như: SDLC (Synchronous data link control) của IBM, ADCCP (Advanced data communications control procedure) là tên dùng bởi tổ chức ANSI

Từ cấu hình nói lên quan hệ của các thiết bị phần cứng trong kết nối Các trạm

sơ cấp, thứ cấp và kết hợp có thể được cấu hình theo 3 cách: không cân bằng, đối xứng

và cân bằng

Các cấu hình này đều hỗ trợ cho phương thức truyền song công và bán song công Cấu hình không cân bằng(hay còn gọi là cấu hình master/slave) trong đó có một thiết bị là sơ cấp và các thiết bị khác là thứ cấp Cấu hình không cân bằng còn được gọi

là cấu hình điểm - điểm nếu chỉ có hai thiết bị, và thường là điểm - nhiều điểm trong

đó một thiết bị sơ cấp điều khiển nhiều thiết bị thứ cấp

Cấu hình đối xứng, trong đó mỗi trạm vật lý trên mạng gồm hai trạm luận lý, một là sơ cấp và một là thứ cấp Các dây riêng biệt nối sơ cấp của một trạm vật lý đến thứ cấp của một trạm vật lý khác Cấu hình đối xứng hoạt động tương tự như cấu hình không cân bằng trừ việc điều khiển mạng có thể được cả hai mạng thực hiện

Cấu hình cân bằng, trong đó có một trạm dạng hỗn hợp, trong số các trạm cấu hình điểm - điểm Các trạm được kết nối dùng một dây và được điều khiển từ các trạm khác

Trang 38

Hình 5.27 Các cấu hình của các trạm sơ cấp, thứ cấp và kết hợp

HDLC không hỗ trợ chế độ cân bằng nhiều điểm Điều này đưa ra nhu cầu cho việc thiết lập các giao thức truy cập môi trường cho mạng LAN

c) Chế độ đáp ứng

Hoạt động của HDLC dựa trên quan hệ giữa hai thiết bị cần trao đổi thông tin: Chế độ này cho biết ai điều khiển mạng Trao đổi trong cấu hình không cân bằng thường được thực hiện trong chế độ đáp ứng bình thường Trao đổi trong cấu hình đối xứng hay cân bằng có thể được thiết lập ở các chế độ đặc biệt dùng các frame được thiết kế để mang lệnh điều khiển (sẽ thảo luận trong phần U-frame) HDLC hỗ trợ ba chế độ thông tin giữa các trạm:

Chế độ đáp ứng bình thường (normal response mode: NRM)

Chế độ đáp ứng không đồng bộ (asynchronous response mode: ARM)

Chế độ cân bằng không đồng bộ (asynchronous balanced mode: ABM)

NRM: là chuẩn về quan hệ sơ cấp-thứ cấp Trong chế độ này, thiết bị thứ cấp

phải cho phép từ thiết bị sơ cấp thì mới có thể gửi tin Khi đã có phép rồi thì thiết bị thứ cấp có có thể khởi tạo một đáp ứng truyền một hay nhiều frame dữ liệu

Trang 39

ARM: thiết bị thứ cấp có thể khởi tạo việc truyền không cần sự cho phép của

thiết bị sơ cấp khi nào kênh trống Các trường hợp khác thì quan hệ master/slave vẫn được duy trì

Mọi thông tin truyền từ thiết bị thứ cấp (hay từ một thiết bị thứ cấp khác trong đường truyền) vẫn phải dùng thiết bị sơ cấp làm relay để đi đến đích

ABM: mọi thiết bị đều đồng quyền nên cần có các trạm hỗn hợp điểm nối điểm

Các trạm hỗn hợp có thể gửi tin đến các trạm hỗn hợp khác mà không cần có phép

■ Normal response mode (NRM)

■ Asynchronous response mode (ARM)

■ Asynchronous balanced mode (ABM)

5.5.2 Cấu trúc khung

Nhằm cung cấp hỗ trợ mềm dẻo cho tất cả các trường hợp về chế độ và cấu hình

đã nói trên, HDLC định nghĩa 3 dạng frame: frame thông tin (I-frame: information frame), frame giám sát (S-frame: supervisory frame) và frame không đánh

số (unnumbered frame U-frame)

Hình 5.28 Các khung trong HDLC Trong chương 4, chúng ta đã nghiên cứu về cấu trúc cơ bản của khung HDLC Phần này chúng ta tìm hiểu kỹ trường điều khiển trong khung HDLC

Trường điều khiển là đoạn gồm một hay nhiều byte của frame được dùng để quản lý

Đầu tiên, khảo sát trường hợp một byte, rồi sẽ phát triển thành trường hợp 2 byte, được gọi là chế độ mở rộng

Tùy theo dạng frame mà trường điều khiển có thể khác nhau

- Nếu bit đầu tiên của trường điều khiển là 0, thì đó là I-frame

Trang 40

- Nếu bit đầu là 1 và bit kế là 0 thì đó là S-frame

- Nếu cả hai bit đầu và kế đều là 1, thì đó là U-frame

Trường điều khiển của cả ba dạng frame đều chứa một bit được gọi là poll/final(P/F) - bit thứ 5

Một I-frame chứa 2 chuỗi 3 bit điều khiển lưu lượng và kiểm tra lỗi, được gọi là N(S) và N(R), nằm giữa bit (P/F) N(S) cho biết số frame mong muốn gửi trả về trong trường hợp trao đổi hai chiều; còn N(R) cho biết số frame kế tiếp trong chuỗi Nếu frame cuối không được nhận chính xác, thì số N(R) sẽ là số các frame bị hỏng, cho thấy nhu cầu cần truyền lại

Trong các trường hợp, thì thường có khả năng đặt các thông tin về lưu lượng, lỗi và các thông tin khác trong một I-frame tức là frame có chứa dữ liệu Ví dụ, trong phương thức trao đổi hai chiều (half hay full duplex), trạm 2 có thể xác nhận dữ liệu nhận được từ trạm 1 trong trường điều khiển của chính khung dữ liệu của mình thay vì gởi các khung xác nhận riêng Kết hợp dữ liệu gởi vào thông tin điều khiển theo cách này được gọi là piggybacking (cõng, cưỡi trên lưng người khác)

Như vậy, Piggybacking (cõng) là phương thức kết hợp dữ liệu truyền và xác

nhận vào trong một khung đơn

Trường điều khiển trong S-frame có chứa trường N(R) nhưng không chứa trường N(S) S-frame được dùng để gửi về N(R) khi máy thu không có dữ liệu riêng để gửi đi Mặt khác, tín hiệu xác nhận chứa trong trường điều khiển của một I-frame (nói trên)

S-frame không truyền dữ liệu nên không cần trường N(S) để nhận dạng chúng Hai bit nằm trước bit P/F trong S-frame được dùng mang mã lưu lượng (code flow) và thông tin kiểm tra lỗi, sẽ được thảo luận ở phần sau

Hình 5.29 Cấu trúc I - frame, S - frame và U - frame

U-frame thì không có các trường N(S) và N(R), và không được thiết kế để trao đổi dữ liệu của người dùng hay tín hiệu xác nhận Thay vào đó, U-frame có hai trường code, trường thứ nhất gồm hai bit, và trường thứ hai là ba bit, chèn giữa bởi bit

Ngày đăng: 25/05/2021, 20:46

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm