Back to Home
科普2025年10月17日6分钟阅读

浏览器是如何打开网页的,我写了一篇小白也能读懂的科普

向不懂技术的小白讲清楚,浏览器是如何通过一个网址,找到响应的服务器并打开网页的

浏览器是如何打开网页的,我写了一篇小白也能读懂的科普

前言

因为不是科班出身,所以哪怕我一直在从事编程工作,还是会时常暴露一些基础知识的盲区。我记得很多很多年前,我刚刚接触 CDN 相关的工作时,有一次找同事讨论一个关于域名解析的技术方案,我表达了我的疑问后,同事说:“你说这话,就说明你对域名解析的概念还不太了解。”

我一听,嗯,机会来了:“对,我确实是不太了解,要不你大概跟我说说。”同事真不错,三言两语就把基本概念讲清了,也瞬间消除了我的疑惑。

如今,这些知识对我来说已经算是常识了,不过最近在搭建网站的过程中,我发现还是能学到一些之前没太在意的细节,所以我觉得这类内容还是值得写一写的。那就用一个经典的例子,浏览器打开网页,然后由易到难,由简入繁,来说说这其中蕴含的各种网络与架构设计的知识。

今天先从科普开始。

举个栗子

打开网页

我们先从普通用户的视角来看看一个网页是如何被打开的。比如我要打开我的个人网站,于是就会在浏览器中输入网址:www.laidbackgeek.com ,然后按下回车键,浏览器就会把对应的网页显示出来了。

如今可能很少有人会直接输入网址了,因为有了搜索引擎,还有收藏夹,再加上国内各种浏览器自己的首页,它们才是各种网站的入口。但本质上它们只是帮你在地址栏输入了对应的地址。

当然,讲解前你还得有一个最基础的认知,就是网页的数据是存储在无数的服务器上的,浏览器就是通过你输入的网址,找到了存有其对应网页的服务器,才能把网页数据从服务器上拉取到浏览器中,然后再显示出来。

寻找服务器

那就先来看第一个环节,浏览器是如何通过一个网址来找到其对应的服务器的。在我的网站上随便点开一篇文章,把地址栏中完整的网址拿出来看看:

https://www.laidbackgeek.com/blog/how-browsers-open-webpages-beginners-guide

在这个网址中,蓝色的部分叫做域名,浏览器就是通过它来定位服务器的。也就是说,存在一个域名与服务器的对应关系表,浏览器只要拿着域名在这个关系表中找到对应的服务器,就知道上哪去拉取数据了。

这个关系表就被称为 DNS(Domain Name System)。为什么会存在 DNS 呢?因为在互联网中,服务器的位置是通过 IP 地址(下文简称 IP)来标识的,也就是像 14.215.178.80 这样由三个句点隔开的四个数字构成的字符串。

14.215.178.80 并不是 IP 本来的样子,IP 本质上是一个32位的二进制数字,是为了便于识别和记录,才写成了这个样子。这也只是老版的 IP,被称为 IPv4,而如今正在蓬勃发展的新版 IP 被称为 IPv6,是个128位的二进制数字。

浏览器通过 IP 就能找到对应的服务器,但是,IP 显然并不适合人类识别与记忆,而我们用户关心的是网站,也不是服务器,所以普通用户使用更容易记忆的域名来关联网站,而浏览器则利用 DNS 将域名转化为 IP,来找到对应的服务器。

于是前面例子中打开网页的过程就变成这样了,用户想打开一个网页,于是就把标识这个网页的网址输入浏览器,浏览器根据网址中的域名,通过 DNS 来找到其对应的服务器的 IP,然后就可以通过 IP 连接到这台服务器,拉取相应的网页数据了。

寻找DNS

那么 DNS 又在哪里呢,浏览器是如何从 DNS 那里查找 IP 的呢?

DNS 的数据同样也存在于互联网的服务器上,前面说了,服务器的位置是通过 IP 来标识的,也就是说,浏览器需要先知道 DNS 的 IP,才能访问到 DNS,才能拿域名找到其对应网站的 IP。那么这个 DNS 的 IP,也就是 DNS 的地址,又从何而来呢?

