一张图帮你看懂,在浏览器输入网址回车后,都发生了什么?

首先我们来看图:

当我们在浏览器中输入一个网址,例如:baidu.com,按下回车键后,会发生什么呢?

主要会发生以下这些过程:域名解析(获取IP地址)、建立HTTP连接、发送HTTP请求、数据传输、渲染网页、断开HTTP连接。

下面我们来一个个讲解。

1. 域名解析:寻找服务器的IP地址

在我们输入域名后,浏览器首要任务是将该域名解析成计算机可理解的IP地址。域名是方便我们人类记的,计算机不能直接理解域名,因此需要将域名转换成IP地址。域名和IP地址的对应关系一般会在各个缓存中存储:

  1. 浏览器缓存:首先,计算机检查浏览器缓存中是否有该域名对应的IP地址,这是最快的方法。
  2. 操作系统缓存:如果浏览器缓存中没有,计算机会继续搜索操作系统缓存。
  3. 电信运营商缓存:若操作系统缓存也没有,计算机就会去找电信运营商(如电信、联通、移动)的缓存。
  4. 公共DNS缓存:如果以上缓存中都找不到IP地址,计算机将最后尝试查找公共DNS缓存。

如果在以上缓存中都找不到IP地址,计算机将向DNS服务器发出请求,DNS服务器将从根服务器、顶级域名(TLD)服务器和权威DNS服务器层层查找,最后返回IP地址。

这是它们的层次结构图:

(图片来源:https://xie.infoq.cn/article/9584c7089e5f966a90c1c5d9a)

简单地说就是,根DNS服务器提供顶级域名(TLD)服务器的IP地址,顶级域名(TLD)服务器提供权威DNS服务器的IP地址,而权威DNS服务器负责解析baidu.com域名的DNS查询,然后返回该域名的IP地址。

(图片来源:https://xie.infoq.cn/article/9584c7089e5f966a90c1c5d9a)

2. 建立HTTP连接:客户端与服务器的握手

当计算机获取到IP地址之后就可以向服务器发起HTTP请求了。我们的电脑(客户端)和服务器之间通过三次握手建立HTTP连接,连接建立好之后,客户端和服务器之间就可以传输数据了。

三次握手简单地说就是客户端向服务器喊话:

1、客户端:兄弟你在吗?收到请回答。

2、服务器:兄弟我在呢,你能听到我说话吗?

3、客户端:我能听到,我们开始传数据吧。

3.发送HTTP请求:数据传输

HTTP连接建立之后,浏览器会向服务器发送HTTP请求,请求服务器返回网页内容。

发送HTTP请求的过程通常是这样的:

  1. 浏览器向服务器发送一个 HTTP 请求报文,其中包含了请求的资源路径、请求方法等信息。
  2. 服务器接收到请求报文后,会返回一个 HTTP 响应报文,其中包含了资源内容、响应状态码等信息。
  3. 浏览器接收到响应报文后,会对资源内容进行解析,并将其显示在浏览器中。

HTTP请求是整个过程中最核心的步骤,它决定了我们最终看到的网页内容。

HTTP请求完成后,浏览器会渲染网页,将 HTML 代码转换为我们可以看到的内容。

渲染网页的过程通常是这样的:

  1. 浏览器会解析 HTML 代码,并将其转换为 DOM 树。
  2. 浏览器会根据 DOM 树,将网页中的元素显示在浏览器中。
  3. 浏览器会根据 CSS 代码,对网页中的元素进行美化。
  4. 浏览器会根据 JavaScript 代码,对网页中的元素进行动态交互。

渲染网页是整个过程中很耗时的步骤,如果网页内容较多,渲染时间可能会比较长。渲染完成之后,一个完整的网页就出现在我们面前了。

4. 断开连接:结束数据传输

当客户端和服务器之间数据传输完成,要断开连接时,需要通过四次握来断开,四次握手就是四次交流,客户端和服务器通过这四次交流确定没什么新数据要传了,而且之前的数据都已经传完了,最后就可以断开连接了。

四次握手的过程大概是这样的:

1、客户端:兄弟我没东西要传了,我要断开连接了

2、服务器:好的,我知道了,我还有点东西没传完,我传完了告诉你

3、服务器:兄弟,我东西都传好了,我们可以断开连接了

4、客户端:好的,我们断开吧

最后

我们在浏览器输入网址回车后,大概就是发生这么几件事:域名解析(获取IP地址)、建立HTTP连接、发送HTTP请求、数据传输、渲染网页、断开HTTP连接(不一定会马上断开)。我们每次浏览网页的时候都会经历这几个过程,理解这些基本步骤有助于我们更好地理解互联网的工作原理。

如果你需要上面的图,请关注公众号"编程我们也会",回复"浏览器网址"获取。

相关推荐
William一直在路上2 小时前
KONG API Gateway中的核心概念
网络·gateway·kong
sakoba5 小时前
Docker学习其二(容器卷,Docker网络,Compose)
运维·网络·学习·docker·容器·基础
惜.己6 小时前
appium中urllib3.exceptions.LocationValueError: No host specified. 的错误解决办法
网络·appium
吉凶以情迁7 小时前
window服务相关问题探索 go语言服务开发探索调试
linux·服务器·开发语言·网络·golang
专注VB编程开发20年7 小时前
UDP受限广播地址255.255.255.255的通信机制详解
网络·udp·智能路由器
189228048618 小时前
NX947NX955美光固态闪存NX962NX966
大数据·服务器·网络·人工智能·科技
Sadsvit9 小时前
Linux 进程管理与计划任务
linux·服务器·网络
一碗白开水一9 小时前
【模型细节】FPN经典网络模型 (Feature Pyramid Networks)详解及其变形优化
网络·人工智能·pytorch·深度学习·计算机视觉
什么都想学的阿超10 小时前
【网络与爬虫 38】Apify全栈指南:从0到1构建企业级自动化爬虫平台
网络·爬虫·自动化
D-海漠11 小时前
安全光幕Muting功能程序逻辑设计
服务器·网络·人工智能