You are on page 1of 31

Trường đại học khoa học tự nhiên

Khoa điện tử viễn thông


---✤✤✪✤✤---

BÁO CÁO ĐỒ ÁN
MÔN MẠNG VIỄN THÔNG
Chủ đề:
Kỹ thuật và phương thức truyền số liệu: kỹ thuật điều khiển
luồng, kiểm soát lỗi, phương pháp phát hiện và sửa lỗi

GVHD: Trần Thị Huỳnh Vân


Sinh viên thực hiện:
Đoàn Việt Huy 18200120
Trịnh Đình Huy 18200131
Hoàng Thế Đại Huynh 18200133
Nguyễn Tuấn Huỳnh 18200134
Lê Nguyễn Anh Kiệt 18200151
Lê Ngọc Lâm 18200155

Năm học: 2020 – 2021


MỤC LỤC
Chương 1 : Tổng quan về truyền số liệu.................................................................. 2

I. Một số vấn đề cơ bản: ................................................................................... 2

1. Thông tin, tín hiệu: .................................................................................... 2

2. Tần số, phổ , băng thông: .......................................................................... 2

II. Cách truyền thông tin trên đường dây: ...................................................... 3

Chương 2 : Kỹ thuật điều khiển luồng, kiểm soát lỗi, phương pháp phát hiện và
sửa lỗi ............................................................................................................................... 4

I. Kỹ thuật điều khiển luồng ............................................................................ 4

1. Định nghĩa .................................................................................................. 4

1. Các kỹ thuật điều khiển luồng .................................................................. 4

Điều khiển luồng kết hợp ARQ – Stop-and- wait (dừng và đợi) ........................ 5

Phương pháp điều khiển luồng Go back – N ....................................................... 7

Điều khiển luồng kết hợp ARQ – Selective repeat............................................ 10

Điều khiển luồng theo phương pháp cửa sổ (Window Flow Control) .............. 10

II. Kiểm soát lỗi, phương pháp phát hiện và sửa lỗi ..................................... 14

1. Phương pháp phát hiện lỗi trong truyền số liệu ....................................... 14

Phương pháp dò dùng dư thừa – Redundancy ............................................. 14

2. Sửa lỗi ........................................................................................................ 22

a. Sửa lỗi bit đơn .......................................................................................... 22

b. Sửa lỗi hàng loạt bit ................................................................................. 28

1
Chương1: Tổng quan về truyền số liệu
I. Một số vấn đề cơ bản:
1. Thông tin, tín hiệu:
▪ Thông tin: Sự cảm hiểu con người về thế giới xung quanh
▪ Nhu cầu trao đổi thông tin: Rất lớn
▪ Dữ liệu: Dạng biểu diễn thông tin (chữ viết, hình ảnh, cử chỉ, lời nói...). Đặc
biệt trên máy tính dữ liệu được số hoá để có khả năng lưu trữ, xử lý, biến đổi, truyền
gửi... (Chú ý: Phân biệt giữa dữ liệu và thông tin).
▪ Thông tin khi truyền: Theo các dạng năng lượng khác nhau: Âm, điện, sóng
quang, sóng điện từ...
▪ Vật mang: Môi trường dùng để mang thông tin (Là dạng năng lượng - Có
khả năng lưu trữ, truyền gửi... ).
▪ Tín hiệu: Vật mang đã chứa thông tin trong nó, Là một hàm đơn trị biến thiên
theo thời gian hay tần số.
▪ Tín hiệu liên tục: Là tín hiệu biến thiên liên tục theo thời gian và có biên độ
biến thiên liên tục (Nêu ví dụ)
▪ Tín hiệu rời rạc: Tín hiệu có biến độc lập rời rạc, ta có thể thu tín hiệu rời rạc
bằng cách lấy mẫu rời rạc từ tín hiệu liên tục (tín hiệu lấy mẫu).
▪ Tín hiệu lượng tử: Tín hiệu có biên độ rời rạc theo các mức lượng tử.
▪ Tín hiệu số: Tín hiệu rời rạc hoá cả về biên độ, tần số lẫn thời gian.

2. Tần số, phổ , băng thông:

2
- Tần số: Tần số (f) của tín hiệu là số dao động của tín hiệu trong một đơn vị
thời gian (thường tính bằng giây)

- Chu kỳ: Chu kỳ (T) của tín hiệu là khoảng thời gian để tín hiệu lặp lại một lần.

- Pha: Là đơn vị đo vị trí tương đối tại một thời điểm trong một chu kỳ đơn
của tín hiệu, nó đặc trưng cho tính trễ.

- Phổ: Phổ của tín hiệu là dãy các tần số mà nó có thể chứa.

