Chr*_*ris 22 linux connection tcp tcpip
Linux 上每个 IP 地址是否有 65536 个打开的 TCP 连接的硬限制?我在某处读到过,但有人要求确认,我就是找不到。
我似乎记得文件描述符是一个 16 位整数,这以某种方式限制了它?
或者是这个 hokum,除了服务器有多强大之外,没有任何限制吗?
Ric*_*lka 35
您可能会考虑端口数量。在当前版本的 IPv4 中,TCP 中有 65536 个可用端口。这不仅仅是 Linux 的限制,它是协议的一部分。您的 IP 地址识别您的机器,端口识别您机器上的程序。
但是,连接数不受此限制。一个连接由 5 条信息组成,在 geek 中是 5 元组。它由协议(TCP、UDP)、本地IP地址和端口、远程IP地址和端口决定。所以,拿一个网络服务器。它可以在同一个端口(很可能是 80)上为多个连接提供服务。您的网络服务器甚至可以支持到同一台客户端机器的多个连接。假设您从两个窗口连接到 google.com。您的机器将为每个连接选择一个未使用的端口。因此,google 的服务器必须跟踪 (TCP, google.com, 80, yourmachine, someport1) 和 (TCP, google.com, 80, yourmachine, someport2)。在某些时候,您会遇到限制,但这不是硬限制,并且非常依赖于系统。
是的,每个套接字都是一个文件描述符,但并非所有机器都对 fd 表使用 shorts。在我的系统上,一个根本没有调整过的系统cat /proc/sys/fs/file-max给出了 323997。如果需要,我相信我可以提升它。
因此,有 65336 的限制,但它与寻址有关,而不是连接数。连接数是有限的,但更多取决于系统配置,以及它有多少内存。