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)
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