- Băng thông: Băng thông của tín hiệu là độ rộng của phổ.
II. Cách truyền thông tin trên đường dây:
Khi truyền thông tin trên đường dây:
• Các bit phải được truyền liên tiếp theo thứ tự tăng dần từ b1 đến bn
• Bít kiểm tra phải được truyền sau cùng.
❖ Phương thức truyền
Việc truyền một dãy bit dữ liệu từ một thiết bị này đến một thiết bị khác qua đường
truyền liên quan đến nhiều vấn đề hoạt động và sự tương thích nhau giữa các thiết bị
tham gia.
Một trong những vấn đề cơ bản cần thiết nhất là sự đồng bộ. Khi hai bên thực hiện
việc trao đổi dữ liệu thì bên nhận phải biết được tốc độ của các bít trên đường truyền, để
từ đó xác định giá trị chính xác các bit.
❖ Kỹ thuật truyền
Cả tín hiệu tương tự và tín hiệu số đều có thể được truyền đi bằng các thiết bị phù
hợp. Chúng được xử lý như một hàm của hệ thống truyền.
Đường truyền: cho phép kết nối vật lý giữa hai điểm mà ở đó có đặt các DTE.
Giống như môi trường truyền đã xét trong chương trước, đường truyền cũng được phân
thành hai loại: hữu tuyến và vô tuyến.
DCE phát: biến đổi dữ liệu thành tín hiệu tương thích với đường truyền sử dụng,
bao gồm:

3
• Mã hoá: biến đổi dãy tín hiệu nhị phân thành dãy ký hiệu q mức
• Điều chế: biến đổi thông báo ở băng tần cơ sở a(t) thành tín hiệu s(t) như
là nhận biết s(t) trong khoảng đặc trưng [iD, (i+1)D] cho phép tìm ra ký hiệu a tương
ứng
DCE thu: ngược lại với DCE phát, chức năng của DCE thu là giải điều chế và
giải mã tín hiệu.
Giao tiếp
• DCE thu - phát: tín hiệu trao đổi thường là thông báo dữ liệu, chuẩn thời
gian hay chuẩn dữ liệu, tín hiệu cho phép thiết lập hay huỷ bỏ liên kết
• DCE - đường truyền: đặc trưng qua đường dây phải kể đến đó là băng thông,
công suất và đặc trưng tín hiệu phải kể đến đó là nguyên tắc điều chế, sự chuẩn hoá các
đặc trưng.
Các kỹ thuật truyền số liệu: truyền dữ liệu ở băng tần cơ sở; truyền dữ liệu qua điều
biên, điều tần và điều pha; truyền nối tiếp đồng bộ; truyền không đồng bộ(ATM).
Chương2: Kỹ thuật điều khiển luồng, kiểm soát lỗi, phương pháp phát hiện và sửa
lỗi
I. Kỹ thuật điều khiển luồng
1. Định nghĩa
Điều khiển luồng là cơ chế nhằm đảm bảo việc truyền thông tin của phía phát không
vượt quá khả năng xử lý của phía thu.
Cơ chế điều khiển luồng được thiết kế để điều khiển luồng dữ liệu giữa người nhận
và người gửi sao cho vùng đệm của người nhận không bị tràn. Nếu bị tràn, các khung
hoặc gói dữ liệu bị mất. Điều khiển luồng được dùng trong tầng liên kết dữ liệu để điều
khiển các liên kết điểm-điểm và trong tầng chuyển tải để điều khiển luồng end-to-end
trên mạng có định tuyến.
1. Các kỹ thuật điều khiển luồng

4
Khi truyền thông tin trong mạng, thông tin truyền từ phía phát sang phía thu có
thể bị sai lỗi hoặc mất. Việc thông tin bị mất thì cần phải thực hiện truyền lại thông tin.
Còn Việc thông tin bị sai thì cần phải tìm hiểu nguyên nhân để sửa sai. Có hai cách để
sửa sai.
Sai do bên thu và sửa lỗi trực tiếp bên thu với điều kiện là thông tin trước khi truyền
phải được cài các mã sửa lỗi. Như vậy số lượng bít thông tin có thể sửa sai phụ thuộc
vào số lượng mã sửa sai và số bít thông tin thêm vào cho mục đích sửa sai. Số bít thông
tin thêm vào càng lớn thì số bít có thể sửa sai càng nhiều, tuy nhiên hiệu suất thông tin
lại thấp.
Sửa sai bằng cầu bên phát truyền lại thông tin. Với phương pháp này thì chỉ cần
thêm các bít thông tin phục vụ cho mục đích phát hiện lỗi, do đó hiệu suất truyền thông
tin cao hơn so với trường hợp trên. Tuy nhiên khi có lỗi xảy ra với khung thông tin thì
toàn bộ khung thông tin phải được truyền lại.
Cơ chế điều khiển luồng theo phương pháp cửa sổ được hoạt động tương tự như
các cơ chế phát lại ARQ(Automatic Repeat Request – yêu cầu lặp lại tự động). Cơ chế
phát lại này được chia làm 3 loại với những đặc điểm và hoạt động khác nhau.

Điều khiển luồng kết hợp ARQ – Stop-and- wait (dừng và đợi)

Stop - and -wait là một dạng của điều khiển dòng truyền dừng và đợi đã
mở rộng để chứa các chức năng truyền lại dữ liệu trong trường hợp dữ liệu bị mất hoặc
bị hư hỏng.
Hình vẽ mô tả nguyên tắc hoạt động cơ bản của cơ chế phát lại dừng và đợi:

5
Hình 2.1: Phát lại theo cơ chế dừng và đợi

