TCP·Lesson 2 of 13
Features of TCP
What Makes TCP, TCP
TCP (Transmission Control Protocol) is defined by a small set of features that all work together to give applications a dependable connection. If you understand these features, you understand TCP. We'll take them one at a time, in plain language, before seeing how they fit together.
How to remember them
Think of TCP as a connection-oriented, reliable, ordered, full-duplex, byte-stream protocol that also does flow control and congestion control between exactly two endpoints. That single sentence names every feature in this lesson.
A signed-for courier service
Picture a premium courier: you arrange the delivery in advance, every parcel is numbered so they can be put back in order, the recipient signs for each one, and anything lost gets re-sent. The courier even slows down if the recipient's doorstep is piling up. That bundle of careful, confirmed handling is exactly the set of promises TCP makes.
Connection-Oriented
Before sending any real data, the two sides first set up a using a short exchange called a handshake. It's like dialing a phone and waiting for the other person to pick up and say 'hello' before you start talking. This setup step lets both sides agree on starting values and confirm the other is ready and reachable.
Reliable and Ordered
This is TCP's headline feature. means no data is lost for good: the receiver confirms what it got with an acknowledgment, and anything that isn't confirmed in time is sent again. means the data comes out in the same sequence it went in — because packets can travel different routes and arrive jumbled, TCP numbers everything and reassembles it in the right order before handing it to the application.
Full-Duplex and Byte-Stream
Full-duplex
A TCP connection is , meaning data can flow in both directions at the same time. Both sides can send and receive at once, like a phone call where both people can talk and listen simultaneously — not a walkie-talkie where only one person speaks at a time.
Byte-stream oriented
TCP treats your data as one continuous , not as separate messages. It numbers every single byte and decides on its own how to slice the stream into segments for sending. The important consequence: TCP does not preserve message boundaries. If you send 'HELLO' and then 'WORLD', the other side might read 'HELLOWORLD' in one go, or 'HEL' then 'LOWORLD' — the bytes are correct and in order, but where one send ended and the next began is not marked.
Flow Control and Congestion Control
TCP also paces itself in two different ways. stops a fast sender from overwhelming a slow receiver — the receiver constantly tells the sender how much room it has left. stops senders from overloading the network in the middle — TCP slows down when it detects the network is getting jammed. They sound similar but protect different things: one protects the receiver, the other protects the network.
Point-to-Point
Each TCP connection joins exactly two endpoints — one sender and one receiver at each end. This is called (or unicast). TCP cannot send to many receivers at once the way a broadcast can; if a server needs to talk to a thousand clients, it opens a thousand separate TCP connections.
Pulling it together, here's each feature and what it actually means for the application using TCP:
| Feature | What it means for you |
|---|---|
| Connection-oriented | A handshake sets things up before any data is sent |
| Reliable | Nothing is lost for good — missing data is re-sent |
| Ordered | Bytes arrive in the exact order they were sent |
| Error-checked | Corrupted data is detected and thrown away |
| Full-duplex | Both sides can send and receive at the same time |
| Byte-stream | Data is a continuous stream, with no message boundaries |
| Flow control | The sender never overwhelms the receiver |
| Congestion control | The sender eases off when the network is busy |
| Point-to-point | Exactly two endpoints per connection |
“"If I send two separate messages over TCP, the other side receives them as two separate messages."”
Q:Which features of TCP make it 'reliable', and how is that different from flow control?
A: Reliability comes from sequence numbers, acknowledgments, checksums, and retransmission: every byte is numbered, the receiver confirms what it got, corrupted data is detected, and anything unconfirmed is re-sent in the correct order. Flow control is separate — it's about pacing, not correctness. It matches the sender's speed to the receiver's available buffer space so data isn't dropped from overflow. Reliability guarantees the data is right; flow control keeps the receiver from being swamped.
Quick Revision Cheat Sheet
Connection-oriented: Handshake before data
Reliable: Lost data is retransmitted
Ordered: Bytes delivered in sequence
Full-duplex: Both directions at once
Byte-stream: No message boundaries preserved
Flow control: Protects the receiver
Congestion control: Protects the network
Point-to-point: Exactly two endpoints