TCP·Lesson 2 of 13

Features of TCP

01

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.

02

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.

03

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.

04

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.

05

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.

06

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:

FeatureWhat it means for you
Connection-orientedA handshake sets things up before any data is sent
ReliableNothing is lost for good — missing data is re-sent
OrderedBytes arrive in the exact order they were sent
Error-checkedCorrupted data is detected and thrown away
Full-duplexBoth sides can send and receive at the same time
Byte-streamData is a continuous stream, with no message boundaries
Flow controlThe sender never overwhelms the receiver
Congestion controlThe sender eases off when the network is busy
Point-to-pointExactly two endpoints per connection
🚫

"If I send two separate messages over TCP, the other side receives them as two separate messages."

TCP is a byte stream, not a message service. It does not preserve the boundaries between your writes. Two sends can arrive merged into one read, or split across several reads. The bytes are always correct and in order, but if your application needs to know where one message ends and the next begins, you must add that structure yourself (for example, a length prefix or a delimiter).

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