a. Hoạt động
Phía phát sẽ thực hiện phát một khung thông tin sau đó dừng lại chờ phía thu báo
nhận. Phía thu khi nhận đúng khung thông tin và xử lý xong sẽ gửi báo nhận lại cho phía
phát(ACK – Acknowledgement - thừa nhận).Phía phát sau khi nhận được báo nhận sẽ
phát khung thông tin tiếp theo.
Phía thu khi nhận khung thông tin và phát hiện sai sẽ gửi báo sai lại cho phía
phát(NACK –Negative Acknowledgement – tiêu cực thừa nhận). Phía phát sau khi nhận
được báo sai sẽ thực hiện phát lại khung thông tin. Phía phát sử dụng cơ chế timeout để
phát lại khi không nhận được hồi âm từ phía thu.
Để phân biệt được các khung thông tin với nhau, cần đánh số khác khung.
Dùng một bít để đánh số khung(bít 0 hoặc 1). Số thứ tự khung thông tin từ phía phát
sang phía thu nằm trong trường SN(Sequence number), số thứ tự của báo nhận từ phía
thu sang phía phát nằm trong trường RN(Request number- yêu cầu số).
❖ Hoạt động của cơ chế Stop- and- wait ARQ khi sử dụng SN và RN:
Khi phía phát tại thời điểm ban đầu SN = 0.
1. Nhận gói tin từ lớp phía trên và gán SN cho gói tin này.

6
2. Gửi gói tin SN này trong khung thông tin có số thứ tự là SN.
3. Chờ khung thông tin(không có lỗi, đóng vai trò là khung báo nhận) từ phía
thu.Khi khung nhận được không có lỗi, và trong trường hợp Request có RN>SN thì đặt
giá trị SN = RN và quay lại bước 1. Khi không nhận được khung thông tin trong khoảng
thời gian định trước(time out) thì thực hiện bước 2.
Tại đầu thu: ban đầu RN = 0
4. Khi nhận được một khung thông tin( không có lỗi) từ phía phát, chuyển khung
này lên lớp phía trên và tăng RN lên 1.
5. Khi nhận được khung thông tin có lỗi, gửi lại một khung thông tin cho phía phát
với RN được giữ nguyên ( khung báo sai- NAK). Khung được gửi từ phía thu này có thể
chứa cả thông tin từ phía thu sang phía phát chứ không đơn thuần chỉ dùng cho mục đích
báo sai.
Hình mô tả nguyên tắc hoạt động của cơ chế Stop- and- Wait:

Hình 2.2: Stop-and-Wait ARQ có dùng SN/RN


Phương pháp điều khiển luồng Go back – N

7
a. Nguyên tắc
Phía phát sẽ được phát nhiềư hơn một khung thông tin trước khi nhận được
báo nhận từ phía thu. Số khung cực đaị mà phía phát có thể phát là W, được gọi là kích
thước cửa sổ. Với cơ chế hoạt động này Go-back-N được gọi là cơ chế cửa sổ trượt(sliding
window).
Mỗi khi phát xong một khung thông tin, phía phát giảm kích thước của sổ đi 1, khi
kích thước cửa sổ bằng 0, phía phát sẽ không được phát thêm khung thông tin nào nữa.
Điều này đảm bảo phía thu kịp xử lý.
Mỗi khi phía thu nhận được một khung thông tin đúng và xử lý xong sẽ gửi lại một
báo nhận ACK cho phía phát. Khi đó phía phát sẽ tăng kích thước cửa sổ W lên 1.Như
vậy tổng số khung mà phía thu phải xử lý tại một thời điểm vẫn không vượt quá W.
Để phân biệt các khung, cần đánh số thứ tự. Nếu dùng k bit để đánh số thì tổng
số khung được đánh số sẽ là 2k (từ 0 đến 2k – 1) và do đó, kích thước cửa sổ tối đa WMax
= 2K
ACK có thể được đính vào gói phát theo chiều ngược (piggy back).
b. Hoạt động
Khi sử dụng 3 bit để đánh số thứ tự cho các khung thông tin. Lúc này kích thước cửa
sổ cực đại sẽ là 7. Ban đầu cả phía phát và phía thu đều có kích thước cửa sổ là 7 (từ F0,
…, F7).
Sau khi phía phát đã phát được 3 khung (F0, F1, F2) và chưa nhận ACK, phía phát
giảm kích thước cửa sổ xuống 4 (gồm các khung F3,…, F6).
Phía thu sau khi đã nhận đúng và xử lý xong 3 khung F0, F1, F2 thì sẽ gửi ACK3 lại
cho phía phát. Phía thu đồng thời tăng kích thước cửa sổ lên 7 (gồm từ F3,…, F1). Phía
phát sau khi đã nhận được ACK3 sẽ tăng kích thước cửa sổ lên 3 (W =7, gồm F3,…, F1).

8
Khi phía phát thực hiện phát các khung từ F3 đến F6, sau khi phát phía phát sẽ giảm
cửa sổ đi 4, khung chỉ còn từ F7,F0,F1. Phía thu gửi lại ACK4 cho bên phát. Vì bên phát
đã phát đi khung F4,F5,F6 nên khi nhận được ACK4 từ phía thu chỉ còn phát được tối đa
4 khung bắt đầu từ F7.

Hình 2.4: Nguyên tắc hoạt động của cơ chế cứa sổ trượt
Trong trường hợp lý tưởng (không có lỗi xảy ra) thì cơ chế cửa sổ trượt
đảm bảo số khung thông tin từ phía phát đến phía thu không vượt quá kích thước cửa sổ.
Trong trường hợp này, không có sự phân biệt giữa Go- back-N và selective repeat.
Khi có lỗi xảy ra, việc truyền lại các khung lỗi của cơ chế cửa sổ trượt được thực
hiện theo hai cách khác nhau: Go-back-N hoặc selective repeat.

