Truyền dữ liệu tin cậy trên kênh tin cậy hoàn toàn

Một phần của tài liệu Bài giảng mạng máy tính ths nguyễn xuân anh (Trang 79)

Giao thức đầu tiên, đơn giản nhất được đưa ra - rdt 1.0 sử dụng kênh truyền tin cậy ở phía dưới. FSM của bên gửi và bên nhận đều chỉ có một trạng thái (xem hình 4.6). Mặc dù mỗi FSM trong hình 4.6 chỉ có một trạng thái nhưng vẫn cần đến sự chuyển trạng thái để quay về chính trạng thái cũ. Sự kiện kích hoạt việc chuyển trạng thái được đặt phía trên đường kẻ nằm ngang, đó là nhãn sự kiện. Phía bên dưới đường kẻ nằm ngang là những hành động mà thực thể phải thực hiện ngay khi sự kiện đó xảy ra (thực hiện trước khi thực thể chuyển sang trạng thái mới). Với rdt1.0, việc gửi đơn giản chỉ là nhận dữ liệu từ tầng trên thông qua sự kiện rdt_send(data), tạo ra đoạn dữ liệu bằng hàm make_data (packet,data) và gửi đoạn dữ liệu lên kênh truyền. Trên thực tế, sự kiện rdt_send(data) là kết quả của một thủ tục, ví dụ khi ứng dụng phía trên sử dụng hàm rdt_send().

Hình 4.6 Giao thức cho kênh truyền tin cậy hoàn toàn

Ở bên nhận, rdt nhận gói dữ liệu (packet) từ kênh truyền bằng sự kiện rdt_rcv(packet), lấy dữ liệu ra khỏi gói dữ liệu bằng hàm extract (packet,data) và đưa dữ liệu lên tầng trên. Trên thực tế, sự kiện rdt_rcv(packet) là kết quả của một thủ tục, ví dụ khi ứng dụng phía trên sử dụng hàm rdt_rcv().

Trong giao thức đơn giản này, không có sự khác biệt giữa dữ liệu (data) với gói dữ liệu (packet). Như vậy, tất cả packet đều được truyền từ phía gửi cho phía nhận. với kênh truyền tin cậy, phía nhận không cần thiết phải phản hồi cho phía gửi vì nó chắc rằng không có chuyện gì xảy ra. Chú ý rằng, chúng ta đã giả thiết phía nhận có thể nhận dữ liệu với tốc độ phía gửi gửi. Vì vậy, phía nhận không cần yêu cầu phía gửi gửi chậm lại.

Một phần của tài liệu Bài giảng mạng máy tính ths nguyễn xuân anh (Trang 79)