Web 服务器如何区分不同的 DNS 名称?

Web 服务器如何区分不同的 DNS 名称?

我想知道Web服务器如何区分同一服务器(同一IP)上不同DNS名称的请求?

例如,在我的大学有两个网站:

fea.kau.edu.sa
engineering.kau.edu.sa

当我nslookup在 Windows 上使用时,两个域名的 IP 地址相同。你能解释一下吗?

答案1

HTTP 1.1 要求所有客户端系统发送一个标头,Host向服务器指示它们正在向哪个主机名发送请求。

这允许服务器读取该标头,并使用相应站点的内容进行响应。

如果没有这个功能,每个不同的站点就需要不同的 IP 地址;如果我们没有这个功能,我们的 IPv4 空间会更快耗尽。

答案2

启动你最喜欢的数据包跟踪器(例如wireshark) 并观察连接时实际发生的情况。

一个非常简单的请求可能看起来像这样:

GET / HTTP/1.1
Host: www.example.com

(如果你想自己使用 telnet 等工具重新创建此文件,请注意末尾的空行。你也可以看到很多这样的内容在维基百科上

请求的一部分Host:告诉网络服务器访问哪个站点。

这些标题中显示了很多内容,因此你可能需要使用浏览器插件来了解它们,例如萤火虫

答案3

简单的。

长期以来,每个 HTTP 请求......都包含域。

基本上,PAYLOAD(不是 tcp,而是 http 请求结构)告诉 Web 服务器该域名的用途。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

有浏览器传输的字段。有一个“HOSTNAME”。

大多数其他协议 – 不关心。

相关内容