面试题:在浏览器地址栏输入一个URL后回车,将会发生什么事情?

一.在浏览器输入一个网址

在这里插入图片描述

二.DNS 进行域名解析工作

对 www.baidu.com 这个网址进行 DNS 域名解析工作,得到对应的 IP 地址

1.Chrome浏览器会首先搜索浏览器的DNS缓存,看自身的缓存中是否有www .baidu .com对应的条目,而且没有过期,如果有且没有过期则解析到此结束。

2.如果浏览器自身的缓存里面没有找到对应的条目,那么Chrome会搜索操作系统的DNS缓存,如果找到且没有过期则停止搜索解析到此结束。

3.如果在Windows系统的DNS缓存也没有找到,那么尝试读取hosts文件,看看
这里面有没有该域名对应的IP地址,如果有则解析成功。

…以此类推

三.根据这个 IP 地址,找到对应的服务器,发起 TCP 的三次握手请求

拿到域名对应的IP地址之后,浏览器会以一个随机端口向服务器的WEB程序80端口发起TCP的连接请求。这个连接请求到达服务器端后, 进入到网卡,然后是进入到内核的TCP/IP协议栈,还有可能要经过防火墙的过滤,最终到达WEB程序,
最终建立了TCP/IP的连接。如下图:
在这里插入图片描述

四.建立 TCP 连接后发送 HTTP 请求

HTTP请求报文的方法是 get ,如果浏览器存储了该域名下的 Cookies,那么会把 Cookies放入 HTTP请求头里发给服务器,用于识别用户信息。
在这里插入图片描述

五.服务器响应 HTTP 发送来的请求,浏览器得到 html 代码

服务器端WEB程序接收到http请求以后,就开始处理该请求,处理之后就返回给浏览器html文件。

六.浏览器解析 html 代码,并请求 html 代码中的相关资源(如 JS,CSS,图片等)

浏览器拿到 index.html 文件后,就开始解析其中的 html 代码,遇到 js/css/image等静态资源时,就向服务器端去请求下载(会使用多线程下载,每个浏览器的线程数不一样),这个时候就用上 keep-alive 特性了,建立一次HTTP连接,可以请求多个资源,下载资源的顺序就是按照代码里的顺序。

七.浏览器对页面进行渲染呈现给用户

最后,Chrome 浏览器利用自己内部的工作机制,把请求到的静态资源和 html 代码进行渲染,渲染之后呈现给用户。

发布了62 篇原创文章 · 获赞 6 · 访问量 4452

猜你喜欢

转载自blog.csdn.net/HU1656/article/details/104615963