After the missing bytes arrive, the ACK advances by the payload length.

highlighted = computed this step

Now the ACK can advance

After the retransmitted payload arrives, the ACK advances from 1001 to 1003.

100110031001\to1003
Final ACK bytesThe final ACK header advances after the retransmitted payload arrives.Final ACK header160 bits / 20 bytes0x01bb9c4000001389000003eb5010100000000000byte 0byte 1byte 2byte 300000001101110111001110001000000byte 4byte 5byte 6byte 700000000000000000001001110001001byte 8byte 9byte 10byte 1100000000000000000000001111101011byte 12byte 13byte 14byte 1501010000000100000001000000000000byte 16byte 17byte 18byte 1900000000000000000000000000000000source-port443destination-port40000sequence-number5001acknowledgment-number1003data-offset5reserved0x0flags0x10window0x1000checksum0x0000urgent-pointer0

Start plus length

The data starts at 1001 and has length 2 bytes.

1001+2=10031001+2=1003
Final ACK bytesThe final ACK header advances after the retransmitted payload arrives.Final ACK header160 bits / 20 bytes0x01bb9c4000001389000003eb5010100000000000byte 0byte 1byte 2byte 300000001101110111001110001000000byte 4byte 5byte 6byte 700000000000000000001001110001001byte 8byte 9byte 10byte 1100000000000000000000001111101011byte 12byte 13byte 14byte 1501010000000100000001000000000000byte 16byte 17byte 18byte 1900000000000000000000000000000000source-port443destination-port40000sequence-number5001acknowledgment-number1003data-offset5reserved0x0flags0x10window0x1000checksum0x0000urgent-pointer0

Timeline shows the final ACK

The final ACK is the first server message here that asks for the byte after the two-byte payload.

final ACK=1003\text{final ACK}=1003
ACK advancesA toy TCP timeline shows the retransmit followed by the ACK that advances.ACK advancesClientESTABLISHEDESTABLISHEDESTABLISHEDESTABLISHEDServerwaitingwaitingreceivedreceivedDATA hi lost seq=1001 ACK, PSHduplicate ACK seq=5001 ACKDATA hi again seq=1001 ACK, PSHACK advances seq=5001 ACK

Summary

Once the missing bytes arrive, the receiver can ask for the next byte after them.

next wanted=1003\text{next wanted}=1003
Final ACK bytesThe final ACK header advances after the retransmitted payload arrives.Final ACK header160 bits / 20 bytes0x01bb9c4000001389000003eb5010100000000000byte 0byte 1byte 2byte 300000001101110111001110001000000byte 4byte 5byte 6byte 700000000000000000001001110001001byte 8byte 9byte 10byte 1100000000000000000000001111101011byte 12byte 13byte 14byte 1501010000000100000001000000000000byte 16byte 17byte 18byte 1900000000000000000000000000000000source-port443destination-port40000sequence-number5001acknowledgment-number1003data-offset5reserved0x0flags0x10window0x1000checksum0x0000urgent-pointer0