所以,我认为,当我在浏览器中输入某个 URL(例如https://google.com)时,我通过 ISP 向 ISP DNS 发送请求,我的提供商得到响应(google.com 的 IP)并通过这个 IP并向该服务器 (google.com) 发送请求并获得响应 - 我的提供商将发送给我的 html 页面。是这样吗?
不,这不像你描述的那样工作。
当您使用 ISP 的 DNS 服务器时,您会从 ISP 获得目标服务器(在您的示例中为 google.com)的 IP 地址。ISP 的 DNS 服务器本身从缓存中提供此 IP 地址或为您解析 DNS 查询 - 有关详细信息,请参阅DNS 查找解释。
然后您的浏览器使用此 IP 地址访问目标站点本身,即 ISP 不会为您检索该站点。虽然 ISP 会将数据包从您的客户端转发到目标服务器,但数据包中的内容通常与 ISP 无关。
但是这种行为有一些例外:在某些情况下,所涉及的 ISP 处可能有一个明确的代理,其中客户端(即您的浏览器)询问代理,代理将检索数据并将其发送回客户端。代理还可以缓存数据以更快地为客户端提供服务并节省带宽。这种设置在互联网的早期非常普遍,带宽更加紧张,但今天已经不常见了。
一些 ISP 还可能使用深度数据包检测 (DPI) 来窥探流量,并且还可能基于此阻止或延迟流量。有些人可能还会强制使用隐式代理来修改流量。在命令 ISP 阻止特定站点的国家/地区尤其如此。过去也发生过 ISP 在流量中注入自己的广告。或者移动 ISP 发现“丰富”流量以向最终服务器提供有关客户端的信息(如电话号码),以提供更有针对性的广告。虽然使用 HTTPS 时几乎不可能修改流量,但阻止流量甚至可以使用 HTTPS。
其次,当我使用其他 DNS 时:我认为,当我在浏览器中键入某个 URL(例如https://google.com)时,我通过 ISP 向其他 DNS 发送请求,并且我的提供商得到响应(google.com 的 IP ) 并通过此 IP 并向此服务器 (google.com) 发送请求并获得响应 - 我的提供商将发送给我的 html 页面。
同样,提供者(通常)只涉及在客户端(您的浏览器)和服务器之间转发数据,而不涉及从服务器本身请求数据。使用您的 ISP 提供的 DNS 与使用不同的 DNS 服务器之间的主要区别在于,另一个 DNS 服务器现在会为您解析查询。如果一个人不信任 ISP 并且担心阻止站点或记录您访问的站点(即侵犯隐私),则可能需要这样做。如果新的 DNS 提供商提供一些有用的功能(例如阻止恶意域),也可能需要这样做。
尽管您的 DNS 查询实际上并未在您要使用的 DNS 服务器处结束,但仍将由 ISP 的 DNS 服务器处理,但仍有可能且并不罕见。这可以通过将所有发往端口 53 的数据包廉价重定向到 ISP 的 DNS 服务器来完成。如果 ISP 被命令阻止对特定域的访问,通常会强制使用 ISP 的 DNS 服务器。但即使不重定向 ISP 也可能能够看到您查询的域:DNS 查询默认情况下未加密,因此对深度数据包检测可见。当使用 DNS over HTTPS (DoH) 或 DNS over TLS (DoT) 时,ISP 将不再能够拦截这些 DNS 请求,也无法看到 DNS 查询的内容。尽管在大多数情况下,它仍然可以确定您从 DPI 访问的网络流量本身的域。
接下来是第三个问题:如果我在我的 URL 栏中只输入 google.com 的 IP(不是域名),我会连接到 DNS 吗?
如果明确使用 IP 地址,则无需 DNS 查找即可访问服务器。请注意,如果仅通过 IP 地址访问,大多数服务器将无法工作。在同一个 IP 地址上提供多个域是很常见的。因此,服务器还需要域名来找出为 HTTPS 提供哪些证书以及提供哪些内容。如果只是将 IP 地址放在浏览器中,浏览器不知道是指哪个域,因此无法将这一关键信息提供给服务器。