不可否认,这是一个简单的问题,但我谷歌搜索了 20 分钟,就是找不到答案......我将用一个例子来阐述我的问题。
假设我拥有 www.reallypopular.com,我的网站每秒收到 100 个 GET 请求。另外假设我的服务器响应该 GET 请求的平均时间为 1 秒(为了便于举例,假设服务器端进行了一些处理。)我对端口的理解是,第一个联系我的服务器的客户端会阻止其他任何人连接到端口 80 1 秒。按照这种逻辑,实际上只有 1% 的用户会得到响应,其余用户会收到“端口繁忙”或“无响应”或类似的错误。
显然我忽略了一些东西,因为这显然不是正在发生的事情,所以除了提出我的理论来解释为什么会这样,如果有人能在这里纠正我或者给我指出一些我可以阅读的东西来澄清这个问题,我会很高兴。非常感谢。
答案1
答案2
当客户端连接并且 TCP 服务器接受该连接时,新插座在服务器上创建用于与此客户端通信的套接字。原始监听套接字继续监听新请求,新套接字用于从特定客户端发送和接收。请注意,除了主监听套接字外,具有 N 个活动客户端的 TCP 服务器将为每个客户端提供 N 个可读/写的套接字。所有这些 N+1 个套接字都应该位于相同端口号(服务器的知名端口号),但它们在服务器代码内部具有不同的套接字文件描述符。
答案3
TCP 不是这样工作的。从另一个系统连接到某个端口并不意味着该端口不能接收其他连接。从维基百科关于 TCP 的文章:
到达的 TCP 数据包通过其套接字(即源主机地址、源端口、目标主机地址和目标端口的组合)来识别属于特定的 TCP 连接。