Vấn đề nghiên cứu:
nguyên tắc tổ chức lớp liên kết dữ liệu với các 
thuật toán để đạt được độ tin cậy và hiệu quả truyền 
tin giữa 2 máy trạm liền kề. 
giao thức, phương pháp dò tìm và xử lý lỗi của lớp 
này.
                
              
                                            
                                
            
                       
            
                 64 trang
64 trang | 
Chia sẻ: lylyngoc | Lượt xem: 2432 | Lượt tải: 2 
              
            Bạn đang xem trước 20 trang tài liệu Chương 4 – Lớp liên kết dữ liệu, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương 4 – lớp Liên Kết Dữ Liệu
Khoa Khoa Học Máy Tính
Trường Cao Đẳng Công Nghệ Thông Tin 
Hữu Nghị Việt Hàn
Chương 4. Lớp liên kết dữ liệu
 Vấn đề nghiên cứu:
 nguyên tắc tổ chức lớp liên kết dữ liệu với các 
thuật toán để đạt được độ tin cậy và hiệu quả truyền 
tin giữa 2 máy trạm liền kề. 
 giao thức, phương pháp dò tìm và xử lý lỗi của lớp 
này.
4.1 Vai trò, chức năng
 Lớp liên kết dữ liệu có các chức năng chính sau:
 Cung cấp dịch vụ cho lớp Mạng
 Khắc phục lỗi đường truyền
 Điều khiển luồng dữ liệu để tránh trường hợp tràn dữ liệu 
 Để thực hiện được các nhiệm vụ này, lớp liên kết dữ liệu 
nhận các gói dữ liệu từ Lớp Mạng và định dạng thành các 
khung dữ liệu để truyền đi. Mỗi khung gồm phần mào đầu, 
tải tin và phần đuôi khung
4.1.1 Cung cấp dịch vụ cho lớp mạng
 Lớp liên kết dữ liệu có khả năng cung cấp nhiều 
dịch vụ khác nhau cho lớp mạng. Các dịch vụ này 
khác nhau trong các hệ thống khác nhau. Có 3 dịch 
vụ cơ bản như sau:
 Dịch vụ truyền tin không kết nối - không phúc đáp.
 Dịch vụ truyền tin không kết nối - có phúc đáp.
 Dịch vụ truyền tin có kết nối – có phúc đáp 
4.1.1 Cung cấp dịch vụ cho lớp mạng
 Dịch vụ truyền tin không kết nối - không phúc đáp 
 gửi các khung dữ liệu độc lập không cần xác nhận
 không cần thiết lập kênh logic trước khi truyền dữ
liệu và giải phóng kênh truyền sau khi kết thúc.
 Nếu khung dữ liệu nào bị mất do tạp âm đường 
truyền thì lớp liên kết dữ liệu cũng không cần dò tìm 
và khôi phục lại. 
  Loại dịch vụ này sử dụng ở môi trường truyền 
dẫn có tỷ lệ lỗi thấp hoặc đối với các dữ liệu thời 
gian thực như truyền thanh, yêu cầu đáp ứng về thời 
gian nhiều hơn là chất lượng dữ liệu.
4.1.1 Cung cấp dịch vụ cho lớp mạng
 Dịch vụ truyền tin không kết nối - có phúc đáp
 có độ tin cậy cao hơn. 
 không sử dụng kênh logic để truyền dữ liệu nhưng 
mỗi khung dữ liệu truyền đi sẽ được xác nhậnđầu 
phát có thể biết được khung dữ liệu đã đến đúng 
đích nhận hay chưa. Nếu khung dữ liệu chưa đến 
trong một khoảng thời gian nhất định thì nó sẽ được 
gửi lại. 
 Dịch vụ này thường được dùng trong các kênh dữ
liệu có độ tin cậy thấp như các hệ thống không dây. 
4.1.1 Cung cấp dịch vụ cho lớp mạng
 dịch vụ truyền tin có kết nối- có phúc đáp
 Phức tạp nhất
 Thiết lập kết nối trước khi truyền dữ liệu. 
 Mỗi khung dữ liệu trên kênh truyền được gán số thứ
tự và lớp liên kết dữ liệu đảm bảo rằng khung dữ
liệu này đã được nhận ở đầu thu.
 Ngoài ra, lớp liên kết dữ liệu còn đảm bảo rằng 
