2011-11-26 68 views
1

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

+1

这实际上是关于HTTP协议,而不是winsock。 –

回答

4

有时服务器确实知道它的主机名,但它并不总是1:1的关系。许多DNS主机名都可以指向相同的IP,因此,1个IP可以有许多DNS主机名。 (另外,一个DNS主机名可以映射到很多IP地址,但这个问题在这个问题上不太重要。)

HTTP请求中的Host:行允许Web服务器知道您请求哪个主机名,并基于那。这允许一台IP地址的计算机为多个域提供服务。

例如,如果网络服务器看到Host: foo.com,它可能服务于一个网站,但Host: bar.com可能会导致返回完全不同的结果。 Web服务器没有其他数据可以使用这些信息,并且它依赖于Web客户端来通知它。

2

给定的服务器可以有许多不同的DNS名称。例如,认为共享托管网站。