Logo
Section 1 / 12

从输入 URL 到获取根文件

虽然我们很多人都依赖互联网,但“屏幕背后”发生的事情却让大多数人难以理解。

导入

从输入 URL 到获取根文件

虽然我们很多人都依赖互联网,但“屏幕背后”发生的事情却让大多数人难以理解。

我们几乎依赖互联网完成所有事情:查看邮件、叫Uber、订购食物和衣物。然而,大多数人并不了解互联网实际是如何工作的。

从根本上说,这个过程可以分为以下几个步骤:

  1. 从URL获取IP地址。我们将在接下来的课程《URL的结构》中讨论URL的组成。
  2. 使用HTTP/S向服务器发送请求。
  3. 从服务器获取响应。
  4. 从根文件发起对外部资源的请求。
  5. 解析HTML、CSS和JS。
  6. 在浏览器中渲染网站。

本节课我们将重点讲解前四个步骤,最后两个步骤将在下一节课中介绍。

DNS

那么,浏览器是如何根据提供的URL找出IP地址的呢?这正是互联网目录服务——域名系统(DNS)发挥作用的地方。DNS用于将域名转换为IP地址。

这个过程类似于使用电话簿查找你最喜欢的披萨店的电话号码!

域名到IP地址的映射称为“DNS记录”。

...

这些DNS记录属于一个分布式数据库,意味着所有记录并非存储在单一服务器上,而是分布在多个服务器之间。

本地检查

由于我们经常访问某些网站,DNS记录会被本地缓存,以避免因网络中的DNS请求带来的延迟。这一过程通过以下步骤完成:

  1. 首先检查浏览器的本地缓存。
  2. 如果浏览器缓存中没有该记录,则检查操作系统的缓存。
  3. 如果操作系统缓存中也没有,就检查系统配置的DNS服务器,这可能是家庭路由器中的DNS服务器、互联网服务提供商(ISP)的DNS服务器,或公共DNS服务器。

DNS服务器

如果上述所有位置都未找到记录,就需要查询DNS服务器。DNS服务器按区域划分,形成一个层级结构。

最顶层的服务器称为“根服务器”,它们保存着其他DNS服务器的IP地址,这些服务器被称为顶级域服务器(TLD服务器)。顶级域服务器按类型划分,例如 .com、.edu、.org 等。

TLD服务器会指向“二级域名”服务器,比如 wikipedia.com 或 educative.io 的服务器。这些DNS服务器则包含指向实际托管目标网站的服务器的映射。

因此,如果本地无法找到记录,就会进行完整的DNS解析,具体流程如下:

  1. 完整解析的第一个接触点是根服务器。截至本课程编写时,全球共有1084个根服务器实例。可访问 https://root-servers.org/ 了解更多详情,包括交互式地图!

  2. 根服务器返回相关顶级域服务器的IP地址。

  3. 顶级域服务器返回二级域服务器的IP地址。

  4. 二级域服务器包含我们所寻找的服务器的DNS记录,它将该服务器的IP地址返回给浏览器。

可以这样理解:域名的解析过程实际上是逆向进行的:

发送请求

现在我们已经获得了IP地址,并知道应该向谁发送请求,就可以使用HTTP协议发起请求了。关于HTTP的详细内容,我们已在之前的课程中学习过。如有需要,请回顾相关内容!

请求其他资源

当请求网站主页时,通常会收到一个根HTML文件,该文件随后会自动发起对其他所需资源(如图片)的请求。这些请求同样通过HTTP进行,但由浏览器自动完成。

请看下面这个示例应用。它向 Imgur上的图片 和 Educative的图标发起了请求。如果这个页面作为某个网站的首页返回,浏览器将自动加载并显示这些图片。

No configuration found for ID: c352e8739ea8fa152e1121a75f1b57c0a4d285dc3f0eb839bc47996a4983db2e

简介

HTTP、服务器与客户端