Web 浏览器如何解析 URL 中的 IP 地址?

Sub*_*ash -4 browser internet

如果我使用“www.example.com”之类的名称访问网页,浏览器将从右向左开始,查看 TLD 以查找域,然后继续进行。如果我输入该主机的 IP 地址,浏览器将如何解析它?

use*_*ser 6

你的问题是基于一个错误的假设。

Web 浏览器并没有真正对主机名做任何特别的事情。它会调用解析器库例程,询问“嘿,我有这个看起来很有趣的字符串;你能给我一个我可以实际连接到的相应 IP 地址吗?”。在实践中,可能涉及到几层间接性,因此“地址条码”可以简单地将用户输入的整个字符串传递给某个例程,最终触发加载请求的页面。

实际的名称解析通常由编程库提供的名称解析例程处理,后者可能会调用操作系统,后者又会发出 DNS 请求并将其传递给配置的 DNS 解析器服务器。DNS 解析器服务器将其分解为它可以直接回答的部分,并遵循所涉及的任何委派。这意味着 Web 浏览器完全忽略了该过程。

IP 地址采用特定形式:n.n.n.n每个地址都是n0 到 255 之间的数字,或者是用方括号括起来的 IPv6 地址[s0m3:add:re::s:s]。这可以很容易地以编程方式检测并作为特殊情况处理,只需将 IP 地址转换为二进制形式并使用它来连接到给定的主机。有现成的库函数可以进行这种转换,因为有一个包含 IP 地址的字符串(由用户提供,从配置文件中读取,或其他)并希望连接到它是一种常见的情况。

请注意,以上内容非常笼统。一些操作系统可能提供 TCP 连接函数,直接接受一个完全限定的主机名并代表调用者进行查找;其他人可能要求调用者先查找主机名,然后再进行一次调用以启动 TCP 连接。即便如此,大体流程还是一样的;区别仅在于哪一段代码负责流程的哪一部分。(即使 connect 调用可以接受主机名,无论如何首先将其解析为 IP 地址可能是有利的;例如,您可以选择是喜欢 IPv4 还是 IPv6,或者可以应用代理设置。)