search
HomeSystem TutorialLINUXAnalysis of the maximum number of concurrent TCP connections and identification methods for a single machine in network programming

网络编程中单机最大并发 TCP 连接数及标识方式解析

Network programming In tcp applications, the server eavesdrops on a fixed port in advance, the client actively initiates a connection, and a tcp connection is established after a three-way handshake. What is the maximum number of concurrent TCP connections for a single machine?

How to mark a TCP connection. Before determining the maximum number of connections, let’s first take a look at how the system marks a TCP connection. The system uses a 4-tuple to uniquely identify a TCP connection: {localip, localport, remoteip, remoteport}.

Maximum number of tcp connections by client. Each time a client initiates a tcp connection request, unless the port is bound, the system will generally select an idle local port (localport). This port is exclusive and cannot be shared with other tcp connections. The data type of the TCP port is unsignedshort, so the maximum number of local ports is only 65536 on the Linux server system. Port 0 has a special meaning and cannot be used. Therefore, the maximum number of available ports is 65535. Therefore, when all are used as clients, the maximum number of TCP connections is 65535. , this connection can be connected to different serverip.

Maximum number of tcp connections for the server. The server is usually fixed on a local port and listens, waiting for the client's connection request. Without considering address reuse (the SO_REUSEADDR option of Unix), although there are multiple IPs on the server side, the local eavesdropping port is also exclusive. Therefore, there are only remoteip (that is, clientip) and remoteport (client) in the 4-tuple of the server-side tcp connection. port) is variable, so the maximum TCP connection is the number of client IP × the number of client ports. For IPV4, regardless of factors such as IP address classification and Linux software, the maximum number of TCP connections is approximately 2 to the 32nd power (number of IPs) ×2 to the 16th power (number of ports) Linux tcp connection limit , that is, the maximum number of tcp connections on a single server side is approximately 2 to the 48th power.

How many concurrent TCP connections can be on such a single server

What is given above is the theoretical maximum number of connections for a single machine. In actual environments, it is limited by machine resources, operating systems, etc., especially on the server side, and its maximum number of concurrent TCP connections is far from reaching the theoretical upper limit. The main reasons for limiting the number of connections under Unix/Linux are video memory and the number of allowed file descriptors (each TCP connection occupies a certain amount of video memory, and each socket is a file descriptor). In addition, ports below 1024 are generally reserved. port. Under the default 2.6 kernel configuration, after testing, each socket occupies between 15 and 20k. The parameters that affect the memory occupied by a socket include: rmem_maxwmem_maxtcp_rmemtcp_wmemtcp_memgrepskbuff/proc/slabinfo. On the server side, by reducing the video memory and modifying the maximum number of file descriptors and other parameters, it is no problem for the maximum number of concurrent TCP connections on a single machine to exceed 100,000. The American UrbanAirship company In the production environment, 500,000 concurrent users have been achieved. In practical applications, for large-scale network applications, the C10K issue also needs to be considered.

linux tcp连接数限制_限制连接数量_限制连接数与限制网速的效果

Let’s explain the two common senses of file handle restrictions and port restrictions

Common sense 1: File handle restrictions

Colleagues who write network server programs under Linux must know that each TCP connection occupies a file descriptor. Once this file descriptor is used up, the error returned to us when a new connection is made is "Socket/File:Can 'topensemanyfiles'.

At this time, you need to understand the operating system's limit on the maximum number of files that can be opened.

linux tcp连接数限制_限制连接数与限制网速的效果_限制连接数量

Process Limitation

Executing ulimit-n outputs 1024, indicating that a process can only open up to 1024 files, so if you use this default configuration, you can concurrently run thousands of TCP connections at most.

Temporary changes: ulimit-n1000000, and these temporary changes are only valid for the current usage environment of the currently logged in user, and will become invalid after the system is restarted or the user logs out.

Changes that become invalid after restarting (but I tested it under CentOS6.5 and found no invalidity after restarting): Edit the /etc/security/limits.conf file, and the changed content is

linux tcp连接数限制_限制连接数与限制网速的效果_限制连接数量

*softnofile1000000

*hardnofile1000000

Permanent changes: edit /etc/rc.local and add the following content after it

ulimit-SHn1000000

Global restrictions

Executing cat/proc/sys/fs/file-nr outputs 93440592026, which are: 1. The number of allocated file handles, 2. The number of allocated but unused file handles, 3. The maximum number of file handles. But in the kernel2.6 version, the value of the second item is always 0. This is not an error. It actually means that all the allocated file descriptors have been used without any waste.

We can change this value to a larger value and use root privileges to change the /etc/sysctl.conf file:

fs.file-max=1000000

限制连接数与限制网速的效果_linux tcp连接数限制_限制连接数量

net.ipv4.ip_conntrack_max=1000000

filter.ip_conntrack_max=1000000

Common knowledge 2: Is the range of port number limited?