9
Điều khiển luồng kết hợp ARQ – Selective repeat

a. Nguyên tắc hoạt động


Kỹ thuật Go-back-N nâng cao hiệu suất so với Stop- and- wait, tuy nhiên hiệu suất
kệnh truyền vẫn chưa được tối đa hóa do bên phát vẫn có thể phải phát lại gói đa được
nhận đúng trong trường hợp gói trước đó bị lỗi. Còn ở Selective repeat cũng sử dụng kỹ
thuật cửa sổ trượt. Nếu không có lỗi xảy ra, quá trình diễn ra giống với Go-back-N. Nếu
có lỗi xảy ra, chỉ những gói lỗi được phát lại. Cơ chế này giúp tăng hiệu quả sử dụng
đường truyền so với cơ chế Go-back-N.
Hình miêu tả hoạt động của cơ chế Selective repaet:

Hình 2.6: Nguyên tắc hoạt động Selective repeat


Do chỉ những gói lỗi được phát lại, trình tự nhận được các gói không đúng
như phía phát cần có bộ đệm giúp sắp xếp lại gói. Phía phát phải thực hiện báo nhận cho
tất cả các khung thông tin mà nó nhận đúng. Các khung thông tin không được báo nhận
trong khoảng thời gian timeout tương ứng sẽ được coi là bị mất.

Điều khiển luồng theo phương pháp cửa sổ (Window Flow Control)

Cơ chế điều khiển luồng và chống tắc nghẽn dựa trên phương pháp cửa sổ được
thực hiện bởi việc giới hạn số lượng gói tin được truyền ở phía phát nhằm đảm bảo thông

10
tin này không vượt quá khả năng xử lý của phía thu.
Theo cơ chế này, phía phát sẽ không thực hiện phát tin chừng nào phía thu còn
chưa xử lý xong gói tin (hoặc một số gói tin) trước đó. Khi phía thu xử lý xong thông tin
do phía phát gửi đến thì nó sẽ báo cho phía phát biết và lúc này, phía phát sẽ tiếp tục gửi
các gói tin tiếp theo. Cơ chế này đảm bảo việc truyền tin không bao giờ vượt quá khả
năng xử lý của phía thu.
• Phương pháp điều khiển luồng theo cửa sổ trượt là phương pháp được sử dụng
phổ biến nhất:
• Phương pháp điều khiển luồng theo cơ chế End-to-end: là điều khiển luồng giữa
điểm phát và điểm thu trong mạng.
• Phương pháp điều khiển luồng theo cơ chế Hop-by-hop: Là điều khiển luồng giữa
hai nút mạng liên tiếp.
❖ Cửa sổ End-to-End
Phương pháp điều khiển luồng theo cửa sổ dựa trên cơ sở phương pháp cửa sổ trượt
ARQ làm việc tại lớp liên kết dữ liệu. Các khung thông tin từ phát sang thu và khung
báo nhận, báo lỗi truyền từ thu sang phát được đánh số thứ tự để phân biệt, kích thước
cửa sổ W < 2k với k là số bit dùng đánh số phân biệt các khung.
❖ Cửa sổ Hop-by-Hop
Việc điều khiển luồng được thực hiện giữa hai nút mạng kế tiếp trên đường truyền.
Mỗi nút mạng có các cửa sổ độc lập dùng cho các kênh làm việc khác nhau (kênh ảo).
Mục đích chính của điều khiển luồng hop-by-hop:
Đảm bảo bộ đệm của nút đích không bị quá tải bởi quá nhiều gói tin đến. Điều
này được thực hiện với việc nút đích giảm tốc độ gửi ACK về cho nút nguồn. Trong
trường hợp tổng quát, nút đích có bộ đệm với dung lượng W gói cho mỗi liên kết và nó
sẽ gửi ACK cho nút nguồn nếu trong bộ đệm còn chỗ trống. Nút đích sẽ xóa gói tin trong
bộ đệm nếu nó đã được truyền thành công đến nút kế tiếp trên đường truyền hay đã đi ra
khỏi mạng.

11
Giả sử có ba nút liên tiếp trên mạng là (i-1, i, i+1). Giả sử bộ đệm của i đã bị đầy
với W gói tin. Nút i sẽ gửi ACK cho nút i-1 nếu nó đã gửi thành công một gói tin cho
nút i+1 (lúc đó bộ đệm của nút i mới được giải phóng và có chỗ cho một gói tin). Nút i
thực hiện được điều này nếu nó nhận được một ACK từ nút i+1.
Trong trường hợp có tắc nghẽn xảy ra tại một nút nào đó, bộ đệm của nút này bị
đầy bởi W gói tin và theo hệ quả, bộ đệm của các nút phía trước nút đó cũng sẽ dần dần
bị đầy. Hiện tượng này được gọi là backpressure(áp lực ngược).

