Tin học
Cơ chế Điều khiển Luồng Dữ liệu
Cơ chế điều khiển luồng được thiết kế để điều khiển luồng dữ liệu giữa người nhận và người gởi, sao cho vùng đệm của người nhận không bị tràn. Nếu bị tràn, các khung hoặc gói dữ liệu sẽ bị mất. Điều khiển luồng được dùng trong tầng liên kết dữ liệu để điều khiển các liên kết điểm-điểm và trong tầng chuyển tải để điều khiển luồng end-to-end trên mạng có định tuyến.
Các giao thức tầng liên kết dữ liệu gồm SDLC (Synchronous Data Link Control), HDLC (High-level Data Link Control); LAPB (Link Access Procedure Balance), SLIP (Serial Line Interface Protocol); và PPP (Point-to-point Protocol). Hai giao thức cuối được sử dụng cho kết nối điểm-điểm với Internet. Khi thảo luận về các giao thức tầng liên kết dữ liệu, đơn vị truyền là khung. Trong tầng chuyển tải, đơn vị truyền là một phân đoạn (segment) và được gọi là TPDU (Transport Protocol Data Unit) theo thuật ngữ OSI (Open Systems Interconnection). Thảo luận nầy dùng từ “gói” để nói đến đơn vị truyền.
Điều khiển luồng là cần thiết vì người gởi và người nhận thường không khớp nhau về dung lượng và khả năng xử lý. Người nhận có thể không có khả năng xử lý các gói với cùng tốc độ như người gởi, vì thế vùng đệm của họ bị tràn và dẫn đến mất mát các gói dữ liệu.
Điều khiển Luồng kiểu Stop-and-Wait
Kỹ thuật điều khiển luồng đơn giản nhất là dừng và chờ. Công cụ sử dụng là ACK (aknowledgment - báo nhận). Trước hết, người gởi truyền một khung đến đích. Đích trả về một khung báo nhận cho người nhận, ngụ ý rằng nó sẵn sàng nhận (tiếp) dữ liệu. Nguồn luôn luôn chờ khung báo nhận trước khi gởi khung tiếp theo. Kỹ thuật nầy thường không gây ra tình trạng quá tải ở đích, nhưng nếu đích cần thời gian tạm nghỉ trước khi nhận dữ liệu, nó trì hoãn việc gởi thông báo nhận.
Kỹ thuật nầy là hữu ích nếu chỉ gởi vài khung thông tin. Trên một số mạng, kích thước của khung đủ lớn để thông tin được gởi đi trong một khung. Tuy vậy, phương pháp nầy không hiệu quả đối với việc chuyển tải lâu đòi hỏi dùng nhiều khung. Chi phí phát sinh của thao tác gởi thông báo nhận đối với mỗi khung làm tăng đáng kể lưu lượng lưu thông trên mạng.
Ngoài ra, trên một số mạng người ta thích dùng khung có kích thước bé, nghĩa là sẽ có nhiều khung và nhiều thông báo nhận. Khi xảy ra tình trạng truyền không đều, và nếu một khung bị mất thì chỉ cần truyền lại ít thông tin hơn.
Điều khiển Luồng kiểu Sliding-Window
Mục đích của kỹ thuật nầy là sử dụng hiệu quả phần băng thông bị lãng phí trong phương pháp dừng và chờ, khi người gởi phải chờ thông báo nhận. Về cơ bản, kỹ thuật nầy cho phép người gởi truyền nhiều khung cùng lúc để khai thác kênh truyền càng nhiều càng tốt. Đồng thời, kỹ thuật nầy cung cấp phương thức để người nhận thể hiện với người gởi rằng vùng đệm đang chuẩn bị đầy.
Có thể hiểu kỹ thuật nầy như một cuộc đối thoại giữa người gởi và người nhận. Người gởi bắt đầu bằng cách nói: “Tôi sẽ gởi cho anh n khung trước khi anh gởi cho tôi thông báo nhận”. Nếu người nhận đang bị quá tải, anh ta sẽ trả lời: “Ngưng truyền vì tôi đang quá tải”. Ưu điểm của quá trình động nầy là có thể tối ưu hóa các kênh một cách tốt hơn.
Thủ tục diễn ra như sau. Giả sử máy chủ truyền đến máy khách, và giả sử mỗi khung có đi kèm số hiệu chuỗi (sequence number) để có thể biết thứ tự các khung. Máy khách lưu và theo dõi các khung nhận được, và máy chủ lưu và theo dõi các khung gởi đi. Việc theo dõi nầy được thực hiện trong một cửa sổ cập nhật thường xuyên khi các khung được gởi và nhận - vì thế có tên sliding window (cửa sổ trượt).
1. Cửa sổ gởi được đặt là 3 theo thỏa thuận, hoặc đây là tham số thiết lập trước.
2. Máy khách cấp phát vùng đệm cho 3 khung
3. Máy chủ gởi 3 khung và chờ thông báo nhận. Nó cũng cập nhật cửa sổ của nó để thể hiện rằng các khung 4, 5 và 6 sẽ được truyền tiếp theo.
4. Máy khách gởi thông báo nhận chứa số hiệu chuỗi của khung tiếp theo (khung 4), và cập nhật cửa sổ của nó để thể hiện rằng các khung 4, 5 và 6 đang được chờ.
5. Máy chủ nhận thông báo nhận và quá trình nầy tiếp tục lặp lại từ bước 3.
Kỹ thuật cửa sổ trượt sẽ tìm cách xác định kích thước tốt nhất cho mạng, làm tăng số khung được truyền nếu cần thiết. Tuy vậy, cửa số không nên quá lớn; nếu không, người nhận sẽ quá tải và phải loại bỏ các khung. Nếu điều nầy xảy ra, nó gởi thông báo RNR (Receive-Not-Ready) đến người gởi, thể hiện rằng nó đã nhận các khung, nhưng sẽ không nhận các khung tiếp theo cho đến khi nó thông báo.
Từ mục liên quan
Acknowledments; Connection Establishment; Connection-Oriented and Connectionless Services; Data Communication Concepts; Data link Protocols; NAK (Negative Acknowlegment); TCP (Transmission Control Protocol); và Transport Protocols and Services