khung dữ liệu này chỉ nhận một lần và theo đúng 
thứ tự.
4.1.2 Tạo khung dữ liệu
 Khung dữ liệu
 Lớp liên kết dữ liệu làm việc dựa vào khả năng 
chuyển tải của lớp Vật lý. 
 Các bít thông tin truyền đi hoặc nhận về đều được 
nhóm lại thành những đơn vị logic gọi là khung 
(frame). 
 Trong khung dữ liệu, ngoài các bit thông tin, còn 
chứa các trường địa chỉ, trường điều khiển, trường 
nhận biết, trường kiểm soát lỗi 
4.1.2 Tạo khung dữ liệu
 Các phương pháp tạo khung dữ liệu 
 Quá trình truyền thông tại lớp LKDL
 tách luồng bit thành các khung dữ liệu 
 tính toán giá trị kiểm tra tổng (checksum) của mỗi 
khung
 Khi khung dữ liệu đến đích nhận, giá trị
checksum này sẽ được tính toán lại và so sánh với 
giá trị checksum nhận được của đầu phát để xác 
định khung dữ liệu này có bị lỗi trong quá trình 
truyền hay không
4.1.2 Tạo khung dữ liệu
 Việc tách luồng bit thành các khung dữ liệu 
được thực hiện bởi một trong số các phương 
pháp sau:
 Đếm số ký tự.
 Dùng cờ hiệu (flags) kết hợp với byte nhồi.
 Dùng cờ hiệu (flags) kết hợp với bit nhồi.
 Dựa vào kỹ thuật mã hóa của lớp vật lý.
4.1.2 Tạo khung dữ liệu
 Phương pháp đếm số ký tự sử dụng một trường trong phần 
mào đầu (header) để xác định số ký tự trong một khung. Khi 
lớp liên kết dữ liệu ở đầu nhận xác định được thông tin này 
thì nó sẽ biết được có bao nhiêu ký tự trong một khung và vị
trí cuối cùng của khung. 
 Nhược điểm: giá trị của trường đếm số ký tự có thể sai lệch 
do lỗi đường truyền
4.1.2 Tạo khung dữ liệu
 Phương pháp thứ 2, phương pháp sử dụng cờ hiệu 
kết hợp với byte nhồi, byte cờ hiệu (flag byte) để
phân biệt điểm bắt đầu và kết thúc một khung dữ
liệu 
 byte cờ hiệu giúp xác định vị trí kết thúc của khung 
dữ liệu hiện tại trong trường hợp mất đồng bộ.
 xác định vị trí kết thúc một khung dữ liệu và bắt đầu 
một khung mới bằng hai byte cờ hiệu liên tiếp
 kỹ thuật nhồi byte (byte stuffing) hoặc nhồi ký tự
(character stuffing). Hiện tượng trùng lắp byte cờ
hiệu  giải quyết bằng cờ byte escape (ESC) được 
chèn trước cờ hiệu giả. 
4.1.2 Tạo khung dữ liệu
 Cơ chế giải quyết cờ “giả” bằng byte stuffing
 Phương phát này được dùng trong giao thức PPP Nhược điểm 
là sử dụng các từ mã cố định 8 bit
 Nhược điểm: gắn từ mã có giá trị bằng 8 bit.
 Trên thực tế, không phải từ mã nào cũng 8 bit
4.1.2 Tạo khung dữ liệu
 Phương pháp dùng cờ hiệu bắt đầu và kết thúc kết hợp bit 
nhồi: Cờ hiệu là 01111110
 Nếu đầu phát có dữ liệu 111111  1111101
 Đầu thu nhận được dữ liệu 1111101  111111
4.1.2 Tạo khung dữ liệu
 Phương pháp thứ tư, phương tách khung dựa vào 
kỹ thuật mã hóa của lớp vật lý chỉ được áp dụng 
đối với các mạng sử dụng thêm các bit khi mã hóa 
dữ liệu. 
 Ví dụ, một số mạng LAN mã hóa 1 bit dữ liệu bằng 