Hình 2.9: Cơ chế backpressure trong điều khiển luồng hop- by - hop
❖ Phương thức Isarithmic
- Phương thức này cũng được coi là một biến thể của cơ chế điều khiển luồng theo
cửa sổ với một cửa sổ duy nhất được dùng cho toàn mạng. Việc điều khiển luồng được
thực hiện bởi việc giới hạn số lượng gói tin đi vào mạng thông qua việc cấp phát một số
lượng hạn chế thẻ bài. Mỗi một gói tin muốn đi vào mạng cần phải nhận được một thẻ
bài ở nút mà gói tin đó vào và trả lại thẻ bài ở nút mà gói tin đó ra khỏi mạng. Như vậy,
tổng số gói tin tồn tại đồng thời trong mạng luôn nhỏ hơn hoặc bằng tổng số lượng thẻ
bài, và việc điều khiển luồng được thực hiện.
- Những hạn chế Phương thức Isarithmic:

12
+ Nó không đảm bảo tính công bằng cho tất cả người dùng vì không có những cơ
chế nhất định để quản lý vị phân phối thẻ bài.
+ Các thẻ bài có thể bị mất vì những lý do nhất định mà hiện tại chưa có cơ chế
để quản lý số lượng thẻ bài tồn tại trong mạng.
+ Vì những lý do đó, phương thức Isarithmic ít được sử dụng trong thực tế.
➢ Kết luận
Vấn đề được quan tâm nhiều nhất trong hoạt động viễn thông là hiệu suất khai thác,
hiệu quả kinh tế đạt được, sự công bằng trong sử dụng và ưu thế phát triển. Ở đây với
điều khiển luồng theo phương pháp phát lại thì Go-back-N là phương pháp được sử dụng
nhiều nhất vì nó có cơ chế hoạt động đơn giản hơn, mặc dù hiệu suất của nó chưa phải
là cao nhất. Còn với điều khiển luồng theo phương pháp của sổ trượt thì hop-by-hop là
phương pháp đảm bảo được tính công bằng nhất, đó là khi kích thước cửa sổ của các kết
nối thông tin xấp xỉ bằng nhau do đó tốc độ thông tin đến là không chênh lệch, việc sử
dụng tài nguyên là như nhau.

13
II. Kiểm soát lỗi, phương pháp phát hiện và sửa lỗi
Các mạng phải có khả năng cho phép truyền dữ liệu từ một thiết bị đến thiết
bị khác với độ chính xác cao. Một hệ thống không thể đảm bảo rằng dữ liệu nhận
được bởi một thiết bị là hoàn toàn giống với dữ liệu được truyền phát từ một thiết
bị khác là một hệ thống vô dụng. Tại bất kỳ thời điểm nào dữ liệu được truyền đi
từ nguồn tới đích, chúng có thể trở nên bị sai lạc trên đường truyền. Trong thực tế,
người ta thấy rằng chỉ một phần nào đó của thông điệp bị thay đổi trên đường
truyền. Có nhiều yếu tố, bao gồm nhiều đường truyền có thể thay đổi hoặc làm
mất một hoặc một số bit của một đơn vị dữ liệu. Các hệ thống đáng tin cậy phải
có cơ chế cho phép dò tìm và sửa những lỗi đó.
Dữ liệu có thể bị sai lệch trong quá trình truyền. Đối với một truyền thông đáng tin
cậy, các lỗi phải được dò tìm và sửa chữa.
Dò tìm và sửa lỗi được thực hiện ở tầng liên kết dữ liệu hoặc tầng giao vận của mô
hình OSI.
Các kiểu lỗi: lỗi bit đơn, lỗi hàng loạt – bursterror
1. Phương pháp phát hiện lỗi trong truyền số liệu
Phương pháp dò dùng dư thừa – Redundancy
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 nhiệ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

14
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.

Mô hình hoạt động của kỹ thuật dư thừa


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ỏ.
Có 4 kỹ thuật kiểm tra kiểu dư thừa được sử dụng trong truyền số liệu; kiểm
tra VRC (Vertical redundancy Check) hay còn được gọi là kiểm tra chẵn lẻ, kỹ
thuật LRC (Longitudinal Redundancy Check), kỹ thuật CRC (Cyclical

15
Redundancy Check) và CheckSum. Ba kỹ thuật đầu tiên VRC, LRC và CRC
thường được thực hiện trong tầng vật lý cho mục đích sử dụng trong tầng liên kết
dữ liệu, còn kỹ thuật thứ 4- Checksum được sử dụng chính thức trong các tầng
phía trên

VRC
Cơ chế phổ biến và chi phí ít nhất cho dò tìm lỗi là kỹ thuật VRC, thường
được gọi là kiểm tra chẵn lẻ. Trong kỹ thuật này, một bit dư thừa được gọi là bit
chẵn lẻ được ghép vào mọi đơn vị dữ liệu sao cho tổng số các bit 1 trong đơn vị
dữ liệu đó (bao gồm cả bit chẵn lẻ) trở thành chẵn.
Trong kỹ thuật VRC, một bit chẵn lẻ được bổ sung vào tất cả các đơn vị dữ
liệu sao cho tổng số bit 1 trong đơn vị dữ liệu trở thành một số chẵn.

Khái niệm về kỹ thuật kiểm tra chẵn lẻ VRC

