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


    首先我们来看图:

    在这里插入图片描述

    当我们在浏览器中输入一个网址,例如: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连接(不一定会马上断开)。我们每次浏览网页的时候都会经历这几个过程,理解这些基本步骤有助于我们更好地理解互联网的工作原理。

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

  • 相关阅读:
    或许我们并不需要 default exports
    C++(适配器):stack和queue的底层实现,以及优先级队列和仿函数
    【沐风老师】3DMAX一款神级一键四边面重拓扑插件Quad Remesher使用教程
    朋友圈折叠怎么办?
    Microsoft SQL Server 图书管理数据库的建立
    元数据管理-解决方案调研二:元数据管理解决方案——Saas/内部解决方案(4)
    层层剖析一次 HTTP POST 请求事故
    CorelDRAWX4的C++插件开发(四十一)纯C++插件开发(5)实现六个纯虚函数
    C++之《连连看》
    typescript 八叉树的简单实现
  • 原文地址:https://blog.csdn.net/zhanyd/article/details/133813874