我正在尝试创建自己的 Web 服务器,并且有几个关于我们今天使用的 Web 服务器工作的问题。问题是:
- 从客户端通过 80 端口收到 HTTP 请求后,服务器是否使用相同的 80 端口进行响应?
- 如果是,那么在发送大文件时说 MB 的图片,网络服务器将无法接收来自其他客户端的请求?
- 计算机端口是双工还是单工?(它可以同时发送和接收)?
- 如果服务器端的另一个端口用于向客户端发送响应,那么(如果使用 TCP,通常使用),将再次进行 3 次握手,这将是开销......
我正在尝试创建自己的 Web 服务器,并且有几个关于我们今天使用的 Web 服务器工作的问题。问题是:
http://beej.us/guide/bgnet/output/html/singlepage/bgnet.html这里是关于网络服务器发生了什么的一个很好的指南,虽然它是在 c 中,但概念都在那里。这将解释整个客户端服务器关系以及一些实现细节。
我将简要介绍正在发生的事情:通常会发生什么是当您的服务器收到一个新请求时,它会创建一个处理它的分叉,这样您就不会被每个请求所困扰,当请求进来的子进程被交给一个新的文件来写入(这也是所有的实现细节)。
所以实际上你有一个服务器在等待请求,并且对于它收到的每个请求,它都会产生一个子进程来处理这个请求。我敢肯定有比 c 更容易实现这些东西的语言(我过去必须同时为任何一个提供 ac 和 java 服务器)但是 c 真的让你了解正在发生的事情,我打赌这就是您在这里寻找的东西
现在有几件事需要考虑:您希望网络服务器如何工作。该示例解释了父子进程。您是否想使用 tcp/UDP 传递有效载荷的方式有所不同。您不必连接端口 80。这只是 web 的默认设置。
希望该指南对您有所帮助。
您可以使用不同的技术来同时为多个客户提供服务。这些包括
两种方法经常结合使用。