The lower-end banners of the operating system below 1024 are reserved by the system, and 1024-65535 are used by users. Because each TCP connection occupies a port number, we can have up to more than 60,000 concurrent connections. I think there are many students who have these wrong ideas, right? (I have always felt this way in the past)

Let’s analyze it

How to mark a TCP connection: The system uses a 4-tuple to uniquely mark a TCP connection: {localip, localport, remoteip, remoteport}. Well, let's take out the explanation of accept in Chapter 4 of "UNIX Network Programming: Volume 1" to take a look at the conceptual stuff. The second parameter cliaddr represents the client's IP address and port number. As a server, we actually only use this port during bind, which shows that the port number 65535 is not a limit on the amount of concurrency.

Maximum number of TCP connections to the server: The server is usually fixed on a local port and listens, waiting for the client's connection request. Without considering address reuse (the SO_REUSEADDR option of Unix), although there are multiple IPs on the server side, the local eavesdropping port is also exclusive. Therefore, there are only remoteip (that is, clientip) and remoteport (client) in the 4-tuple of the server-side tcp connection. port) is variable, so the maximum tcp connection is the number of client ip × the number of client ports. For IPV4, regardless of incentives such as IP address classificationLinux tcp connection number limit, the maximum number of tcp connections is about 2 times 32 times Power (number of IPs) × 2 raised to the 16th power (number of ports), that is, the maximum number of TCP connections on a single machine on the server side is approximately 2 raised to the 48th power.

The above is the detailed content of Analysis of the maximum number of concurrent TCP connections and identification methods for a single machine in network programming. For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Does the internet run on Linux?Does the internet run on Linux?Apr 14, 2025 am 12:03 AM

The Internet does not rely on a single operating system, but Linux plays an important role in it. Linux is widely used in servers and network devices and is popular for its stability, security and scalability.

What are Linux operations?What are Linux operations?Apr 13, 2025 am 12:20 AM

The core of the Linux operating system is its command line interface, which can perform various operations through the command line. 1. File and directory operations use ls, cd, mkdir, rm and other commands to manage files and directories. 2. User and permission management ensures system security and resource allocation through useradd, passwd, chmod and other commands. 3. Process management uses ps, kill and other commands to monitor and control system processes. 4. Network operations include ping, ifconfig, ssh and other commands to configure and manage network connections. 5. System monitoring and maintenance use commands such as top, df, du to understand the system's operating status and resource usage.

Boost Productivity with Custom Command Shortcuts Using Linux AliasesBoost Productivity with Custom Command Shortcuts Using Linux AliasesApr 12, 2025 am 11:43 AM

Introduction Linux is a powerful operating system favored by developers, system administrators, and power users due to its flexibility and efficiency. However, frequently using long and complex commands can be tedious and er

What is Linux actually good for?What is Linux actually good for?Apr 12, 2025 am 12:20 AM

Linux is suitable for servers, development environments, and embedded systems. 1. As a server operating system, Linux is stable and efficient, and is often used to deploy high-concurrency applications. 2. As a development environment, Linux provides efficient command line tools and package management systems to improve development efficiency. 3. In embedded systems, Linux is lightweight and customizable, suitable for environments with limited resources.

Essential Tools and Frameworks for Mastering Ethical Hacking on LinuxEssential Tools and Frameworks for Mastering Ethical Hacking on LinuxApr 11, 2025 am 09:11 AM

Introduction: Securing the Digital Frontier with Linux-Based Ethical Hacking In our increasingly interconnected world, cybersecurity is paramount. Ethical hacking and penetration testing are vital for proactively identifying and mitigating vulnerabi

How to learn Linux basics?How to learn Linux basics?Apr 10, 2025 am 09:32 AM

The methods for basic Linux learning from scratch include: 1. Understand the file system and command line interface, 2. Master basic commands such as ls, cd, mkdir, 3. Learn file operations, such as creating and editing files, 4. Explore advanced usage such as pipelines and grep commands, 5. Master debugging skills and performance optimization, 6. Continuously improve skills through practice and exploration.

What is the most use of Linux?What is the most use of Linux?Apr 09, 2025 am 12:02 AM

Linux is widely used in servers, embedded systems and desktop environments. 1) In the server field, Linux has become an ideal choice for hosting websites, databases and applications due to its stability and security. 2) In embedded systems, Linux is popular for its high customization and efficiency. 3) In the desktop environment, Linux provides a variety of desktop environments to meet the needs of different users.

What are the disadvantages of Linux?What are the disadvantages of Linux?Apr 08, 2025 am 12:01 AM

The disadvantages of Linux include user experience, software compatibility, hardware support, and learning curve. 1. The user experience is not as friendly as Windows or macOS, and it relies on the command line interface. 2. The software compatibility is not as good as other systems and lacks native versions of many commercial software. 3. Hardware support is not as comprehensive as Windows, and drivers may be compiled manually. 4. The learning curve is steep, and mastering command line operations requires time and patience.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function