Omi*_*var 35 networking operating-systems
网络中的每个系统都有65536 个端口,每个连接或发送/接收都将使用其中之一。
我的问题是:如果我们有 65536+1 个连接会发生什么?!
我知道它不会以正常方式发生,但我很想知道操作系统如何处理它。
Spi*_*iff 60
请注意,一个系统可以处理超过65536个并发连接,因为他们并不一定每次使用一个单独的端口。
TCP 连接或 UDP 流由 4 元组定义:
(source IP address, source port, destination IP address, destination port)
Run Code Online (Sandbox Code Playgroud)
因此,即使您有一台只有一个 IP 地址的 Web 服务器机器和一个仅侦听端口 80 的 HTTP 服务器软件包,理论上它可以处理每个连接到它的客户端 IP 地址的65536 个连接。所以来自客户端 IP 地址 1 的 64Ki 连接,加上来自客户端 IP 地址 2 的 64Ki 连接,等等。
因此,这些协议大致支持到单个 IPv4 地址上的单个 TCP 或 UDP 端口的2 48 个连接/流。将 TCP 和 UDP 一起考虑,以及 IPv4 的地址空间和 IPv6 巨大/可笑的大地址空间,您可以看到协议本身不太可能成为主机并发连接数限制的来源可以处理。
类似地,TCP 或 UDP 协议中没有任何内容可以阻止客户端计算机使用单个 IP 地址上的单个源端口与不同的服务器地址和端口建立多个传出连接。有时给定操作系统的网络 API 可能不会使这变得容易,但重要的是要记住,例如,古老的“[BSD] 套接字”API 只是 TCP 和 UDP 的一个 API。TCP 和 UDP 可能具有传统 Sockets API 未公开的功能。
因此,给定主机可以处理的并发 TCP 连接或 UDP 流的数量不仅受端口号的限制,还受系统资源(例如 RAM 空间和 CPU 时间)的限制,用于跟踪所有这些连接并为它们提供服务。此外,操作系统的特定于实现的细节可以强加人为的限制。例如,在 Unix“一切都是文件”的理念中,每个 TCP 连接或 UDP 流可能都有一个文件描述符。如果您的 Unix 内核对其可以跟踪的文件描述符数量有限制,则该文件描述符限制是对内核可以处理的并发 TCP 连接或 UDP 流数量的人为限制。
| 归档时间: |
|
| 查看次数: |
3054 次 |
| 最近记录: |