我开始学习套接字,我正在试图弄清楚为什么需要在请求中指定主机名。如果我已经连接到“www.google.com”,那么请求中的“主机:www.google.com \ r \ n”是什么意思?服务器是否已经知道自己的名字?
答案 0 :(得分:4)
有时服务器确实知道它的主机名,但它并不总是1:1的关系。许多DNS主机名都可以指向相同的IP,因此,1个IP可以拥有许多DNS主机名。 (此外,单个DNS主机名可以映射到许多IP地址,但在此问题中这不太重要。)
HTTP请求中的Host:
行允许Web服务器知道您请求的主机名,并根据该服务器提供服务。这允许一台IP地址的计算机为多个域提供服务。
例如,如果网络服务器看到Host: foo.com
,它可能会投放一个网站,但Host: bar.com
可能会导致返回完全不同的结果。网络服务器没有其他数据可用于此信息,它依赖于Web客户端来通知它。
答案 1 :(得分:2)
给定服务器可以有许多不同的DNS名称。例如,想想共享主机站点。