Jos*_*ank 12 dns http ip subdomain
我知道 dns 将 example.com 之类的地址解析为 11.22.33.44 之类的 IP 地址,但我对如何解析子域感到有些困惑,因此当您键入http://subdomain.example.com 时,实际上是什么在 11.22.33.44 传递到服务器?换句话说,example.com = 11.22.33.44,但是 subdomain.example.com/path = ???
“子域”和“路径”是作为 http 标头传递的,还是以某种方式映射到 url 中的,还是什么?
提前致谢。
编辑:如果我理解正确,BloodPhilia 说 subdomain.example.com 实际上是一个不同的域,原则上可以解析为完全不同的 IP。但如果是这样,那么拥有大量(看起来像)子域但实际上映射到站点上的某些路径的主机呢?例如,blogspot 托管了数百万个博客,它们都如下所示:
aaa.blogspot.com
bbb.blogspot.com
...millions more...
yyy.blogspot.com
zzz.blogspot.com
Run Code Online (Sandbox Code Playgroud)
这些显然不是拥有自己 IP 的子域,而是一些映射,如 aaa.blogspot.com --> www.blogspot.com/aaa,但这是如何实现的?什么实际上被传递到 blogspot.com 的网络服务器?
Wil*_*sum 18
域、子域、子子域和子 (x)-子子域(最后两个组成!),DNS 以完全相同的方式处理最终用户和网络服务器。
例如,DNS 服务器可以为domain.com
、www.domain.com
或 返回不同的结果mysite.domain.com
。
现在,您可能知道,世界上的域比 IP 多得多。
因此,服务器使用称为“主机头”的东西来提供正确的内容。
你实际请求什么并不重要,你的机器对待一切都是一样的——它会在 DNS 上查找它应该连接的 IP,一旦连接,它就会将主机标头作为请求的一部分发送。然后,网络服务器将其配置为发回的内容发回。
一个很好的测试/学习/诊断工具是Wfetch,可以在这里下载。
这是访问 superuser.com 时发送的标头示例
这是 IIS(网络服务器)中主机头的配置:
(图片来自这里)
如果您感兴趣,Serverfault.com 和 Superuser.com 在同一个 IP 上,这是用于分离站点并提供不同内容的技术。
有关该主题的更多阅读,您可能需要阅读 Wikipedia 上关于 Virtual Hosting 的文章。
(我知道您了解基础知识,但我认为最好多说一点,以便任何在 Google 上搜索此内容的人都可以学到一些东西,如果他们愿意!)
因此,根据您的示例,我猜想像 blogspot 一样大的人很可能有一个通配符 DNS 条目(通配符条目对任何查询返回相同的结果)指向负载均衡器,然后负载均衡器会将其发送出去许多不同的网络服务器可能没有每个主机标头的单独站点,而是解析输入的地址(主机标头与否)的单个站点/脚本,然后从他们的 CDN 中提取正确的内容。
虽然,也有可能(但不太可能)每个 ip 仅包含几千个条目,该 ip 指向几台服务器,并且对于每个具有匹配主机标头的站点,它们仅具有一个条目。
实际上,如果两个域具有相同的 IP 地址,则服务器依赖浏览器来指定请求的域。喜欢:
GET / HTTP/1.1
Host: data.stackexchange.com
Run Code Online (Sandbox Code Playgroud)