在网络中,不只是服务器是通过 IP 来标识的,我们的电脑、手机,以及所有需要联网的设备都是一样的,你必须有一个 IP 才能和网络中的其他设备互联互通。为此,当你的电脑开始联网时,它会向它所在的网络申请一个 IP,而在网络分配 IP 的同时,也会告知它一个 DNS 地址。

所以,当你的电脑联上网的时候,它就已经知道了 DNS 的地址,后续再访问任何网址时,它就会根据这个地址,找到 DNS 服务器,就能寻找网站服务器的 IP 了。

你可能又会问了,网络给电脑分配 IP 时,告诉了它 DNS 的地址,那这个网络又是怎么知道这个 DNS 地址的呢?

我们以一般的家庭宽带为例,电脑通过网线或者 WiFi 连接到路由器,路由器连接到光猫,光猫再通过光纤连接到网络运营商,比如联通。前面说电脑联网时,网络会分配一个 IP,实际上这个 IP 是由路由器来分配的,也就是路由器将 DNS 地址告知电脑的。

那路由器又是怎么知道 DNS 地址的呢,有两种方式,一种是手动设置,也就是进入路由器后台,手动输入一个 DNS 地址。当然,一般用户是不会这么做的,不设置的话,就是第二种方式,自动获取DNS。

自动获取的方式,就跟你电脑获取 DNS 的方式类似,不过有两种情况。如果你是通过路由器拨号上网的,那么将会由联通宽带给你分配 IP,同时告知你 DNS 地址。如果你是通过光猫拨号上网的,那么就是由联通宽带告知光猫 DNS 地址,路由器再从光猫获取 DNS 地址。

总之就是从终端到网络供应商,一层层地被分配 IP,被告知 DNS 地址。到了网络供应商,DNS 作为最最基础的网络服务,他们自然知道 DNS 地址,早就在网络设备上做好了配置。

DNS 数据

那 DNS 服务器上,那些域名与服务器对应的关系又是从何而来的呢?那自然是网站的维护者配置的。

比如我上周就上线了我的个人网站,步骤也简单:

  1. 开发一个网站
  2. 将网站部署到服务器
  3. 注册一个域名
  4. 为域名添加解析记录,也就域名与服务器的对应关系

然后这个对应关系就会被同步到 DNS 服务器上,然后大家就可以从浏览器访问到我的网站了。

总结

结合以上所有的环节,我们再重新整理一下浏览器打开网站的过程。

总结

首先,网站是由站长开发维护的:

  1. 站长开发了网站
  2. 把网站部署到了服务器
  3. 注册了一个域名
  4. 向 DNS 添加了解析记录

然后当用户想浏览网站时

  1. 用户的电脑联网时,它也获取到了 DNS 地址
  2. 想上网,便需要把对应的网址输入浏览器
  3. 浏览器根据 DNS 地址,将网址中的域名发给 DNS
  4. 从 DNS 上获取到对应的 IP
  5. 根据 IP 找到对应的服务器
  6. 从服务器拉取网页数据并显示

以上便是当我们用浏览器打开网页时,所涉及到的所有环节了。

后记

毕竟是想写篇科普,所以这些环节已经经过了大量的简化,希望能让不懂技术的人也能看懂。而在实际上网过程中,像从 DNS 获取 IP,还有从服务器拉取网页数据并显示,这些过程都要复杂得多,涉及到多级缓存、网络协议等。

所以,我会再从专业的角度把浏览器打开网页的过程重新写一遍,即是小白的进阶,也是专业人士的基础,这些内容够我写几篇的了,敬请期待。

原本还想用 AI 画几幅漫画来配合讲解,不过尝试的结果不太好,细节和连贯性很难兼顾,提示词应该还有不少提升空间,不过感觉离我的标准应该也有不小的距离,慢慢试吧。