![在通过 IP 地址和端口号进行虚拟主机时,Web 服务器如何找出 IP 地址和端口号?](https://linux22.com/image/733605/%E5%9C%A8%E9%80%9A%E8%BF%87%20IP%20%E5%9C%B0%E5%9D%80%E5%92%8C%E7%AB%AF%E5%8F%A3%E5%8F%B7%E8%BF%9B%E8%A1%8C%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E6%97%B6%EF%BC%8CWeb%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%A6%82%E4%BD%95%E6%89%BE%E5%87%BA%20IP%20%E5%9C%B0%E5%9D%80%E5%92%8C%E7%AB%AF%E5%8F%A3%E5%8F%B7%EF%BC%9F.png)
在虚拟主机通过 IP 地址或虚拟主机通过端口号,Web 服务器根据请求发送到的 IP 地址或端口号来决定为哪个网站提供服务。
当 Web 服务器收到 HTTP 请求时,它如何知道该请求发送到的 IP 地址和端口号?
请求中是否包含IP地址和端口号,如果包含,服务器是否从请求中读取IP地址和端口号?
如果没有,那么 Web 服务器是否会调用套接字库中的某些函数来获取 IP 地址和端口号?
谢谢。
答案1
Web 服务器使用操作系统 TCP 堆栈套接字通过 TCP 协议与远程端点通信。
此套接字包含有关端点的信息,包括 IP 地址和远程端点用于连接到套接字的端口。可以使用getsockopt()
带有适当参数的函数检索此信息。
因此,答案是 Web 服务器从套接字选项中读取远程 IP 地址。