Gói số liệu của giao thức TCP được xác định một cách duy nhất bởi số thứ tự của byte đầu tiên và kích thước của gói số liệu đó. Tại BS, snoop_data() luôn theo dõi sát số thứ tự gói số liệu mới nhất mà nó thấy trên kết nối và dựa vào số thứ tự gói số
liệu đến để xử lý chúng theo các cách thích hợp. Lưu đồ thuật toán của thủ tục snoop_data() được thể hiện trên hình 5.5; nó hoạt động như sau:
1. Trường hợp chung: Gói số liệu mới, có số thứ tự tăng lên theo trình tự bình thường, đến Snoop agent tại BS. Trong trường hợp này, gói số liệu sẽđược đưa vào bộ nhớđệm của snoop_data() và sẽđược chuyển tiếp đến MH.
2. Sự phát lại của người gửi: Gói số liệu không đúng thứ tự đến, nó đã được nhớ
từ trước trong bộ nhớ đệm của snoop_data(). Trường hợp này không phổ biến bằng trường hợp trên, xảy ra khi trong mạng Internet (hình 5.4) có gói số liệu bị
loại bỏ, gây ra hết giờ tại bên gửi. Nó cũng có thể xảy ra khi bên gửi của kết nối TCP thực hiện phát lại nhanh (FRXT). Thủ tục snoop_data() sẽ có các hành
động khác nhau tuỳ thuộc vào việc số thứ tự của gói số liệu này lớn hơn hay nhỏ
hơn của gói số liệu mới được biên nhận sau cùng. Nếu số thứ tự lớn hơn biên nhận cuối cùng mà snoop_data() đã thấy, rất có thể là gói số liệu này trước đó chưa tới MH và vì thế nó sẽđược chuyển tiếp. Mặt khác, nếu số thứ tự nhỏ hơn biên nhận cuối cùng, chứng tỏ gói số liệu này MH đã nhận được, vì vậy, lựa chọn duy nhất đúng là loại bỏ gói số liệu và tiếp tục công việc.
3. Mất do tắc nghẽn: Gói số liệu không đúng thứ tựđến, trước đó gói số liệu này chưa được nhớ đệm. Trong trường hợp này, đã có gói số liệu trước nó bị mất trong mạng (có dây) do tắc nghẽn, hoặc là các gói số liệu đã được mạng phân phát không đúng thứ tự. Để cho đơn giản, trong luận án này chúng tôi giả sử
rằng trong phần mạng có dây, không có sự mất gói số liệu do tắc nghẽn và sự
phân phát các gói số liệu sai thứ tự.