您可能想知道 Web 服务器如何“提供”文件,以及它们如何传送将拼凑在一起的网站显示在屏幕上的文件。好吧,了解 Web 服务器的实现方式当然是“边构建边学习”的好方法。
虽然用 C 语言实现 Web 服务器听起来非常基础和详细,但它可能会帮助您更好地理解 HTTP 的工作原理,以及服务器实际上如何与客户端交互。让我们开始吧!
套接字如何工作
在构建 Web 服务器之前,您需要了解“套接字”的工作原理。
如果将在主机上运行的程序(或进程)比作房子,那么套接字就像一扇门,可以让邮件进出。当家里的人收到或投递一封信时,他或她可能不知道邮件在外界是如何投递的。
使用套接字网络接口,我们的 Web 服务器可以使用 C 标准包中的一组函数<sys/socket.h>,并让我们的服务器通过 Internet 与客户端“对话”。这些客户也使用套接字与我们交谈,所以套接字基本上就像是关于如何通过互联网相互交谈的共识。
设置服务器套接字
首先,我首先为服务器创建和配置套接字。我配置了一些东西:
AF_INET:使用 IPv4(相对于 IPv6)
SOCK_STREAM:使用 TCP(相对于 UDP)
INADDR_ANY:服务器接受来自任何网络接口的连接