2 bit vật lý, thông thường bit 1 được đại diện bằng 
cặp trạng thái (cặp bit) là cao - thấp và bit 0 được 
đại diện bằng cặp trạng thái là thấp – cao. Như vậy, 
người ta dùng cặp trạng thái cao – cao và thấp –
thấp không dùng cho việc biễu diển dữ liệu để phân 
biệt ranh giới giữa các khung dữ liệu. 
4.1.2 Tạo khung dữ liệu
 Tóm lại, đối với việc tạo khung dữ liệu ở nhiều 
giao thức người ta sử dụng kết hợp phương pháp 
đếm số ký tự kết hợp với các phương pháp còn lại 
nhằm đảm bảo độ an toàn cho dữ liệu. 
 Tại đầu thu, người ta dùng giá trị của trường đếm 
số ký tự để xác định vị trí kết thúc của khung dữ
liệu, nếu cờ hiệu xuất hiện đúng vị trí và giá trị
kiểm tra tổng (checksum) đúng thì khung dữ liệu 
được chấp nhận. Ngược lại, hệ thống sẽ tìm kiếm vị
trí bắt đầu của khung tiếp theo dựa vào cờ hiệu 
4.1.3 Kiểm soát lỗi
 Mục đích: tất cả các khung dữ liệu đã truyền đến được lớp 
mạng của đầu thu dữ liệu theo đúng trật tự 
 Phương pháp: Sử dụng các thông điệp từ đầu thu để báo cho 
đầu phát thông điệp đã được gửi thành công hay chưa
 Thông báo Possitive Acknowledgement – ACK: Thông điệp 
gửi thành công
 Thông báo Negative Acknowledgement – NAK: Thông điệp 
gửi không thành công
 Vấn đề: 
 chờ ACK/NAK từ phía đầu thu quá lâu, dẫn đến quá hạn 
(timed – out)  phương thức tự động truyền lặp ARQ.
 nhận/gửi một gói tin nhiều lần  số thứ tự của khung DL
 Kết hợp bộ định thời nơi phát cho mỗi gói tin và đánh số
thứ tự cho mỗi gói tin.
4.1.4 Điều khiển luồng
 Mục đích: Giải quyết tình trạng mất đồng bộ trong truyền 
thông giữa phía đầu phát và đầu thu.
 Phương pháp xử lý:
 điều khiển luồng sử dụng hồi tiếp (feedback-based flow 
control), đầu thu sẽ gửi thông tin phản hồi về cho đầu phát để
báo cho đầu phát biết có nên tiếp tục phát dữ liệu nữa hay 
không hoặc nó sẽ báo cho đầu phát biết rằng quá trình nhận 
dữ liệu đang diễn như thế nào  Phương pháp phổ biến: 
trong giao thức chứa các các luật được định nghĩa sẵn qui 
định thời điểm mà đầu phát dữ liệu sẽ phát khung dữ liệu 
tiếp theo 
 điều khiển luồng dựa vào tốc độ dữ liệu (rate-based flow 
control), trong phương pháp này giao thức sẽ có một cơ chế 
để hạn chế tốc độ phát dữ liệu ở đầu phát mà không cần thông 
tin phản hồi từ đầu thu  không được sử dụng trên thực tế
4.2 Phương pháp dò tìm và sửa lỗi
 Các loại lỗi:
 Lỗi đơn: Lỗi chỉ một bit, một đơn vị dữ liệu  dễ xảy ra, dễ
phát hiện và sửa chữa
 Lỗi chùm: Lỗi trên nhiều bit, nhiều đơn vị dữ liệu  khó xảy 
ra, khó phát hiện và sửa chữa.
 Biện pháp khắc phục lỗi:
 Kiểm soát lỗi hướng tới: bổ sung thêm các thông tin vào mỗi 
khối dữ liệu cho phép đầu thu xác định được thông tin nhận 
được có bị lỗi hay không và chỉ ra vị trí của lỗi đó
 Kiểm soát lỗi quay lui: chỉ thêm vào các trường thông tin cho 
phép đầu thu nhận biết khung dữ liệu nào bị lỗi và yêu cầu 
phát lại khung dữ liệu đó mà không chỉ ra vị trí lỗi
4.2 Phương pháp dò tìm và sửa lỗi
 Khung dữ liệu: m bit chứa bản tin và r bit chứa thông tin 
