Acknowledgments are arithmetic over sequence numbers. This lesson uses the same timeline twice to show that each SYN is acknowledged as one past the sender's sequence number.

highlighted = computed this step

Why acknowledgments point forward

An acknowledgment names the next sequence number expected from the other side. For the SYN segments in this book, that means one past the peer sequence number.

advance=1\text{advance}=1
Anchor ACK ruleA TCP handshake timeline recomputed from exact sequence and acknowledgment numbers.Anchor ACK ruleClientCLOSEDSYN-SENTESTABLISHEDServerLISTENSYN-RECEIVEDESTABLISHEDSYN seq=1000 SYNSYN-ACK seq=3000 ack=1001 SYN, ACKACK seq=1001 ack=3001 ACK

Server acknowledges the client

The client SYN used 1000, so the server's acknowledgment is 1001.

1000+1=10011000+1=1001
Anchor ACK ruleA TCP handshake timeline recomputed from exact sequence and acknowledgment numbers.Anchor ACK ruleClientCLOSEDSYN-SENTESTABLISHEDServerLISTENSYN-RECEIVEDESTABLISHEDSYN seq=1000 SYNSYN-ACK seq=3000 ack=1001 SYN, ACKACK seq=1001 ack=3001 ACK

Client acknowledges the server

The server SYN used 3000, so the client answers with acknowledgment 3001.

3000+1=30013000+1=3001
Anchor ACK ruleA TCP handshake timeline recomputed from exact sequence and acknowledgment numbers.Anchor ACK ruleClientCLOSEDSYN-SENTESTABLISHEDServerLISTENSYN-RECEIVEDESTABLISHEDSYN seq=1000 SYNSYN-ACK seq=3000 ack=1001 SYN, ACKACK seq=1001 ack=3001 ACK

Decode it again

With client starting number 5000 and server starting number 9000, the acknowledgments become 5001 and 9001.

5000+1=5001,9000+1=90015000+1=5001,\quad9000+1=9001
Second ACK ruleA TCP handshake timeline recomputed from exact sequence and acknowledgment numbers.Second ACK ruleClientCLOSEDSYN-SENTESTABLISHEDServerLISTENSYN-RECEIVEDESTABLISHEDSYN seq=5000 SYNSYN-ACK seq=9000 ack=5001 SYN, ACKACK seq=5001 ack=9001 ACK

Summary

The ACK rule is local and exact: acknowledge one past the SYN sequence number being answered. Connection setup ordering and exact sequence numbers only; timing, retransmission, and round-trip time are not modeled here.

acks=5001,9001\text{acks}=5001,9001
Second ACK ruleA TCP handshake timeline recomputed from exact sequence and acknowledgment numbers.Second ACK ruleClientCLOSEDSYN-SENTESTABLISHEDServerLISTENSYN-RECEIVEDESTABLISHEDSYN seq=5000 SYNSYN-ACK seq=9000 ack=5001 SYN, ACKACK seq=5001 ack=9001 ACK