Fundamentals 11 min read

Why 65,535 Isn’t the Real Limit for TCP Connections on Linux

The article explains that the 65,535 TCP port limit does not bound a Linux server’s concurrent connections, detailing how TCP connections are identified, the theoretical maximum of 2⁴⁸ connections for a server, and the practical constraints imposed by memory and file‑descriptor limits.

Liangxu Linux
Liangxu Linux
Liangxu Linux
Why 65,535 Isn’t the Real Limit for TCP Connections on Linux

Understanding TCP Connection Limits

Many people assume that a Linux server can handle at most 65,535 concurrent TCP connections because the port number field is a 16‑bit unsigned integer. This article clarifies why that assumption is incorrect and what truly limits connection concurrency.

How a TCP Connection Is Identified

Linux uniquely identifies a TCP connection with a four‑tuple: {local IP, local port, remote IP, remote port}. This combination ensures that each connection can be distinguished from all others.

Maximum Client Connections

When a machine acts only as a client, the operating system assigns an unused local port for each outbound connection. Since ports range from 1 to 65,535 (port 0 is reserved), a pure client can open at most 65,535 simultaneous connections, each potentially to a different server.

Maximum Server Connections (Theoretical)

If a machine acts only as a server, the listening port is fixed, while the remote IP and remote port vary. Ignoring address classes, the theoretical maximum number of distinct four‑tuples is:

2³² (possible IPv4 addresses) × 2¹⁶ (possible remote ports) ≈ 2⁴⁸

connections.

Practical Limits in Real Environments

In practice, the number of concurrent connections is limited by system resources, especially memory and the maximum number of open file descriptors (each socket consumes a descriptor). By increasing RAM and raising the file‑descriptor limit, a single Linux server can comfortably support hundreds of thousands or even millions of concurrent TCP connections.

Port Reuse and Socket Multiplexing

Ports can be reused because the four‑tuple (or five‑tuple when protocol is considered) distinguishes connections. A single listening port can accept many connections, each represented by a new socket with its own unique remote IP/port pair. This is why a web server listening on port 80 can serve millions of users simultaneously.

Conclusion

The 65,535 figure only reflects the number of distinct local ports available, not the total concurrent TCP connections a server can handle. Real‑world concurrency depends on memory, file‑descriptor limits, and the ability to reuse ports, allowing servers to exceed the 65,535‑connection myth.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

concurrencyTCPLinuxSocketport
Liangxu Linux
Written by

Liangxu Linux

Liangxu, a self‑taught IT professional now working as a Linux development engineer at a Fortune 500 multinational, shares extensive Linux knowledge—fundamentals, applications, tools, plus Git, databases, Raspberry Pi, etc. (Reply “Linux” to receive essential resources.)

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.