Apache Web服务器是否使用一个端口为所有请求提供服务?
如果Web服务器在端口80上处理流量,则每个客户端必须在其自身和该端口上的服务器之间建立连接。假设客户机维护连接,服务器如何能够并行地为其他客户机提供服务Apache Web服务器是否使用一个端口为所有请求提供服务?,apache,http,webserver,Apache,Http,Webserver,如果Web服务器在端口80上处理流量,则每个客户端必须在其自身和该端口上的服务器之间建立连接。假设客户机维护连接,服务器如何能够并行地为其他客户机提供服务 服务器是否在请求后立即终止与客户端的连接?或者Web服务器是否会动态生成新端口供客户端使用,以便端口80可供新连接使用?端口是通信通道的一端 服务器初始值设置了一个侦听端口(HTTPS服务器为80)。客户端创建一个端口(操作系统将为此端口分配一个随机的可用端口号)并连接到侦听端口。此时,通信信道由服务器的IP地址、服务器的端口80、客户机的I
服务器是否在请求后立即终止与客户端的连接?或者Web服务器是否会动态生成新端口供客户端使用,以便端口80可供新连接使用?端口是通信通道的一端 服务器初始值设置了一个侦听端口(HTTPS服务器为80)。客户端创建一个端口(操作系统将为此端口分配一个随机的可用端口号)并连接到侦听端口。此时,通信信道由服务器的IP地址、服务器的端口80、客户机的IP地址以及客户机的端口号进行唯一描述。如果您查看
netstat
的输出,您将在连接的各个阶段看到许多套接字/端口:
symcbean@skynet ~ $ netstat -t
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 192.168.1.202:47206 stackoverflow.com:https ESTABLISHED
tcp 0 1 192.168.1.202:50894 aba1c1ff9d2ec5376.:smtp SYN_SENT
tcp 0 0 192.168.1.202:47210 stackoverflow.com:https ESTABLISHED
tcp 0 0 192.168.1.202:60806 ec2-34-213-90-136:https ESTABLISHED
tcp 0 0 192.168.1.202:51124 151.101.1.69:https ESTABLISHED
tcp 0 0 192.168.1.202:34784 i0.wp.com:https ESTABLISHED
tcp 0 0 192.168.1.202:54082 lhr25s14-in-f10.1:https ESTABLISHED
tcp 0 0 192.168.1.202:38412 172-155-250-212.s:https ESTABLISHED
服务器在多个通道上并发处理通信的具体方式各不相同。我从未见过一台服务器一次只处理一个连接
在(prefork)ApacheWebServer上,打开侦听套接字的进程将连接转交给一个预先存在的子进程来处理。有些服务器作为单个进程运行,但有多个执行线程。一些线程(如nginx和lighthttpd)作为单个线程运行,并首先关注发送数据的通道