Biểu đồ so sánh
Cơ sở để so sánh | Quay lại-N | Lặp lại chọn lọc |
---|---|---|
Căn bản | Truyền lại tất cả các khung được gửi sau khung mà nghi ngờ bị hỏng hoặc bị mất. | Chỉ truyền lại những khung hình bị nghi ngờ bị mất hoặc bị hỏng. |
Sử dụng băng thông | Nếu tỷ lệ lỗi cao, nó sẽ lãng phí rất nhiều băng thông. | Băng thông tương đối ít bị lãng phí trong việc truyền lại. |
Phức tạp | Ít phức tạp hơn. | Phức tạp hơn vì nó yêu cầu áp dụng logic và phân loại và lưu trữ bổ sung, tại người gửi và người nhận. |
Kích thước cửa sổ | N-1 | <= (N + 1) / 2 |
Sắp xếp | Sắp xếp không bắt buộc ở phía người gửi cũng như phía người nhận. | Người nhận phải có khả năng sắp xếp vì nó phải duy trì chuỗi các khung. |
Lưu trữ | Người nhận không lưu trữ các khung nhận được sau khi khung bị hỏng cho đến khi khung bị hỏng được truyền lại. | Bộ thu lưu các khung nhận được sau khung bị hỏng trong bộ đệm cho đến khi khung bị hỏng được thay thế. |
Đang tìm kiếm | Không yêu cầu tìm kiếm khung không phải ở phía người gửi cũng như trên người nhận | Người gửi phải có thể tìm kiếm và chỉ chọn khung được yêu cầu. |
Số ACK | Số NAK đề cập đến số khung dự kiến tiếp theo. | Số NAK đề cập đến khung bị mất. |
Sử dụng | Nó thường được sử dụng hơn. | Nó là ít trong thực tế vì sự phức tạp của nó. |
Định nghĩa của Go-Back-N
Giao thức Go-Back-N là giao thức cửa sổ trượt. Nó là một cơ chế để phát hiện và kiểm soát lỗi trong lớp datalink. Trong quá trình truyền khung giữa người gửi và người nhận, nếu một khung bị hỏng, bị mất hoặc một xác nhận bị mất thì hành động được thực hiện bởi người gửi và người nhận được giải thích trong nội dung sau.
Khung bị hư hỏng
Nếu người nhận nhận được khung bị hỏng hoặc nếu xảy ra lỗi trong khi nhận khung thì người nhận sẽ gửi NAK (xác nhận phủ định) cho khung đó cùng với số khung đó, dự kiến sẽ được truyền lại. Sau khi gửi NAK, người nhận sẽ loại bỏ tất cả các khung mà nó nhận được, sau một khung bị hỏng. Người nhận không gửi bất kỳ ACK (xác nhận) nào cho các khung bị loại bỏ. Sau khi người gửi nhận được NAK cho khung bị hỏng, nó sẽ truyền lại tất cả các khung trở về số khung được gọi bởi NAK.
Mất khung
Người nhận kiểm tra số trên mỗi khung, nó nhận được. Nếu một số khung được bỏ qua trong một chuỗi, thì người nhận dễ dàng phát hiện mất khung vì khung mới nhận được được nhận ngoài chuỗi. Người nhận gửi NAK cho khung bị mất và sau đó người nhận sẽ loại bỏ tất cả các khung nhận được sau một khung bị mất. Người nhận không gửi bất kỳ ACK (xác nhận) nào cho các khung bị loại bỏ đó. Sau khi người gửi nhận được NAK cho khung bị mất, nó sẽ truyền lại khung bị mất được gọi bởi NAK và cũng truyền lại tất cả các khung mà nó đã gửi sau khung bị mất.
Mất công nhận
Nếu người gửi không nhận được bất kỳ ACK nào hoặc nếu ACK bị mất hoặc bị hỏng ở giữa đường truyền. Người gửi chờ thời gian hết và khi hết thời gian, người gửi sẽ truyền lại tất cả các khung mà nó chưa nhận được ACK. Người gửi xác định mất ACK với sự trợ giúp của bộ hẹn giờ.
Số ACK, như số NAK (xác nhận âm), hiển thị số khung, người nhận dự kiến sẽ là người tiếp theo trong chuỗi. Kích thước cửa sổ của máy thu là 1 vì lớp liên kết dữ liệu chỉ yêu cầu khung mà nó phải gửi bên cạnh lớp mạng. Kích thước cửa sổ người gửi bằng 'w'. Nếu tỷ lệ lỗi cao, rất nhiều băng thông bị mất lãng phí.
Định nghĩa lặp lại chọn lọc
Lặp lại chọn lọc cũng là giao thức cửa sổ trượt phát hiện hoặc sửa lỗi xảy ra trong lớp datalink. Giao thức lặp lại chọn lọc chỉ truyền lại khung đó bị hỏng hoặc mất. Trong giao thức lặp lại có chọn lọc, khung truyền lại được nhận ngoài chuỗi. Giao thức lặp lại chọn lọc có thể thực hiện các hành động sau
- Người nhận có khả năng sắp xếp khung theo một trình tự thích hợp, vì nó nhận được khung truyền lại có trình tự nằm ngoài trật tự của khung nhận.
- Người gửi phải có khả năng tìm kiếm khung mà NAK đã được nhận.
- Người nhận phải chứa bộ đệm để lưu trữ tất cả các khung đã nhận trước đó cho đến khi khung truyền lại được sắp xếp và đặt theo một trình tự thích hợp.
- Số ACK, như số NAK, đề cập đến khung bị mất hoặc bị hỏng.
- Nó đòi hỏi kích thước cửa sổ ít hơn so với giao thức go-back-n.
Khung bị hư hỏng
Nếu một người nhận nhận được một khung bị hỏng, nó sẽ gửi NAK cho khung mà trong đó phát hiện ra lỗi hoặc hư hỏng. Số NAK, như trong go-back-n cũng chỉ ra sự thừa nhận của các khung và lỗi đã nhận trước đó trong khung hiện tại. Người nhận tiếp tục nhận được các khung mới trong khi chờ khung bị hỏng được thay thế. Các khung được nhận sau khung bị hỏng không được xác nhận cho đến khi khung bị hỏng được thay thế.
Mất khung
Như trong một giao thức lặp lại có chọn lọc, một khung có thể được nhận theo thứ tự và hơn nữa chúng được sắp xếp để duy trì một chuỗi thích hợp của các khung. Trong khi sắp xếp, nếu một số khung bị bỏ qua, người nhận sẽ nhận ra rằng một khung bị mất và nó sẽ gửi NAK cho khung đó cho người gửi. Sau khi nhận được NAK cho khung bị mất, người gửi tìm kiếm khung đó trong cửa sổ của nó và truyền lại khung đó. Nếu khung truyền cuối cùng bị mất thì người nhận không phản hồi và sự im lặng này là một sự thừa nhận tiêu cực cho người gửi.
Mất công nhận
Nếu người gửi không nhận được bất kỳ ACK nào hoặc ACK bị mất hoặc bị hỏng ở giữa đường truyền. Người gửi chờ thời gian hết và khi hết thời gian, người gửi sẽ gửi lại tất cả các khung mà nó chưa nhận được ACK. Người gửi xác định mất ACK với sự trợ giúp của bộ hẹn giờ.
Sự khác biệt chính giữa Go-Back-N và Lặp lại chọn lọc
- Giao thức Go-Back-N được thiết kế để truyền lại tất cả các khung hình được gửi đến sau khi khung bị hỏng hoặc bị mất. Mặt khác, giao thức Lặp lại chọn lọc chỉ truyền lại khung đó bị hỏng hoặc bị mất.
- Nếu tỷ lệ lỗi cao, tức là nhiều khung hình đang bị hỏng và sau đó truyền lại tất cả các khung hình đến sau khung bị hỏng sẽ lãng phí rất nhiều băng thông. Mặt khác, giao thức lặp lại có chọn lọc chỉ truyền lại khung bị hỏng do đó, băng thông tối thiểu bị lãng phí.
- Tất cả các khung sau khung bị hỏng sẽ bị loại bỏ và các khung truyền lại đến theo một chuỗi từ khung bị hỏng trở đi, do đó, việc sắp xếp các khung ít gây đau đầu hơn do đó ít phức tạp hơn. Mặt khác, chỉ có khung bị hỏng hoặc bị nghi ngờ được truyền lại, do đó, logic bổ sung phải được áp dụng để sắp xếp do đó, nó phức tạp hơn.
- Go-Back-N có kích thước cửa sổ là N-1 và lặp lại chọn lọc có kích thước cửa sổ <= (N + 1) / 2.
- Cả người gửi và người nhận đều không cần thuật toán sắp xếp trong Go-Back-N trong khi đó, người nhận phải có khả năng sắp xếp theo như nó phải duy trì chuỗi.
- Do đó, trong máy thu Go-Back-N sẽ loại bỏ tất cả các khung sau khung bị hỏng, do đó không cần lưu trữ bất kỳ khung nào. Giao thức lặp lại có chọn lọc không loại bỏ các khung đến sau khung bị hỏng thay vào đó nó lưu các khung đó cho đến khi khung bị hỏng đến thành công và được sắp xếp theo một trình tự thích hợp.
- Trong khung NAK lặp lại có chọn lọc đề cập đến số khung bị hỏng và trong Go-Back-N, khung NAK đề cập đến khung tiếp theo dự kiến.
- Nói chung, Go-Back-N được sử dụng nhiều hơn do tính chất ít phức tạp hơn thay vì giao thức Lặp lại chọn lọc.
Phần kết luận:
Lặp lại chọn lọc là một giao thức hiệu quả hơn vì nó không lãng phí băng thông cho các khung được nhận đúng, nhưng, độ phức tạp và chi phí của nó ưu tiên sử dụng giao thức go-back-n.