kiểm tra, do đó chiều dài của khung dữ liệu là n = m + r.
 m bit thông tin  2m bản tin có nghĩa
 n bit dữ liệu  2n bản tin dữ liệu
 Khoảng cách Hamming của 2 từ mã: Số bit khác nhau giữa 
hai từ mã (phép toán OR)
 Ví dụ hai từ mã sau đây: 10001001 và 10110001 có
khoảng cách mã Hamming là 3.
 Khoảng cách Hamming của mã: Từ 2n tổ hợp dữ liệu chúng 
ta tạo ra danh mục các từ mã được sử dụng cho truyền thông 
(chỉ 2m), tìm ra 2 từ mã có khoảng cách Hamming nhỏ nhất 
 khoảng cách Hamming của mã
4.2 Phương pháp dò tìm và sửa lỗi
 Tính chất dò tìm lỗi và sửa lỗi của một mã phụ
thuộc vào khoảng cách Hamming của mã đó.
 Để dò được d lỗi  cần mã có khoảng cách 
Hamming là d+1
 Để sửa được d lỗi  cần mã có khoảng cách 2d+1
 Ví dụ n=10, chúng ta có tất cả 210 các giá trị. Chọn 
các từ mã sau đây để làm mã truyền thông: 
0000000000; 0000011111; 1111100000; 
1111111111.
 Khoảng cách Hamming là 5
 mã này dò được 4 lỗi
 mã này sửa được 2 lỗi
4.2 Phương pháp dò tìm và sửa lỗi
 Nếu đầu phát gửi đi từ mã 0000011111 đến đầu thu kiểm tra 
kết quả là 0000011100 (sai 2 bit) thì từ mã 0000011111 có
thể sửa sai được vì khoảng cách Hamming của nó đến từ mã 
gốc gần nhất 0000011111  0000011100 là 2 có thể phát 
hiện được.
 Trong trường hợp đầu thu nhận được 0000011000 thì không 
thể sửa sai được vì khoảng cách Hamming của nó đến các từ
mã gốc là không thể phát hiện được
 0000011000 0000011111=3
 0000011000 0000000000=2
4.2.1 Phương pháp dò lỗi Parity Check
 Dựa vào từ mã quy ước giữa đầu phát và đầu thu là chẵn/ lẻ, 
đầu phát sẽ chèn thêm 1 bit kiểm tra chẵn/ lẻ tương ứng. Bit 
này là 0 hoặc 1 để đạt được từ mã có giá trị chẵn/ lẻ đã quy 
ước.
 Ví dụ hệ thống quy ước sử dụng từ mã chẵn.
 Nếu dữ liệu là 01100010 chèn thêm bit 1  011000101: từ
mã chẵn
 Nếu dữ liệu là 01101010 chèn thêm bit 0  011010100: từ
mã chẵn.
 Phía đầu thu sẽ căn cứ vào từ mã thu được, kiểm tra nó:
 Nếu chẵn: Dữ liệu đúng hoặc bị lỗi với khoảng cách 
Hamming là bội số của 2
 Nếu lẻ: Dữ liệu chắc chắn sai.
 Nếu đúng, đầu thu loại đi bit kiểm tra và lấy dữ liệu cuối
4.2.2 Phương pháp kiểm dư vòng 
(CRC- Cyclic Redundancy Check)
 Đặc điểm:
 Đây là một phương pháp dùng để dò lỗi, không có tác dụng 
sửa lỗi, 
 thường được sử dụng phổ biến khi môi trường truyền dẫn có
chất lượng cao, ít lỗi như cáp đồng, cáp quang.
 Phương pháp này khai thác đặc trưng của các số nhị phân 
khi dùng phép toán modulo-2 để tính toán ra giá trị
checksum. Giả sử M(x) là một số m bit cần truyền, G(x) là 
đa thức sinh có bậc r (phần tử chia)
4.2.2 Phương pháp kiểm dư vòng 
(CRC- Cyclic Redundancy Check)
 Các bước tiến hành
 Bước 1: Thêm r bit 0 vào cuối chuỗi bit cần truyền. Xâu ghép 
có (m+r) bit, tương ứng với đa thức xr M(x).
 Bước 2: Chia modulo-2 chuỗi bit tương ứng với xr M(x) cho 
