诚然,这是一个简单的问题,但20分钟的谷歌search,我只是无法find答案…我会用一个例子框架我的问题。
说我自己www.reallypopular.com和我的网站看到每秒100 GET请求。 也可以说我的服务器响应GET请求的平均时间是1秒(为了举例,只是假定一些服务器端处理)。我对端口的理解会说,第一个与我的服务器联系的客户端会阻塞从连接到端口80的其他人1秒钟。 遵循这个逻辑,实际上只有1%的用户会被实际响应,其余的将会得到“端口繁忙”或“不响应”或者这样的错误。
显然我错过了一些东西,因为这显然不是发生了什么事情,所以不是提出我的理论,为什么我会喜欢它,如果有人能够让我直接在这里或指向我的东西,我可以读清楚这一点。 非常感谢。
答案可以在这个维基百科文章中find:
实现公共服务的应用程序通常使用特定的保留的已知端口号来接收来自客户端主机的服务请求。 这个过程被称为监听,包括在知名端口上接收请求,并在另一个私有端口上重新build立一对一的服务器 – 客户端通信 ,以便其他客户端也可以联系知名服务端口。
另外,从这篇关于维基百科上的伯克利套接字的文章。
当一个应用程序正在侦听来自其他主机的面向stream的连接时,它将被通知这样的事件(参见select()函数),并且必须使用accept()函数初始化连接。 Accept() 为每个连接创build一个新的套接字,并从监听队列中删除连接。
TCP不能这样工作。 从另一个系统到端口的连接并不意味着该端口不能接收其他连接。 从关于TCP的维基百科文章 :
到达TCP数据包通过其套接字被识别为属于特定的TCP连接,即,源主机地址,源端口,目的地主机地址和目的地端口的组合。