我想了解 Web 服务器如何处理大量同时发生的 HTTP 请求和响应。请记住,我是网络编程的新手。
Web 服务器可以同时在 80 端口上发送多个 HTTP 响应吗?还是必须“序列化”响应?
Web 服务器是否以序列化方式接收请求?如果是这样,那么插入优先级队列可能需要快速。
我想了解 Web 服务器如何处理大量同时发生的 HTTP 请求和响应。请记住,我是网络编程的新手。
Web 服务器可以同时在 80 端口上发送多个 HTTP 响应吗?还是必须“序列化”响应?
Web 服务器是否以序列化方式接收请求?如果是这样,那么插入优先级队列可能需要快速。
简短的回答是,大多数 Web 服务器将通过在单独的线程/进程上处理每个请求(通过从线程池中提取线程或创建新线程)来并行处理传入请求。通常,可以同时处理的请求数是有上限的(例如线程池中的最大线程数)。超出该上限意味着待处理的请求将在队列中等待,直到另一个请求完成。如果服务器需要对请求做一些异步处理,它可能会将线程返回到线程池,直到它准备好完成请求(如 ASP.NET 中的 IHttpAsyncHandler )。
服务器实际上并没有在端口 80 上发回请求。客户端将有自己的端口用于该特定连接。
我也是新手,但对网络通信有一点了解。
它不会同时响应多个请求,一次一个,在正常运行时非常非常快。
当信息通过网络发送出去时,无论它是什么端口,它都会以数据包的形式发送出去。在该数据包中是标头,在您询问的情况下,它定义了它尝试使用的端口号和其他需要的信息。标题之后是数据。数据包中数据的大小因设置而异,即计算机、路由器/交换机以及涉及的任何其他内容。最后是页脚,其中包含有关是否是针对该特定请求的最后一个数据包的指示,如果不是,则在下一个数据包中查找什么。
希望这有助于回答你的问题,也许会给你更多的问题。