16
Chú ý rằng để cho đơn giản, chúng ta chỉ bản luận về kiểm tra chẵn lẻ ở đó
số các bít 1 sẽ là một số chẵn. Trong một vài hệ thống có thể sử dụng kiểm tra tính
lẻ chẵn (odd parity). Nguyên tắc thì giống nhau nhưng việc tính toán thì khác nhau.
LRC
Trong kỹ thuật LRC, một khối các bit được tổ chức trong một bảng (các hàng và
các cột). Ví dụ, thay vì gửi một khối 32 bit, chúng ta tổ chức chúng thành trong một bảng
tạo bởi 4 hàng và 8 cột,. Sau đó tính toán bit chẵn lẻ cho từng cột và tạo ra một hàng mới
8 bit, các hàng đó là các bit kiểm tra tính chẵn lẻ cho toàn khối. Chú ý là bit chẵn lẻ đầu
tiên trong hàng thứ 5 được tính dựa vào tất cả các bit đầu
tiên. Bit chẵn lẻ thứ 2 được tính toán dựa trên trên tất cả các bit thứ 2, vân
vân…
Sau đó có thể đính kèm 8 bit chẵn lẻ vào dữ liệu gốc và gửi chúng tới bên nhận.

Trong kỹ thuật kiểm tra LRC, một khối các bit được chia thành các hàng và một
hàngcác bit dư thừa được thêm vào toàn khối.
CRC

17
Kỹ thuật thứ 3 và là kỹ thuật mạn nhất trong các kỹ thuật kiểm tra dư thừa
đó là kỹ thuật kiểm tra vòng – CRC. Không giống như kỹ thuật VRC và LRC 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, chúng ta bắt đầu một cách tổng quan và sau đó đi sâu
vào chi tiết hơn.

Bộ tạo và bộ kiểm tra CRC


• 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 trước có chiều dài n+1 bit

18
• 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 chúng ta, 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

19
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 chúng ta đ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.
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

20
không dòng các bit nhận được bị bỏ đi và dữ liệu được gửi lại. Chúng ta 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.
CHECKSUM
Phương pháp dò tìm lỗi được sử dụng bởi các giao thức ở tầng cao hơn được gọi là
checksum. Giống như VRC, LRC và CRC, checksum dựa trên khái niệm về dư thừa-
redundancy
Bộ sinh checksum
Ở bên gửi, bộ sinh checksum chia nhỏ đơn vị dữ liệu thành các phân đoạn bằng
nhau n bit (thường là 16). Các phân đoạn này được cộng vào với nhau sử dụng phép tính
phần bù số học sao cho tổng số cùng là n bit. Tổng đó sau đó được lấy phần bù và được
ghép vào cuối đơn vị dữ liệu gốc với vai trò là các bit dư thừa và được gọi là trường
checksum. Đơn vị dữ liệu được mở rộng được truyền qua mạng. Vì thế nếu tổng của đơn
vị dữ liệu là T thì checksum sẽ là –T.
Bên gửi sẽ thực hiện các bước sau:
• Đơn vị dữ liệu được chia thành k phần, mỗi phần n bit
• Tất cả các phần được cộng với nhau sử dụng phép lấy phần bù để lấy được
tổng.
• Tổng được lấy phần bù và trở thành checksum.
• Checksum được gửi đi cùng với dữ liệu
Đơn vị dữ liệu và Checksum
Bên nhận thực hiện các bước sau:
• Đơn vị dữ liệu được chia thành k phần, mỗi phần n bit
• Tất cả các phần được cộng với nhau sử dụng phép lấy phần bù để lấy được
tổng.
• Tổng đó được lấy phần bù

21
• Nếu kết quả bằng 0, dữ liệu được chấp nhận, bằng không chúng bị loại bỏ

2. Sửa lỗi
Các cơ chế mà chúng ta đã biết đến giờ chỉ cho phép dò tìm lỗi nhưng không
phải là cơ chế sửa lỗi. Sửa lỗi có thể được xử lý bằng 2 cách. Trong cách thứ nhất,
khi một lỗi được phát hiện, bên nhận có thể để người gửi gửi lại toàn bộ đơn vị dữ
liệu. Trong cách thứ 2, bên nhận có thể sử dụng mã sửa lỗi để sửa một số lỗi nhất
định một cách tự động.
Theo lý thuyết, có thể sửa bất kỳ lỗi mã nhị phân nào một cách tự động. Tuy
nhiên các mã sửa lỗi phức tạp hơn nhiều so với các mà dò tìm lỗi và đòi hỏi nhiều
bit dư thừa hơn. SỐ các bit cần để sửa một lỗi đa bit hoặc lỗi hàng loạt bi quá lớn
trong phần lớn các trường hợp do đó nó trở nên không hiệu quả. Vì lý do này, phần
lớn các phương pháp sửa lỗi chỉ giới hạn sửa lỗi cho một, hai hoặc ba bit lỗi.
a. Sửa lỗi bit đơn
Khái niệm dưới cách tiếp cận sửa lỗi có thể được hiểu một cách dễ dàng bằng
việc kiểm tra trường hợp đơn giản nhất: Các lỗi bit đơn.
Như chúng ta đã thấy ở phần trước, các lỗi bit đơn có thể được dò tìm bằng
việc bổ sung một bit (chẵn lẻ) dư thừa và đơn vị dữ liệu (VRC). Một bit đơn bổ

