nếu một máy khách tcp gửi một gói, với số thứ tự từ 10000 đến 20000, đến một máy chủ tcp. tcp sẽ trả lời bằng ACK với seq_ack 20001.
nếu tôi chặn gói TCP từ máy khách và chia gói thành 2 phân đoạn tcp, một phân đoạn có seq từ 10000 đến 15000 và phân đoạn khác có seq từ 15001 đến 20000. Sau đó, 2 phân đoạn TCP này được gửi đến máy chủ TCP. Giả sử rằng đoạn thứ hai bị mất trong đường dẫn. Máy chủ TCP sẽ phản hồi ACK với seq_ack 15001.
Bây giờ, vì máy khách TCP gửi một gói tích hợp với seq 10000 đến 20000, nhưng nó nhận được ACK với 15001, theo quan điểm của khách hàng, điều này thật kỳ lạ. Nó sẽ phản ứng thế nào? Về lý thuyết, máy khách nên truyền lại các byte từ seq 15001 đến 20000, cụ thể là máy khách sẽ truyền các gói mới từ seq 15001. Nhưng thực tế, trong thực thi ngăn xếp TCP, có giống như trong lý thuyết không?
Tôi nghĩ trong bộ đệm gửi TCP, khi một phân đoạn tcp được gửi, phân đoạn đó vẫn ở đó cho đến khi ACK. Khi ACK đến, các byte cho phân đoạn sẽ bị xóa khỏi bộ đệm. Có một con trỏ trong bộ đệm gửi, khi ACK đến, con trỏ trỏ đến vị trí mà ack_seq tương ứng. Các byte nằm dưới ack_seq sẽ bị xóa. Theo cách này, toàn bộ phân khúc không cần phải truyền lại?