Apache 所有请求如何使用同一端口连接到web服务器?

Apache 所有请求如何使用同一端口连接到web服务器?,apache,tomcat,tcp,webserver,Apache,Tomcat,Tcp,Webserver,web服务器如何使用TCP连接的相同端口(80)为其客户机提供服务。对于UDP连接,我知道本质上没有连接,所以我们可以让多个客户端向同一端口发送数据包。如果我尝试在本地主机上使用一个已经使用的端口,我会得到BindException 我看到的一个解决方案是为每个连接启动一个线程,但是对于像google/yahoo这样的站点来说,如果每个服务器中的连接数超过100000,这难道不是很麻烦吗 web服务器对此问题采用了哪些解决方案?您只有一个用于侦听的端口,但连接有两个端口,每侧一个端口。这个par

web服务器如何使用TCP连接的相同端口(80)为其客户机提供服务。对于UDP连接,我知道本质上没有连接,所以我们可以让多个客户端向同一端口发送数据包。如果我尝试在本地主机上使用一个已经使用的端口,我会得到BindException

我看到的一个解决方案是为每个连接启动一个线程,但是对于像google/yahoo这样的站点来说,如果每个服务器中的连接数超过100000,这难道不是很麻烦吗


web服务器对此问题采用了哪些解决方案?

您只有一个用于侦听的端口,但连接有两个端口,每侧一个端口。这个pare必须是唯一的


所以,假设你连接到google.com的端口80,那么你的连接将在你的机器上有一些端口,比如说42312和google.com的端口80。您可以查看与netstat-a的连接。要获得一个较短的列表:netstat-一个| grep-builded“显示所有已建立的连接,而不将其IP解析为名称。

您只有一个用于侦听的端口,但一个连接有两个端口,每侧一个。此参数必须是唯一的


所以,假设你连接到google.com端口80,那么你的连接将在你的机器上有一些端口,比如说42312和google.com上的端口80。你可以看到你与netstat-a的连接。要获得一个较短的列表:netstat-an | grep-estended”,它显示所有已建立的连接,而不将其IP解析为名称。

AFAIK,这是Node.js这样的事件驱动服务器是一个重要原因。谷歌和雅虎也有大量的服务器,并在它们之间分散了大量的处理负载。Roger所说的也有道理,尽管我不能100%确定google在端口42312上的输出将如何准确地到达您的计算机端口80:P

AFAIK,这是Node.js等事件驱动服务器是一个重要原因。谷歌和雅虎也有大量的服务器,并在它们之间分散了大量的处理负载。Roger所说的也有道理,尽管我不能100%确定GoogleDoing在端口42312上的输出将如何准确地到达您的计算机的端口80:P服务器监听一个著名的端口(80),并在收到请求后将请求委托给工作套接字。这样它就可以满足下一个请求。您可以编写自己的简单服务器来了解发生了什么。Oracle站点有一个很好的示例代码。[1]

[1]

首先,它创建一个服务器套接字

ServerSocket ss = new ServerSocket(port);
然后它在指定端口上列出一个套接字,并在接受请求后创建一个新的套接字

Socket s = ss.accept();

如代码中所示,它有一个工作线程池,因此在给定时刻,您可以控制服务器在给定时间提供的请求数量。其他排队等候的人可能会被解雇

服务器侦听已知端口(80),并在收到请求后将请求委托给工作套接字。这样它就可以满足下一个请求。您可以编写自己的简单服务器来了解发生了什么。Oracle站点有一个很好的示例代码。[1]

[1]

首先,它创建一个服务器套接字

ServerSocket ss = new ServerSocket(port);
然后它在指定端口上列出一个套接字,并在接受请求后创建一个新的套接字

Socket s = ss.accept();

如代码中所示,它有一个工作线程池,因此在给定时刻,您可以控制服务器在给定时间提供的请求数量。其他排队等候的人可能会被解雇

所以你想在同一个端口上有很多UDP数据包?来自不同的客户?不。这只是与UDP的比较。我的主要问题是关于它是如何在TCP连接中完成的,所以您希望在同一端口上有很多UDP数据包?来自不同的客户?不。这只是与UDP的比较。我的主要问题是关于它是如何在TCP连接中完成的。我不认为我说过google会在42312端口上进行输出,它会到达客户端的80n端口。我说的正好相反。因此,我(作为客户机)将使用源端口42312、目标端口80发送数据包。谷歌(回复时)当然会发送源80和目标42312。啊,有道理,被误解了。我的错误。我不认为我说过谷歌会在42312端口上做输出,它会到达客户端的80n端口。我说的正好相反。因此,我(作为客户机)将使用源端口42312、目标端口80发送数据包。谷歌(回复时)当然会发送源80和目标42312。啊,有道理,被误解了。我的错误。