chuỗi bit tương ứng với G(x).
 Bước 3: Lấy số bị chia trong bước 2 trừ (modulo-2) cho số 
dư.
 Kết quả chuỗi bit được truyền đi sẽ là chuỗi gốc ghép với 
checksum tính được ở trên
 1101011011 và đa thức sinh G(x) = x4 + x +1, ta tính toán 
được giá trị checksum và chuỗi bit truyền đi như sau 
4.2.2 Phương pháp kiểm dư vòng 
(CRC- Cyclic Redundancy Check)
 Dữ liệu gửi 1101011011
 Đa thức sinh 10011  bậc 4 cần chèn 4 bit 0 vào dữ liệu
 Chuỗi sau khi được chèn: 11010110110000
 Lấy phép chia của 11010110110000 cho đa thức sinh 10011
kết quả số dư là 1110
 Chuỗi được truyền đi là: 11010110111110
 3 đa thức sinh được sử dụng phổ biến:
 CRC-12= x12 + x11 + x3 + x2 + x +1
 CRC-16= x16 + x15 + x2 +1
 CRC-CCITT= x16 + x12 + x5 +1
4.3 Điểu khiển luồng bằng cửa sổ trượt
 Yêu cầu thực tế: Truyền dữ liệu đồng thời ở cả hai 
phía đầu cuối, cần có:
 Một kênh dành cho dữ liệu
 Một kênh dành cho điều khiển
 Lãng phí băng thông dành cho kênh điều khiển
 Khắc phục:
 Sử dụng cùng kênh truyền cho dữ liệu cả hai hướng
 Khung dữ liệu được trộn với khung phúc đáp trên 
một hướng truyền, và phân biệt với nhau qua loại 
khung dữ liệu
4.3 Điểu khiển luồng bằng cửa sổ trượt
 Cơ chế piggyback: Khi nhận một khung dữ liệu, thay vì
phản hồi tức thì, máy thu đợi nhận một gói tin từ lớp mạng 
của nó, đính kèm trường ACK vào gói tin đó trong tiêu đề 
khung để gửi cho máy phát. Kết quả là phúc đáp được gửi 
đi mà không cần tốn băng thông đường truyền.
 Tiết kiệm băng thông nhiều hơn so với sử dụng một khung 
phúc đáp riêng rẽ.
 Vấn đề đặt ra là máy thu phải đợi bao lâu trước khi nó gửi 
phúc đáp cho máy phát? 
 Nếu quá lâu máy phát sẽ tự động gửi lại gói tin ban đầu
 Giải quyết: sử dụng bộ định thời để xác định thời điểm trễ hạn 
bắt buộc phải phúc đáp, nếu máy thu không có gói tin muốn 
truyền dữ liệu cho máy phát.
4.3 Điểu khiển luồng bằng cửa sổ trượt
 Kỹ thuật cửa sổ trượt: là một chuỗi các khung dữ
liệu liền kề nhau được phát đi mà chưa có phúc đáp. 
 Khi nhận xong các khung dữ liệu trong một cửa sổ, 
đầu thu sẽ dịch chuyển hay “trượt” cửa sổ này lên 
một đơn vị để nhận tiếp các khung dữ liệu trong cửa 
sổ tiếp theo vì vậy người ta gọi kỹ thuật này là kỹ
thuật cửa sổ trượt. 
 Cả đầu phát và đầu thu đều sử dụng cửa sổ trượt khi 
truyền dữ liệu, cửa sổ trượt ở đầu phát gọi là cửa sổ
truyền (Sending Window) và cửa sổ trượt ở đầu thu 
gọi là cửa sổ thu (Receiving Window).
4.3 Điểu khiển luồng bằng cửa sổ trượt
 Trong trường hợp tổng quát, hai cửa sổ này không 
nhất thiết phải có cùng chung giá trị cạnh trên và
cạnh dưới trong cùng một thời điểm cũng như 
không nhất thiết phải có cùng chung kích thước.
 Các số thứ tự trong cửa sổ truyền cho biết số khung 
đã được gửi đi song chưa có phúc đáp.
 Do các khung này có thể bị thất lạc hoặc bị hư 
