服务器是如何知道客户端访问自己使用的是哪个域名的?

服务器ip被多个域名解析,客户端使用其中一个域名访问服务器,
服务器Tomcat可以根据域名指定要访问的项目,
Tomcat是怎么知道客户端使用的是哪个域名的?

在 HTTP/1.1 前,因为一个非常错误的设计:「认定一个 IP 位址对映一个网站」,
当时的服务器能得知默认的域名,不需加以区分,然而这将使 IP 利用率大幅降低。

因此 HTTP/1.1 引入了 Host 栏位,解决了 HTTP/1.0 假定 「Server 与 网域 是 一对一」的错误,
这使我们能在「同一IP, 不同 Host 值」或「 同一IP, 不同 port 」架设多个网站或服务,这称为 虚拟主机 (Virtual Host) 。

Tomcat 即是利用解析 HTTP报文 或者判断 TCP Port 来得知客户端所访问的域名。

http协议,有host字段,会报告自己访问的是什么主机。这个在tomcat的配置里叫做“主机头”
https://blog.csdn.net/psvmc/article/details/28232491

ftp协议就没办法了,只能靠不同的端口。

http 请求头中都有ref host 信息, 比如下图 是chrome的访问csdn的请求头
图片说明