正如标题所述,我在玩的时候tracert
发现www.google.com
和google.com
有不同的 IP 地址,但如果我将这些 IP 复制并粘贴到地址栏中,我会重定向到 Google 的主页。好的,它们是不同的服务器,但我不明白为什么。
我尝试使用 instagram.com,www.instagram.com
结果是一样的;但是如果我复制并粘贴地址栏中的 IP,它们不会重定向到 instagram 主页(代码 400)。
我在 Instagram 上发现了一些有趣的东西:wwww
指的是z-p42-instagram.c10r.facebook.com
实例,否则非www
指的是 AWS 实例......(什么?)
有人能解释一下吗?提前谢谢
答案1
您问的是三个不同的问题。
我发现 www.google.com 和 google.com 有不同的 IP 地址,但如果我将这些 IP 复制并粘贴到地址栏中,我会重定向到 Google 的主页。好的,它们是不同的服务器,但我不明白为什么。
www.google.com
和google.com
是两个不同的主机名。它们在 DNS 中具有不同的 A 记录,并且可以具有不同的 IP 地址,或者分配给它们的多个 IP 地址。没有规则要求 www 和非 www 主机名必须转到同一服务器或 IP。事实上,两者可以加载完全不同的网站,或者一个版本可能根本不起作用。这完全取决于网络服务器的配置方式以及它们在 DNS 查找之后如何处理您的请求。在这种情况下,您已经确定 Google 使用多个服务器来响应这两个请求,将您重定向到 Google 主页。
如果我复制并粘贴 IP 地址到地址栏,它们不会重定向到 Instagram 主页
这使用了一种完全不同的机制。虽然您指的是上述 DNS 记录的差异。您在这里指的是 Web 请求的主机标头的差异。您在浏览器中输入的所有主机名都会通过 DNS 转换为 IP 地址。每次发出请求时,您的 Web 浏览器实际上都会连接到 IP 地址。但是,浏览器还会传递一个“主机标头”,告诉 Web 服务器您正在连接到您最初在地址栏中输入的主机名。这使得在同一服务器(同一 IP)上托管多个网站成为可能。Web 服务器看到主机标头并说“google.com”应该在 Web 服务器上显示特定内容。
在这种情况下,您将 IP 地址直接粘贴到浏览器中。因此,Web 服务器只能处理您输入的 IP 地址。由于在同一台服务器上共享托管多个网站,因此这种情况很少见。但是,对于 Google,Web 服务器配置为如果仅看到 IP 地址,则重定向到 Google 的主页,而 Instagram Web 服务器不处理 IP 地址,而是返回 404 - 未找到,因为它没有被编程为识别该请求。
从技术上来说,正确的是,HTTPS 请求中的主机标头被“服务器名称指示”取代,但功能本质上是相同的。
我在 Instagram 上发现了一些有趣的东西:wwww 指的是 z-p42-instagram.c10r.facebook.com 实例,而非 www 指的是 AWS 实例……(什么?)
最后,您似乎指的是对所用 IP 地址进行反向 DNS 查找。将主机名转换为 IP 地址由域名所有者使用 DNS A 记录完成。他们拥有将您输入的主机名转换为 IP 地址的记录。或者,将 IP 地址转换为主机名由 IP 地址所有者使用 DNS PTR 记录完成。他们拥有将 IP 地址转换为主机名的记录。
将主机名转换为 IP 和将 IP 转换为主机名是两个不同的信息所有者配置的独立过程。在本例中,您发现 Instagram 决定将 www.instagram.com 指向一个由 Facebook 主机名命名的服务器的 IP 地址。这是有道理的,因为 Instagram 归 Facebook 所有,并且很可能使用相同的基础设施。