hỏng trong quá trình truyền nên chúng phải được 
lưu vào trong bộ nhớ của đầu phát để khi cần có thể
truyền lặp lại 
4.3 Điểu khiển luồng bằng cửa sổ trượt
4.3 Điểu khiển luồng bằng cửa sổ trượt
 Như vậy, nếu kích thước lớn nhất của cửa sổ là n thì nó phải 
có ít nhất n vùng đệm để lưu n khung chưa có phúc đáp. 
 Còn ở bên thu, với kích thước cửa sổ là hữu hạn nên khi số 
lượng khung đến vượt quá giá trị của cửa sổ thì cách đơn giản 
nhất và cũng thông dụng nhất là hủy các khung này và bắt 
buộc đầu phát truyền lặp lại. 
 Khung đến có số thứ tự trùng với cạnh dưới của cửa sổ thu sẽ 
được chấp nhận, dữ liệu của nó (gói) được chuyển lên lớp 
mạng và phúc đáp được tạo ra, đồng thời cửa sổ dịch lên một 
đơn vị. 
 Cửa sổ thu, khác với cửa sổ phát, luôn luôn không đổi về giá
trị. Trong quá trình này, đầu thu luôn phải nhớ rằng nó phải 
nhận các khung theo đúng thứ tự mà đầu phát truyền lên kênh.
4.3.2 Thủ tục cửa sổ trượt (Sliding Window) có kích thước 
một bit 
 Giả thiết rằng đầu phát luôn có khung dữ liệu để
truyền, nói cách khác là lớp điều khiển dữ liệu luôn 
có sẵn các gói dữ liệu do lớp mạng cung cấp để
thực hiện phép truyền liên tục. Chiến lược truyền 
lặp ARQ được kết hợp với cửa sổ để điều khiển số 
lượng khung lưu thông trên đường truyền giữa A 
và B. Mô hình ARQ đơn giản nhất là ARQ dừng - 
đợi, có nghĩa là sau khi đầu phát đã truyền đi một 
khung dữ liệu, nó dừng lại và đợi phúc đáp của bên 
thu. Nhận được phúc đáp nó mới gửi tiếp khung 
tiếp theo. Như vậy, ta thấy ngay, thực tế đây cũng 
chính là mô hình cửa sổ trượt với kích thước cửa sổ
bằng 1.
4.3 Điểu khiển luồng bằng cửa sổ trượt
Ban 
đầu
Sau khi 
gói thứ
nhất được 
gửi
Sau khi 
nhận gói 
thứ nhất
Sau khi 
phúc đáp 
thứ nhất 
trở lại
4.3 Điểu khiển luồng bằng cửa sổ trượt
 Trao đổi bản tin với cửa sổ 1 bit như sau:
 Máy A ở tầng 2 nhận gói dữ liệu từ tầng 3, tạo bản tin gửi đi. 
Khi bản tin này đến tầng 2 máy B, nó sẽ tự kiểm tra xem có bị
lặp lại không. Nếu đúng là bản tin đang mong đợi thì nó được 
chuyển lên tầng 3 và cửa sổ dịch đi một nấc. Vùng ACK chứa 
số bản tin cuối đã được nhận không lỗi. Nếu số này trùng với 
số bản tin vừa gửi, đầu phát sẽ lấy gói dữ liệu tiếp theo từ lớp 
mạng. Nếu số không đúng nó phải gửi lại bản tin cũ.
 Với thuật toán dùng cửa sổ có kích thước bằng 1, phần lớn 
thời gian sau khi đã truyền xong một khung A và B phải đợi 
phản hồi ngược lại mới có thể truyền tiếp được khung khác 
nên hiệu quả phép truyền không thể cao được. 
 Để sử dụng kênh truyền hiệu quả hơn cần có các thuật toán 
khác với kích thước cửa sổ lớn hơn.
4.3 Điểu khiển luồng bằng cửa sổ trượt
 Như giới thiệu ở trên, khi thiết lập việc truyền tin 