22
sung có thể dò tìm các lỗi bit đơn theo bất kỳ trình tự nào của các bit bởi vì nó chỉ
phải phân biệt hai điều kiện: lỗi hoặc không lỗi. Một bit có 2 trạng thái (0 và 1).
Hai trạng thái này là vừa đủ cho mức độ dò tìm này.
Nhưng nếu chúng ta muốn sửa lỗi cũng như dò tìm các lỗi bit đơn thì sao?
Hai trạng thái là đủ để dò tìm lỗi nhưng không đủ để sửa lỗi đó. Một lỗi xảy ra
khi người nhận đọc bit 1 là bit 0 và bit 0 là bit 1. Để sửa lỗi đó, bên nhận đơn
giản đảo ngược giá trị bị sửa đổi. Tuy nhiên đề làm điều đó, cần phải biết bit nào
là bit lỗi. Do đó nhiệm vụ của sửa lỗi là định vị bit không hợp lệ hoặc các bit
không hợp lệ.
Ví dụ, để sửa lỗi bit đơn trong một ký tự ASCII, mã sửa lỗi phải xác định
bit nào trong 7 bit đó đã thay đổi. Trong trường hợp này, chúng ta phải phân
biệt giữa 8 trạng thái khác nhau; không có lỗi, lỗi ở vị trí 1, lỗi ở vị trí 2…đến
lỗi ở vị trí 7. Để làm được điều này đòi hỏi phải có đủ các bit dư thừa để thể
hiện tất cả 8 trạng thái.
Thoáng qua, chúng ta thấy nó giống như mã 3 bit dư có thể là vừa đủ bởi vì
3 bit có thể thể hiện 8 trạng thái (000 tới 111) và do đó có thể xác định vị trí của 8
khả năng khác nhau. Nhưng nếu một lỗi xuất hiện ở chính các bit dư thừa thì sao?
7 bit của dữ liệu (ký tự ASCII) cộng với 3 bit dư thừa bằng 10 bit. Tuy nhiên 3 bit
chỉ có thể xác định 8 khả năng khác nhau. Các bit bổ sung là cần thiết để xác định
toàn bộ các vị trí gây lỗi có thể xảy ra.
Các bit dư thừa – redundancy bits
Để tính toán số các bit dư thừa r cần để sửa một số các bít dữ liệu (m bit) được cho,
chúng ta phải tìm một mối quan hệ giữa m và r. Hình 9.16 thể hiện m bit của dữ liệu với
r bit dư thừa được thêm vào. Chiều dài của mã kết quả sẽ là m+r.

23
Dữ liệu và các bit dư thừa
Nếu tổng số các bit trong một đơn vị khả truyền là m+r, thì r phải có thể xác định
ít nhất m+r+1 các trạng thái khác nhau. Tất nhiên một trạng thái có nghĩa không lỗi và
m+r trạng thái xác định vị trí của lỗi trong từng m+r vị trí.

Vì vậy, m+r+1 trạng thái phải được xác định bằng r bit; và r bit có thể chỉ định 2r

trạng thái khác nhau. Do đó, 2r phải bằng hoặc lớn hơn m+r+1: 2r>=m+r+1
Giá trị của r có thể được xác định bằng việc đặt giá trị của m (chiều dài nguyên bản
của đơn vị dữ liệu được truyền). Ví dụ, nếu giá trị của m bằng 7 (7 bit – mã ASCII), giá

trị r nhỏ nhất có thể thỏa mãn phương trình này là 4: 24>=7+4+1
Số các bit dữ liệu (m) Số các bit dư thừa (r) Tổng số bit (m+r)
1 2 3
2 3 5
3 3 6
4 3 7
5 4 9
6 4 10
7 4 11
Mã Hamming
Từ trước tới nay chúng ta đã kiểm tra số các bit cần thiết để có thể kiểm soát toàn
bộ các trạng thái lỗi bit đơn có thể xảy ra trong khi truyền. Nhưng làm cách nào chúng

24
ta có thể xử lý các bit này để khám phá ra trạng thái nào đã xảy ra?. Một kỹ thuật được
phát triển bởi R.W Hamming cung cấp một giải pháp thực tế.
Định vị trí các bit dư thừa – Positioning Redundancy Bits
Mã Hamming có thể được áp dụng cho các đơn vị dữ liệu có chiều dài bất kỳ và sử
dụng mỗi quan hệ giữa dữ liệu và bit dư thừa được bàn luận ở phần trên. Ví dụ, một mã
ASCII 7 bit cần phải có 4 bit dư thừa mà có thể được thêm vào cuối đơn vị dữ liệu hoặc
đặt rải rác với các bit dữ liệu gốc. Trong hình 9.17, những bit này được đặt ở các vị trí
1,2,4 và 8 (các vị trí trong chuỗi tuần tự 11 bit là bình phương của 2). Để thấy rõ trong
các ví dụ dưới đây, chúng ta cần xem các bit r1, r2, r4 và r8

Các vị trí của các bit dư thừa trong mã Hamming

25
Tính toán các bit dư thừa
Trong mã Hamming, mỗi r bit là bit VRC cho một tổ hợp các bit dữ liệu; r1 là bit
VRC cho một tổ hợp các bit dữ liệu, r là bit VRC cho tổ hợp các bit dữ liệu khác, vân
vân…Các tổ hợp được sử dụng để tích toán từng giá trị r cho chuỗi 7 bit dữ liệu như sau:
r1: Các bit 1,3, 5, 7, 9, 11
r2: các bit 2, 3, 6,7, 10, 11

