Bird
Raised Fist0
Interview Prepcomputer-networksmediumGoogleAmazonFlipkartZepto

TCP Sequence Numbers, ACKs & Retransmission (RTO)

Choose your preparation mode2 modes available
Steps
setup

Client sends SYN to initiate connection

The client sends a SYN packet to the server to start the TCP three-way handshake. This packet has an initial sequence number (seq=1000).

💡 This step establishes the start of a TCP connection and sets the initial sequence number for tracking data.
Line:send_packet(src='client', dst='server', seq=1000, flags=['SYN'])
💡 TCP connections begin with a SYN packet to synchronize sequence numbers.
📊
TCP Sequence Numbers, ACKs & Retransmission (RTO) - Watch the Algorithm Execute, Step by Step
Watching this step-by-step visualization helps you understand how TCP manages sequence numbers and acknowledgments to guarantee data delivery, and how retransmission works when packets are lost or delayed.
Step 1/10
·Active fillAnswer cell
Client sends SYN to initiate connection and set initial sequence number
Hop: 1
Client
Server
📦Packet
fromclient
toserver
🔌 protocolTCP
🚩 flagsSYN
src10.0.0.1:50000
dst10.0.0.2:80
flagsSYN
SYN: client→server (seq=1000)
Server replies with SYN-ACK to acknowledge client's SYN and send its own sequence number
Hop: 2
Client
Server
📦Packet
fromserver
toclient
🔌 protocolTCP
🚩 flagsSYN, ACK
src10.0.0.2:80
dst10.0.0.1:50000
flagsSYN, ACK
SYN: client→server (seq=1000)
SYN-ACK: server→client (seq=3000, ack=1001)
Client sends ACK to complete handshake and confirm server's sequence number
Hop: 3
Client
Server
📦Packet
fromclient
toserver
🔌 protocolTCP
🚩 flagsACK
src10.0.0.1:50000
dst10.0.0.2:80
flagsACK
SYN: client→server (seq=1000)
SYN-ACK: server→client (seq=3000, ack=1001)
ACK: client→server (seq=1001, ack=3001)
Client sends first data packet with sequence number 1001
Hop: 4
Client
Server
📦Packet
fromclient
toserver
📄 payloadHello
🔌 protocolTCP
🚩 flags
src10.0.0.1:50000
dst10.0.0.2:80
dataHello
SYN-ACK: server→client (seq=3000, ack=1001)
ACK: client→server (seq=1001, ack=3001)
DATA: client→server (seq=1001, data='Hello')
Server acknowledges receipt of 5 bytes, expecting next byte 1006
Hop: 5
Client
Server
📦Packet
fromserver
toclient
🔌 protocolTCP
🚩 flagsACK
src10.0.0.2:80
dst10.0.0.1:50000
flagsACK
ACK: client→server (seq=1001, ack=3001)
DATA: client→server (seq=1001, data='Hello')
ACK: server→client (seq=3001, ack=1006)
Client sends second data packet with sequence number 1006
Hop: 6
Client
Server
📦Packet
fromclient
toserver
📄 payloadWorld
🔌 protocolTCP
🚩 flags
src10.0.0.1:50000
dst10.0.0.2:80
dataWorld
DATA: client→server (seq=1001, data='Hello')
ACK: server→client (seq=3001, ack=1006)
DATA: client→server (seq=1006, data='World')
Second data packet lost; client waits for ACK but none arrives
Hop: 7
Client
Server
ACK: server→client (seq=3001, ack=1006)
DATA: client→server (seq=1006, data='World')
Packet lost: DATA seq=1006
Client retransmits lost packet after timeout (RTO)
Hop: 8
Client
Server
📦Packet
fromclient
toserver
📄 payloadWorld
🔌 protocolTCP
🚩 flagsRTO
src10.0.0.1:50000
dst10.0.0.2:80
dataWorld
flagsRTO
DATA: client→server (seq=1006, data='World')
Packet lost: DATA seq=1006
RTO Retransmit: client→server (seq=1006, data='World')
Server acknowledges receipt of retransmitted data up to byte 1010
Hop: 9
Client
Server
📦Packet
fromserver
toclient
🔌 protocolTCP
🚩 flagsACK
src10.0.0.2:80
dst10.0.0.1:50000
flagsACK
Packet lost: DATA seq=1006
RTO Retransmit: client→server (seq=1006, data='World')
ACK: server→client (seq=3001, ack=1011)
Client receives final ACK confirming all data received
Hop: 10
Client
Server
📦Packet
fromserver
toclient
🔌 protocolTCP
🚩 flagsACK
src10.0.0.1:50000
dst10.0.0.2:80
flagsACK
RTO Retransmit: client→server (seq=1006, data='World')
ACK: server→client (seq=3001, ack=1011)
ACK received: client confirms all data received

Key Takeaways

TCP uses sequence numbers and ACKs to track data sent and received, ensuring reliable delivery.

This insight is hard to see from code alone because sequence and ACK numbers are abstract counters; visualization shows their flow and updates clearly.

Retransmission timeout (RTO) triggers resending lost packets automatically to recover from packet loss.

Plain English explanation: when an ACK is not received in time, TCP resends the missing data to guarantee delivery.

The three-way handshake synchronizes sequence numbers between client and server before data transfer begins.

Seeing the SYN, SYN-ACK, and ACK packets in sequence clarifies how TCP establishes connection state.