Transmission Control Protocol
ActiveConnection-oriented transport protocol providing reliable, ordered, error-checked delivery of data between applications over IP networks.
In one line
TCP is the internet's primary transport protocol, providing reliable byte-stream delivery between applications. Defined in RFC 9293, it establishes connections via a three-way handshake, guarantees ordered delivery through sequence numbers, implements flow control with sliding windows, and handles congestion through algorithms like slow start and congestion avoidance. TCP operates at Layer 4 and carries HTTP, SSH, SMTP, and most application-layer protocols.
Quick Reference
| Field | Size | Description |
|---|---|---|
| Source Port | 16 bits | Sender's port number (0–65535) |
| Destination Port | 16 bits | Receiver's port number |
| Sequence Number | 32 bits | Position of first data byte in this segment |
| Acknowledgment | 32 bits | Next sequence number expected from sender |
| Data Offset | 4 bits | Size of TCP header in 32-bit words |
| Flags | 9 bits | SYN, ACK, FIN, RST, PSH, URG, ECE, CWR, NS |
| Window Size | 16 bits | Receive window size for flow control |
| Checksum | 16 bits | Error detection for header + data |
| Urgent Pointer | 16 bits | Offset of urgent data (if URG flag set) |
Key Characteristics
Connection-oriented
Three-way handshake (SYN → SYN-ACK → ACK) before data transfer.
Reliable
Guarantees delivery via acknowledgments and retransmission.
Ordered
Sequence numbers ensure bytes arrive in the correct order.
Flow Controlled
Sliding window prevents sender from overwhelming receiver.
Message Format
TCP Three-Way Handshake:
Client → Server: SYN, Seq=0
Server → Client: SYN-ACK, Seq=0, Ack=1
Client → Server: ACK, Seq=1, Ack=1
[Connection established – data transfer begins]TCP Connection Teardown:
Client → Server: FIN, Seq=100, Ack=200 Server → Client: ACK, Seq=200, Ack=101
Server → Client: FIN, Seq=200, Ack=101
Client → Server: ACK, Seq=101, Ack=201
[Connection closed]