26
r4: các bit 4, 5, 6, 7
r8: các bit 8, 9, 10, 11
Mỗi bit dữ liệu này có thể bao gồm một hoặc nhiều tính toàn VRC. Trong các chuỗi
trên, từng bit dữ liệu gốc được bao gồm trong ít nhất 2 tập hợp, trong khi r bit chỉ được
bao gộp một lần.
Để xem mẫu theo giải pháp này, hãy xem biểu diễn nhị phân của từng vị trí bit. Bit
r1 được tính toàn bằng cách sử dụng tất cả các vị trí mà biểu diễn nhị phân của nó bao
gồm một bit 1 ở vị trí phải nhất. Bit r2 được tính toán bằng cách sử dụng tất cả các vị trí
bit với một bit 1 ở vị trí thứ 2….
Tính toán các giá trị r
Trong bước đầu tiên, chúng ta thay thế từng bit của ký tự gốc trong các vị trí thích
hợp của nó bằng đơn vị dữ liệu có chiều dài 11 bit. Trong các bước tiếp sau, chúng ta
tính toán các giá trị chẵn lẻ đối với nhiều tổ hợp bit. Giá trị chẵn lẻ cho từng tổ hợp đó
là giá trị tương ứng với r bit. Ví dụ, giá trị của r1 được tính toán để cung cấp tính chẵn
lẻ-chẵn đối với tổ hợp các bit 3, 5, 7, 9 và 11. Giá trị của r2 được tính toán để cung cấp
tính chẵn lẻ-chẵn với các bit 3, 6, 7, 10 và 11 vân vân… Mã 11 bit cuối cùng được gửi
qua đường truyền dẫn.

27
Giờ chúng ta hãy hình dung rằng theo thời gian khi dữ liệu được truyền tới bên
nhận, số 7 bit đã bị thay đổi từ 1 thành 0
Bên nhận lấy dữ liệu từ đường truyền và tính toán lại 4 VRC mới sử dụng cùng tập
bit đã được sử dụng bởi bên gửi cộng với bit chẵn lẻ tương ứng (r) đối với từng tập hợp
(xem hình 9.21). Sau đó nó lắp ghép các giá trị chẵn lẻ đó vào một số nhị phân theo thứ
tự của r (r8, r4 ,r2 ,r1). Trong ví dụ của chúng ta, bước nay cho chúng ta số nhị phân
0111 (bằng 7 trong hệ mười), là vị trí chính xác của bit lỗi.
Một khi bit lỗi đã được xác định, bên nhận có thể đảo ngược giá trị của nó và thực
hiện sửa lỗi đó.
b. Sửa lỗi hàng loạt bit

Mã Hamming có thể được thiết kế để sửa các lỗi hàng loạt bit có chiều dài cụ thể.
Số các bit dư thừa cần thiết để tạo ra những sửa lỗi này là lớn hơn rất nhiều so với sửa
lỗi bit đơn. Ví dụ, để sửa lỗi bit đôi, chúng ta cần phải xem xem hai bit đó có thể là tổ
hợp của bất kỳ 2 bit bất kỳ trong toàn bộ chuỗi bit hay không. Sửa lỗi 3 bit của nghĩa là
bất kỳ 3 bit nào trong toàn bộ chuỗi bit, vân vân…Vì thế, giải pháp đơn giản được sử
dụng mã Hamming để sửa các lỗi bit đơn phải được thiết kế lại để có thể áp dụng cho
sửa lỗi đa bit.

28
KẾT LUẬN CHUNG

Trên đây là trình bày của nhóm em về các phương pháp cách thức điều
khiển luồng, phát hiện và sửa lỗi. Về điều khiển luồng có nhiều bài toán được đặt
ra, các cách thức sử dụng các giao thức, thuật toán để tối ưu hóa việc sử dụng tài
nguyên để đạt được hiệu suất mạng thực sự. Trong điều khiển luồng hai phương
pháp Go-back-N và Selective repeat là hai phương pháp được sử dụng rộng rãi do
khả năng đáp ứng và hiệu suất thu được cao. Còn trong phương pháp phát hiện và
sửa lỗi thì mã hamming đóng góp rất lớn, tuy nhiên nó còn ít phù hợp khi tích
hợp các dịch vụ vào một mạng thống nhất, khi yêu cầu của người dùng về chất
lượng dịch vụ ngày càng cao. Tuy nhiên điều khiển luồng là vấn đề phức tạp khi
mà tài nguyên mạng ngày càng hạn chế, yêu cầu sử dụng mạng ngày càng nhiều
nên bài toán điều khiển luồng đặt ra ngày càng gay gắt. Do đó những tìm hiểu của
chúng em vẫn chưa đi sâu vào để mô phỏng được sắc nét các khía cạnh của mọi
vấn đề, không tránh khỏi những thiếu sót. Rất mong cô bổ xung hoàn chỉnh giúp
chúng em hiểu thêm về vấn đề nghiên cứu.
Chúng em xin chân thành cảm ơn thầy giáo đã hướng dẫn chúng em hoàn
thành chuyên đề này.

29
TÀI LIỆU THAM KHẢO
[PDF]Kỹ Thuật Truyền Số Liệu - Đh Sư Phạm Kỹ Thuật Hồ Chí Minh - Nguyễn
Việt Hùng (cuuduongthancong.com)
Kỹ Thuật Truyền Số Liệu (c10mt.com)
Ky thuat-truyen-so-lieu (slideshare.net)
Kỹ thuật truyền số liệu (tnu.edu.vn)

30

You might also like