Phân tích Ở đây, hai sự kiện có thể xảy ra: một yêu cầu từ các lớp mạng hoặc một thông báo đến
từ các lớp vật lý. Các phản ứng với các sự kiện phải thay thế. Nói cách khác, sau khi một
khung được gửi đi, các thuật toán phải bỏ qua một yêu cầu khác lớp mạng cho đến khi khung đó được
thừa nhận. Chúng tôi biết rằng hai sự kiện đến không thể xảy ra cái khác vì các
kênh là có lỗi và không lặp lại trong các khung. Các yêu cầu từ các lớp mạng,
tuy nhiên, có thể xảy ra sau một khác mà không có một sự kiện xuất hiện ở giữa. Chúng tôi cần phải bằng cách nào đó để
ngăn chặn ngay lập tức gửi các khung dữ liệu. Mặc dù có một số phương pháp, chúng tôi đã
sử dụng một biến canSend đơn giản mà có thể là đúng hay sai. Khi khung được gửi đi, các biến
được đặt là false để cho biết rằng một yêu cầu mạng mới không thể được gửi cho đến khi canSend là đúng. Khi một
ACK được nhận, canSend được thiết lập là true để cho phép gửi các frame kế tiếp.
Phân tích này là rất tương tự như thuật toán 11.2 với một ngoại lệ. Sau khi các khung dữ liệu
đến, người nhận sẽ gửi một khung ACK (đường 9) để xác nhận việc tiếp nhận và cho phép người gửi
để gửi khung tiếp theo.
11,5 CHANNELS NOISY
Mặc dù Stop-and-Wait Nghị định thư cho chúng ta một ý tưởng về làm thế nào để thêm dòng chảy kiểm soát của mình
với người tiền nhiệm, các kênh truyền hình không tiếng ồn là không tồn tại. Chúng ta có thể bỏ qua lỗi (như đôi khi chúng ta
làm), hoặc chúng ta cần thêm kiểm soát lỗi cho các giao thức của chúng tôi. Chúng tôi thảo luận về ba giao thức
trong phần này sử dụng kiểm soát lỗi.
Stop-and-Wait Repeat Request tự động
giao thức đầu tiên của chúng tôi, được gọi là Stop-and-Wait Automatic Repeat Request (Stop-andWait
ARQ), thêm một cơ chế kiểm soát lỗi đơn giản để Stop -và-Chờ Protocol. Hãy để
chúng tôi xem làm thế nào giao thức này phát hiện và sửa các lỗi.
Để phát hiện và sửa khung hình bị hỏng, chúng ta cần thêm các bit dư thừa dữ liệu của chúng tôi để
khung hình (xem Chương 10). Khi khung đến lúc các trang web nhận, nó sẽ được kiểm tra và nếu
nó bị hỏng, nó được âm thầm bỏ đi. Việc phát hiện các lỗi trong giao thức này được thể hiện
bằng sự im lặng của người nhận.
Lost khung hình có nhiều khó khăn để xử lý hơn so với những người bị hỏng. Trong các giao thức trước đó của chúng tôi,
không có cách nào để xác định một khung. Khung nhận được có thể là đúng,
hoặc một bản sao, hoặc một khung trong trật tự. Giải pháp là để đánh số các khung hình. Khi
nhận nhận được một khung dữ liệu đó là ra lệnh, điều này có nghĩa là khung đã được hoặc
bị mất hoặc nhân đôi.
Các khung comlpted và mất cần phải được gửi lại trong giao thức này. Nếu người nhận không
không đáp ứng khi có một lỗi, làm thế nào có thể người gửi biết mà khung để gửi lại không? Để
khắc phục vấn đề này, người gửi giữ một bản sao của khung gửi. Đồng thời, nó bắt đầu
một bộ đếm thời gian. Nếu giờ hết hạn và không có ACK cho khung gửi, khung là phẫn nộ, các
bản sao được tổ chức, và hẹn giờ đã được khởi động lại. Vì giao thức sử dụng các cơ chế stop-and-wait,
chỉ có một khung hình cụ thể mà cần một ACK mặc dù nhiều bản sao của
cùng một khung có thể được trong mạng.
Sửa lỗi trong Stop-and-Wait ARQ được thực hiện bằng cách giữ một bản sao của khung gửi
và phát lại các khung hình khi thời gian kết thúc.
Từ một khung ACK cũng có thể bị hỏng và mất, nó cũng cần bit dư thừa
và một số thứ tự. Khung ACK cho giao thức này có một dãy số kết nối.
Trong giao thức này, người gửi chỉ đơn giản là loại bỏ một khung ACK hỏng hoặc bỏ qua một
out-of-order một.
Số dãy
Như chúng ta đã thảo luận, các giao thức xác định rằng khung hình cần phải được đánh số. Điều này được thực hiện
bằng cách sử dụng số thứ tự. Một lĩnh vực được bổ sung vào các khung dữ liệu để giữ chuỗi
số khung đó.
Một lưu ý quan trọng là phạm vi của các số thứ tự. Vì chúng tôi muốn
thu nhỏ kích thước khung hình, chúng tôi tìm cho phạm vi nhỏ nhất mà cung cấp rõ ràng
đang được dịch, vui lòng đợi..