Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果输入IP地址而不是URL,是否跳过DNS?_Url_Networking_Dns - Fatal编程技术网

如果输入IP地址而不是URL,是否跳过DNS?

如果输入IP地址而不是URL,是否跳过DNS?,url,networking,dns,Url,Networking,Dns,这是我目前的理解: 我输入一个URL(www.google.com),然后按回车键 浏览器检查缓存中的DNS记录,以查找URL的相应IP地址 一旦找到IP地址,就会建立连接,依此类推 我的问题是,如果我直接输入IP地址会发生什么?浏览器是否仍会尝试查找DNS记录或联系域名系统 我相信浏览器会识别出它是一个IP地址,并跳过DNS查找,但我不能100%确定这一切是如何工作的 有没有一种方法可以实时跟踪在键入URL后按enter键时发生的情况?这完全取决于您使用的浏览器 如果你想知道发生了什么,可以设

这是我目前的理解:

  • 我输入一个URL(www.google.com),然后按回车键
  • 浏览器检查缓存中的DNS记录,以查找URL的相应IP地址
  • 一旦找到IP地址,就会建立连接,依此类推
  • 我的问题是,如果我直接输入IP地址会发生什么?浏览器是否仍会尝试查找DNS记录或联系域名系统

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

    有没有一种方法可以实时跟踪在键入URL后按enter键时发生的情况?

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

    如果你想知道发生了什么,可以设置一个网络嗅探器,比如Wireshark,你可以看到什么请求从你的机器发送到DNS或web服务器

    假设您使用外部DNS服务器,在实际网页请求之前对其进行查询将倾向于指示是否按原样使用直接IP地址,而不是进行查找

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



    (a) 有些是如此奇怪或令人痛苦,甚至我可能都无法想象它们:-)当你浏览网页时,DNS的目的,正如你所暗示的,是将一个名称转换为IP地址,以便程序知道连接到哪里

    因此,根据定义,如果您给它一个IP地址来开始,而不是一个名称,那么就没有更多的东西需要翻译,因此不需要DNS

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

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

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

    通常不需要。通常会进行反向DNS查找,以建立主机名。例如在HTTPS中,这是必需的。@user207421您能解释或提供有关此反向查询以及与HTTPS的关系的参考吗?因为我认为情况并非如此…@PatrickMevzek HTTPS包含主机名验证。主机名嵌入到服务器证书中,客户机有义务对照他认为连接到的主机名进行检查。因此,如果用户提供IP地址,则需要反向DNS查找。@user207421“HTTPS包含主机名验证”是,如果URL中有主机名。你没有证明任何东西,也没有提供你索赔的来源。看看很多网站,绝对没有反向DNS条目。你知道HTTPS虚拟主机吗?其中多个名称解析为同一IP。。。那么,您声称的做法将如何运作?@PatrickMevzek“是的,如果您的URL中有主机名”。你的断言的来源是什么?在RFC 2818#3.1中,没有这样说,只有“主机名可用”,如果缺少主机名,可以使用反向DNS查找。我还可以想象一个代理配置想要一个主机名,看看是否应该绕过它。这些断言的来源是什么?@user207421哪一个?在这种情况下,DNS将名称转换为IP地址这一事实?首先看RFC1034或1035。关于SNI,请参阅RFC 6066第3节。对于HTTP
    host
    header,这可能是一个良好的开端:对于本地递归名称服务器,请查看unbound。对于TLS上的DNS,请参阅RFC 7858;对于HTTPS上的DNS,请参阅RFC 8484。您还需要什么?@user207421,我们仍在等待任何来源以与您在评论中声明HTTPS需要反向DNS相同的方式提供。请分享!