在虚拟主机通过 IP 地址或虚拟主机通过端口号,Web 服务器根据请求发送到的 IP 地址或端口号来决定为哪个网站提供服务。
当 Web 服务器收到 HTTP 请求时,它如何知道该请求发送到的 IP 地址和端口号?
请求中是否包含IP地址和端口号,如果包含,服务器是否从请求中读取IP地址和端口号?
如果没有,那么 Web 服务器是否会调用套接字库中的某些函数来获取 IP 地址和端口号?
谢谢。
答案1
Web 服务器使用操作系统 TCP 堆栈套接字通过 TCP 协议与远程端点通信。
此套接字包含有关端点的信息,包括 IP 地址和远程端点用于连接到套接字的端口。可以使用getsockopt()
带有适当参数的函数检索此信息。
因此,答案是 Web 服务器从套接字选项中读取远程 IP 地址。