The server's reply carries its own starting sequence number and acknowledges the client's SYN. The acknowledgment is recomputed as one past the client's sequence number.

highlighted = computed this step

Why the reply carries two facts

The server's SYN-ACK both publishes the server's starting number and acknowledges the client's SYN. The acknowledgment is recomputed from the earlier client sequence number.

server ISN=3000\text{server ISN}=3000
SYN-ACK replyA TCP handshake timeline recomputed from exact sequence and acknowledgment numbers.SYN-ACK replyClientCLOSED to SYN-SENTSYN-SENTServerLISTENSYN-RECEIVEDSYN seq=1000 SYNSYN-ACK seq=3000 ack=1001 SYN, ACK

The first acknowledgment

The client sent sequence number 1000. Because SYN consumes 1 sequence number, the server acknowledges 1001.

1000+1=10011000+1=1001
SYN-ACK replyA TCP handshake timeline recomputed from exact sequence and acknowledgment numbers.SYN-ACK replyClientCLOSED to SYN-SENTSYN-SENTServerLISTENSYN-RECEIVEDSYN seq=1000 SYNSYN-ACK seq=3000 ack=1001 SYN, ACK

The server chooses its own start

The same segment also carries the server sequence number 3000, so the client can acknowledge the server next.

server seq=3000\text{server seq}=3000
SYN-ACK replyA TCP handshake timeline recomputed from exact sequence and acknowledgment numbers.SYN-ACK replyClientCLOSED to SYN-SENTSYN-SENTServerLISTENSYN-RECEIVEDSYN seq=1000 SYNSYN-ACK seq=3000 ack=1001 SYN, ACK

Summary

The second segment proves the client SYN was seen and exposes the server's starting sequence number. Connection setup ordering and exact sequence numbers only; timing, retransmission, and round-trip time are not modeled here.

ack=1001\text{ack}=1001
SYN-ACK replyA TCP handshake timeline recomputed from exact sequence and acknowledgment numbers.SYN-ACK replyClientCLOSED to SYN-SENTSYN-SENTServerLISTENSYN-RECEIVEDSYN seq=1000 SYNSYN-ACK seq=3000 ack=1001 SYN, ACK