我们已经知道,为什么要在/Http头中指定主机?

我们已经知道,为什么要在/Http头中指定主机?,http,networking,tcp,Http,Networking,Tcp,我们知道我们在http中使用tcp。在tcp连接中,原点和目的地是指定的。根据这句话,为什么我们在Http头中指定主机? 例如: GET /index.html HTTP/1.1\r\n Host: www-net.cs.umass.edu\r\n User-Agent: Firefox/3.6.10\r\n Accept: text/html,application/xhtml+xml\r\n Accept-Language: en-us,en;q=0.5\r\n Accept-Encodin

我们知道我们在http中使用tcp。在tcp连接中,原点和目的地是指定的。根据这句话,为什么我们在Http头中指定主机? 例如:

GET /index.html HTTP/1.1\r\n
Host: www-net.cs.umass.edu\r\n
User-Agent: Firefox/3.6.10\r\n
Accept: text/html,application/xhtml+xml\r\n
Accept-Language: en-us,en;q=0.5\r\n
Accept-Encoding: gzip,deflate\r\n
Accept-Charset: ISO-8859-1,utf-8;q=0.7\r\n
Keep-Alive: 115\r\n
Connection: keep-alive\r\n
\r\n

指定它的原因是指定主机的名称。由于请求本身是对IP报头中的IP地址发出的,因此web服务器无法真正知道请求了哪个域

在HTTP1.0下,这是不需要的。HTTP 1.0存在多年后,虚拟主机的流行变得非常普遍。如果您不知道,虚拟主机允许您在一台服务器上托管多个站点,即使是同一IP,对每个域的响应也不同


由于虚拟主机已经变得非常普遍,HTTP 1.1标准要求
主机
报头,从而简化了确定请求应路由到哪个站点所需的逻辑。

TCP报头中没有主机这样的东西。请参阅以获取TCP标头。抱歉。我编辑我的问题