HTTP:为什么需要指定主机名?

5
我正在学习套接字,试图弄清楚为什么需要在请求中指定主机名。如果我已经连接到“www.google.com”,那么在请求中使用“Host: www.google.com\r\n”有什么意义呢?难道服务器不知道自己的名称吗?

2
这实际上是关于HTTP协议,而不是Winsock。 - Seth Carnegie
2个回答

8
有时服务器确实知道它的主机名,但这并不总是一对一的关系。许多DNS主机名都可以指向同一个IP地址,因此,一个IP地址可以有多个DNS主机名。(另外,单个DNS主机名可以映射到多个IP地址,但在这个问题中不太重要。)
HTTP请求中的“Host:”行允许Web服务器知道您请求的主机名,并根据此提供服务。这使得一个IP地址上的一台机器可以为多个域名提供服务。
例如,如果Web服务器看到“Host:foo.com”,它可能会提供一个网站,但“Host:bar.com”可能会返回完全不同的结果。Web服务器没有其他可用的数据来获取此信息,并且依赖于Web客户端来通知它。

3
一个服务器可以有许多不同的DNS名称。例如,共享托管站点。

共享托管站点通常使用虚拟机,因此您确实会获得一台专属的机器。但是,DNS名称映射到IP地址,因此“服务器”在这里不是一个相关的概念。 - Khoa Vo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接