Bandwidth, Latency, and Throughput Explained

“My internet is slow.” Could be any of three different problems. Mixing up bandwidth, latency, and throughput is the most common mistake in network discussions. Let’s fix that.

Bandwidth: capacity

Bandwidth is the maximum data rate the link can theoretically carry. Measured in bits per second (bps): Mbps, Gbps.

Think of bandwidth as the width of a highway. A 1 Gbps connection can move up to 1 billion bits per second. Doesn’t mean it always does.

# Test bandwidth
speedtest-cli           # CLI tool
iperf3 -c server.com    # more accurate, server-to-server

Latency: delay

Latency is the time for one packet to travel from A to B. Measured in milliseconds (ms).

RTT (round-trip time) is what ping reports — out and back.

ping -c 5 google.com
# 64 bytes from ... time=12.3 ms
# Latency from you to Google: ~6 ms each way

Latency depends on distance, hops, and processing time. Speed of light in fiber gives you a hard floor: ~5 ms per 1000 km.

Throughput: what you actually get

Throughput is the actual data rate you experience, accounting for protocol overhead, packet loss, congestion, and the receiver’s processing speed.

Throughput is always ≤ bandwidth. Often much less.

Why fast bandwidth still feels slow

You can have 1 Gbps bandwidth and a website still loads slowly. Reasons:

  • High latency — your TCP handshake, TLS handshake, and HTTP roundtrips each cost RTT × number of trips. 200 ms RTT × 4 roundtrips = 800 ms before the first byte renders.
  • Server-side delays — slow database queries, slow rendering. The link is fine; the server is slow.
  • Packet loss — TCP must retransmit, halving throughput briefly each time.
  • TCP window size limits — at high bandwidth × latency products, default windows can’t fill the pipe.

The bandwidth-delay product

This is how much data is “in flight” at any moment.

BDP = bandwidth × RTT

Example:
1 Gbps × 100 ms RTT = 100,000,000 × 0.1 = 10 MB

→ You need a TCP window of 10 MB to fully utilize this link.
→ Default window is much smaller, so without tuning, you cap throughput.

How to debug “slow internet”

Diagnose which of the three is the issue:

  1. Run speedtest — what’s your actual bandwidth vs what your ISP promised?
  2. ping — what’s your latency to common targets (8.8.8.8, the website you’re loading)?
  3. traceroute — where in the path does latency spike?
  4. Try different sites — if Sudoflare loads fast but Reddit doesn’t, the problem isn’t your local connection.

What to learn next

How IPv4 addresses actually work — the addressing system everyone uses but few really understand.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *