【问题标题】:Is DNS skipped if I enter the IP Address instead of a URL?如果我输入 IP 地址而不是 URL,是否会跳过 DNS?
【发布时间】:2019-03-10 02:32:39
【问题描述】:

这是我目前的理解:

  1. 我输入一个 URL (www.google.com) 并回车
  2. 浏览器会检查缓存中的 DNS 记录以查找 URL 的相应 IP 地址。
  3. 一旦找到 IP 地址,就会建立连接,依此类推...

我的问题是,如果我直接输入 IP 地址会怎样?浏览器是否仍会尝试查找 DNS 记录或联系域名系统?

我相信浏览器会识别出它是一个 IP 地址并跳过 DNS 查找,但我不能 100% 确定这一切是如何工作的。

有没有办法实时跟踪我在输入 URL 后按 Enter 后发生的情况?

【问题讨论】:

  • 一般不会。通常会进行反向 DNS 查找,以建立主机名。例如,在 HTTPS 中这是必需的。
  • @user207421 你能解释一下这个反向查询和与HTTPS的关系吗?因为我不认为是这样的......
  • @PatrickMevzek HTTPS 包含主机名验证。主机名嵌入在服务器证书中,客户端有义务根据他认为他正在连接的主机名进行检查。 Ergo 如果用户提供 IP 地址,则需要反向 DNS 查找。
  • @user207421 "HTTPS 包含主机名验证" 是的,如果您在 URL 中有一个 主机名 显然。您没有证明任何事情,也没有提供您的主张的来源。查看许多网站,它们绝对没有反向 DNS 条目。你知道 HTTPS 虚拟主机吗?在多个名称解析为同一个 IP 的情况下......那么您声称的做法将如何运作?
  • @PatrickMevzek '是的,如果 URL 中有主机名'。该断言的您的来源是什么?没有说在 RFC 2818 #3.1 中,只有“如果主机名可用”,如果缺少主机名,使其可用的一种方法是反向 DNS 查找。我还可以想象一个代理配置想要一个主机名来查看它是否应该被绕过。

标签: url networking dns


【解决方案1】:

当您浏览网页时,DNS 的目的是将名称转换为 IP 地址,以便程序知道连接到哪里。

因此,根据定义,如果您给它一个 IP 地址而不是名称,则无需再翻译,因此不需要 DNS。

但是请注意,基于 IP 而不是名称的浏览可能无法按预期工作,尤其是在 HTTPS 领域,甚至在 HTTP 中。这是因为名称不仅在 URL 中,而且在 TLS 级别(通过 SNI 扩展以允许在单个 IP 上的 HTTPS 中进行虚拟托管)和带有 host 标头的 HTTP(S) 级别渗透到远低于.

如果您想更多地评估您的具体案例中发生的情况(以上是通用的,所有规则都有例外),您可以:

  • 安装您控制的本地递归 DNS 解析器,将您的操作系统指向它并查看日志文件以查看已请求的名称或任何其他查询
  • 同时运行网络捕获,就像使用 Wireshark 一样,但请注意,它可能或多或少难以解释,特别是如果您同时有很多其他流量。如果您的操作系统使用基于 TLS 的 DNS 或基于 HTTPS 的 DNS,那么网络跟踪将更加难以理解。

【讨论】:

  • 这些断言的来源是什么?
  • @user207421 是哪一个?在这种情况下,DNS 将名称转换为 IP 地址的事实?对于初学者,请查看 RFC 1034 或 1035。关于 SNI,请查看 RFC 6066 第 3 节。对于 HTTP host 标头,这可能是一个好的开始:en.wikipedia.org/wiki/List_of_HTTP_header_fields 对于本地递归名称服务器,请查看 unbound 例如。对于基于 TLS 的 DNS,请查看 RFC 7858,对于基于 HTTPS 的 DNS,这是 RFC 8484。您还需要什么?
  • @user207421 我们仍在等待与您在评论中声称 HTTPS 需要反向 DNS 相同的任何来源。请分享!
【解决方案2】:

完全取决于您使用的浏览器。

如果您想查看发生了什么,请设置像 Wireshark 这样的网络嗅探器,您可以查看从您的计算机发出的请求,例如 DNS 或 Web 服务器。

假设您使用外部 DNS 服务器,在实际网页请求之前存在对其的查询将倾向于表明直接 IP 地址是否按原样使用而不是被查看起来。

当然不能保证,有数百种不同的方式来编写或配置软件(a),但这很可能会给你最好的指示。


(a) 一些如此离奇或折磨人,甚至 可能都无法想象它们 :-)

【讨论】:

    猜你喜欢
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    • 2018-05-31
    • 2019-05-20
    • 2015-11-15
    • 1970-01-01
    • 2021-08-25
    相关资源
    最近更新 更多