3 回答
TA贡献2037条经验 获得超6个赞
一个服务器套接字监听在一个端口上。该服务器上的所有建立的客户端连接与同一侦听端口相关联在服务器端的连接。客户端和服务器端IP /端口对的组合唯一标识已建立的连接。只要同一服务器上的多个连接与不同的客户端 IP /端口对关联,它们就可以共享相同的服务器端 IP /端口对,并且该服务器将能够处理可用系统资源允许的尽可能多的客户端至。
在客户端上,新的出站连接通常使用随机的客户端端口,在这种情况下,如果您在短时间内建立大量连接,则可能会耗尽可用端口。
TA贡献1779条经验 获得超6个赞
从理论上讲,是的。练习,不行。大多数内核(包括linux)不允许您bind()
使用已经分配的端口。允许这样做不是一个很大的补丁。
从概念上讲,我们应该区分socket和port。套接字是双向通信端点,即我们可以发送和接收字节的“事物”。这是一个概念性的事情,在名为“ socket”的数据包头中没有这样的字段。
端口是能够识别套接字的标识符。对于TCP,端口是16位整数,但是还有其他协议(例如,在unix套接字上,“端口”本质上是字符串)。
主要问题如下:如果传入数据包到达,则内核可以通过其目标端口号识别其套接字。这是最常见的方式,但不是唯一的可能性:
套接字可以通过传入数据包的目标IP进行标识。例如,如果我们有一台服务器同时使用两个IP,就是这种情况。然后,我们可以在相同的端口上但在不同的IP上运行不同的Web服务器。
套接字也可以通过其源端口和ip 进行标识。在许多负载平衡配置中就是这种情况。
因为您正在使用应用程序服务器,所以它将能够做到这一点。
- 3 回答
- 0 关注
- 1928 浏览
相关问题推荐
添加回答
举报