Giao thức TCP cho phép truyền nhiều segment liên tiếp đến máy nhận trước khi chờ nhận một phản hồi từ máy nhận. Xác nhận này chứa một số ACK dựa trên tổng số byte đã được nhận trong phiên này. số lượng segment mà máy gửi được phép gửi trước khi nhận được một phản hồi từ máy nhận được gọi là kích thước cửa sổ (window size). Window size là một cột trong TCP header. Giá trị ban đầu của window size được quyết định trong lúc thiết lập session thông qua three-way handshake.
Điều khiển luồng (Flow Control)
Điều khiển luồng là một trong những chức năng được xem là “thơng minh”. Một thiết bị trên mạng có những khả năng riêng về bộ nhớ, băng thông và các tài nguyên khác. Do đó, khi truyền dữ liệu các thiết bị sẽ không xử lý với cùng một tổc độ. Có thể truyền nhanh - nhận chậm, chính điều này làm mất dữ liệu. Hay truyền chậm - nhận nhanh, lúc này tại sao không phải tăng tốc độ truyền. Do đó, để giải quyết những vấn đề này, TCP đưa ra một cơ chế điều khiển luồng. Cơ chế này giúp cho máy gửi và máy nhận biết được tình trạng của nhau qua kênh giao tiếp. Sau đó, hai máy thiết lập một tốc độ truyền sao cho đạt được sự thống nhất ở cả hai phía.
Thay đổi window size - Cửa sổ trượt (Sliding window)
Sliding window là một kỹ thuật mà TCP sử dụng để điều khiển luồng với tham số đại diện là window size. Khi các tài nguyên mạng hay thiết bị bị quá tải. TCP có thể giảm
window size xuống để tránh mất dữ liệu và phải gửi lại. Lúc này các acknowledgement sẽ phản hồi thường xuyên hơn.
TCP segment 1 TCP segment 2 TCP segment 3 TCP segment A Acknowledgement segment 1 <--------------— ------- -------- Acknowledgement segment 2 TCP segment 2 TCP segment 3