giữa hai đầu cuối ta phải quan tâm tới trễ truyền 
dẫn của các gói trên đường truyền để sử dụng kênh 
một cách có hiệu qủa. Giả thiết dung lượng kênh là
b bit/s, kích thước của khung là 1 bit và trễ truyền 
dẫn theo vòng kín (từ đầu phát đến đầu thu và 
ngược lại) là R giây với R/2 giây cho mỗi chiều. 
Trong thuật toán sử dụng ARQ dừng và đợi, thời 
gian đường dây bận là 1/b và thời gian rỗi là R, 
hiệu dụng của đường dây là 1/(1+bR). 
4.3 Điểu khiển luồng bằng cửa sổ trượt
 Nếu 1< bR thì độ hiệu dụng không vượt quá 50%, 
mà trễ truyền dẫn bao giờ cũng có, nên ta có thể
dùng thuật toán có kích thước cửa sổ truyền lớn 
hơn 1. Hay còn gọi là kỹ thuật tạo đường ống 
(Pipelining). Các khung pipelining khi được truyền 
lên kênh không tin cậy có thể làm nảy sinh một số
vấn đề cần giải quyết. 
 Nếu một khung nằm giữa luồng trên tuyến bị hỏng 
hoặc mất thì khi khung hỏng này đến, đầu thu sẽ
hủy nó và gửi NAK cho bên phát, nhưng các gói 
đến tiếp sau đó thì phải làm gì với chúng, trong khi 
mô hình của chúng ta yêu cầu lớp liên kết dữ liệu 
thu phải đưa các khung lên lớp mạng theo thứ tự.
4.3 Điểu khiển luồng bằng cửa sổ trượt
 Ta có hai cách giải quyết vấn đề lỗi khi sử dụng pipeline:
 Cách thứ nhất, gọi là ARQ phát lại gói N, đầu thu hủy toàn 
bộ các gói đứng sau khung bị hỏng bằng cách không phúc 
đáp. Nó tương ứng với trường hợp cửa sổ thu bằng 1. Cuối 
cùng thì bên phát, sau khoảng thời gian Timeout, sẽ gửi lại 
cho đầu thu tất cả những gói dữ liệu chưa được xác nhận bắt 
đầu từ gói dữ liệu hỏng thứ N. 
 Cách thứ hai, gọi là ARQ phát lại có chọn lọc, cho phép đầu 
thu lưu toàn bộ các khung đến nguyên vẹn đến sau khung 
hỏng trong bộ đệm của mình. Khi đầu phát nhận thấy có sự
cố, nó chỉ truyền lặp lại khung hỏng mà thôi, còn đầu thu nếu 
nhận được khung này lần thứ hai không có lỗi thì lớp liên kết 
dữ liệu của nó chỉ việc xếp đặt lại các khung theo thứ tự và
gửi các khung tương ứng lên cho lớp mạng 
4.3 Điểu khiển luồng bằng cửa sổ trượt
 Kỹ thuật phát lại tự động từ gói dữ liệu hỏng thứ N (go-back N)
 Kỹ thuật phát lại tự động có chọn lọc (selective repeat) 
4.3.4 Đánh giá hiệu quả ARQ phát lại có chọn lọc và
ARQ phát lại gói N 
 Hai phương pháp này cho thấy sự tương phản giữa 
hiệu suất sử dụng băng thông và dung lượng của bộ 
đệm lớp liên kết dữ liệu. Tùy theo khả năng và mức 
độ yêu cầu để sử dụng phương pháp này hay 
phương pháp khác.
 Ngoài ra, do các phương pháp kể trên cho phép gửi 
nhiều gói trong phạm vi của cửa sổ nên cũng cần 
nhiều bộ đếm thời gian để xác định Timeout cho 
từng gói. Thông số này thường được mô phỏng 
trong chương trình phần mềm có sử dụng đồng hồ
phần cứng để tạo các ngắt theo chu kỳ
4.3.4 Đánh giá hiệu quả ARQ phát lại có chọn lọc và
ARQ phát lại gói N
 Phương pháp ARQ phát lại gói dữ liệu hỏng thứ N tỏ ra rất hữu hiệu khi 
tỉ lệ lỗi thấp hoặc đường truyền có chất lượng tốt, còn khi đường truyền 
có chất lượng xấu thì nó làm lãng phí rất nhiều băng thông vì các khung 
đến sau khung hỏng sẽ bị hủy và truyền lặp lại, khi đó người ta nên 
dùng phương pháp có sử dụng ARQ phát lại có chọn lọc.
 Trong phương pháp này, cửa sổ truyền