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.

1001→10031001\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