jeśli klient tcp wyśle pakiet o numerze sekwencyjnym od 10000 do 20000, na serwer tcp. tcp odpowie ACK za pomocą seq_ack 20001.
jeśli przechwycę pakiet TCP od klienta i podzielę pakiet na 2 segmenty TCP, jeden z sekwencją od 10000 do 15000, a drugi z sekwencją od 15001 do 20000. A następnie te 2 segmenty TCP zostaną wysłane do serwera TCP. Załóżmy, że drugi segment ginie na ścieżce. Serwer TCP odpowie ACK na seq_ack 15001.
Teraz, ponieważ klient TCP wysyła pakiet integralny o sekwencji od 10000 do 20000, ale otrzymuje ACK z 15001, z punktu widzenia klienta jest to dziwne. Jak to zareaguje? Teoretycznie klient powinien ponownie przesłać bajty z sekwencji 15001 do 20000, a mianowicie, klient wyśle nowe pakiety z sekwencji 15001. Ale co z praktyką w implementacji stosu TCP, czy jest to to samo, co w teorii?
Myślę, że w buforze wysyłania TCP, gdy segment tcp jest wysyłany, segment pozostaje tam aż do potwierdzenia. Kiedy przychodzi ACK, bajty dla segmentu są usuwane z bufora. W buforze wysyłania znajduje się wskaźnik, gdy przychodzi potwierdzenie, wskaźnik wskazuje miejsce, w którym odpowiada parametr ack_seq. Bajty znajdujące się poniżej ack_seq są usuwane. W ten sposób cały segment nie musi być retransmitowany?