Hình 4.1 Hoạt động của Tahoe TCP, trường hợp có một gói số liệu bị loại bỏ
Khi triển khai thực hiện Tahoe TCP năm 1988, người ta đã bổ sung một số thuật toán mới và một số tinh chỉnh so với TCP ban đầu. Các thuật toán mới bao gồm: khởi động chậm, tránh tắc nghẽn và phát lại nhanh. Các tinh chỉnh bao gồm: việc sửa đổi bộ ước lượng thời gian khứ hồi, được dùng để đặt giá trị hết giờ cho việc phát lại [27], [33]. Một số sửa đổi đã được trình bày tại nhóm tiểu mục 1.3.2. (Điều khiển lưu lượng trong giao thức TCP). Hình 4.1 minh hoạ sự hoạt động của giao thức Tahoe TCP, trong trường hợp cụ thể, có một gói số liệu bị loại bỏ. (Tại mục 4.1.5 cũng có một số giải thích liên quan đến hình vẽ này).
Giai đoạn khởi động chậm (Slow-Start, SS): kích thước cửa sổ ban đầu là một gói số liệu, sau đó với mỗi biên nhận mới, không lặp, nó lại tăng thêm một gói số
liệu. Như vậy, thực chất việc tăng là theo hàm mũ. Quá trình tăng tiếp tục cho đến khi kích thước cửa sổđạt đến giá trị mà bên gửi ước lượng là dung lượng của mạng, có thể hình dung đó là kích thước của cái “đường ống” mà bên gửi tuôn dữ liệu cho bên nhận, là số lượng cực đại các gói số liệu có thể đặt vừa khít trên đường đi, từ
bên gửi đến bên nhận. Giá trị ước lượng về dung lượng của mạng được gọi là ngưỡng của giai đoạn khởi động chậm, chúng ta sẽ ký hiệu là ssthresh (slow start threshold). Khởi động chậm nhằm mục đích làm giảm bớt sự bùng nổ của lưu lượng trong khi đổ dữ liệu đầy “đường ống”.
Giai đoạn tránh tắc nghẽn (Congestion Avoidance, CA): khi kích thước cửa sổ đạt đến giá trị ssthresh, bên nguồn chuyển sang chế độ cho cửa sổ tăng chậm hơn, cửa sổ tăng lên một sau khi nhận được các biên nhận cho tất cả các gói số liệu trong một cửa sổ. Mục đích của giai đoạn này là thăm dò mạng một cách từ từ xem có thể sử dụng thêm dải thông nữa hay không, sự tăng cửa sổ sẽ chấm dứt khi phát hiện thấy có gói số liệu bị mất. Hiện nay người ta sử dụng hai cơ chế phát hiện sự
mất gói số liệu: sự hết giờ của đồng hồ phát lại và việc nhận được ba biên nhận lặp.
Phát lại nhanh (Fast Retransmit, FRXT): Thuật toán này được người ta quan tâm đặc biệt và được sửa đổi trong các phiên bản TCP ra đời sau. Theo thuật toán FRXT, sau khi nhận được một số biên nhận lặp (dup ACKs) cho cùng một gói số
liệu, bên gửi phỏng đoán rằng có một gói số liệu đã bị mất và phát lại gói số liệu đó chứ không chờ cho đến khi bị hết giờ, sau đó trở về giai đoạn khởi động chậm. Thuật toán này giúp nâng cao việc sử dụng đường truyền và thông lượng của kết nối.