bir tcp istemcisi sıra numarası 10000 ile 20000 arasında olan bir paketi bir tcp sunucusuna gönderirse. tcp, seq_ack 20001 ile bir ACK ile yanıt verecektir.
TCP paketini istemciden kesersem ve paketi biri 10000'den 15000'e kadar diğeri 15001'den 20000'e kadar olan 2 tcp segmentine böldüm. Ve sonra bu 2 TCP segmenti TCP sunucusuna gönderilir. İkinci segmentin yolda kaybolduğunu varsayın. TCP sunucusu bir ACK'ya seq_ack 15001 ile yanıt verecektir.
Şimdi TCP istemcisi, seq 10000 ila 20000 ile ayrılmaz bir paket gönderdiğinden, ancak müşterinin bakış açısından 15001 ile bir ACK alır, bu garip. Nasıl tepki verecek? Teoride, müşteri baytları seq 15001'den 20000'e yeniden iletmelidir, yani istemci seq 15001'den yeni paketler iletecektir. Ama TCP yığın uygulamasında, teoride olduğu gibi uygulama nasıl?
TCP gönderme arabelleğinde, bir tcp segmenti gönderildiğinde, segment ACK'ya kadar hala orada kalır. ACK geldiğinde, segment için bu baytlar tampondan temizlenir. Gönderme arabelleğinde bir işaretçi vardır, bir ACK geldiğinde işaretçi ack_seq değerinin karşılık geldiği konumu gösterir. Ack_seq öğesinin altındaki baytlar temizlenir. Bu şekilde, tüm segmentin yeniden iletilmesine gerek yok mu?