【面试题】http相关

1.从输入url到页面展示发生了什么?(个人简化版答案)

【No1】输入地址

我们输入的过程中,浏览器会智能的匹配可能的url(从历史记录、书签等地方),给出智能提示。

chrome甚至会直接从缓存中把网页展示出来。

【No2】浏览器查找域名的ip地址

(1)查找本地hosts文件。

(2)如果hosts没有相应配置。浏览器发送DNS请求,到本地DNS服务器。本地DNS服务器查找自己的缓存。

(3)如果本地DNS服务器没有缓存。本地DNS服务器会向DNS根服务器进行查询。

(4)DNS根服务器没有记录域名和ip的对应关系。它会告诉本地DNS服务器,可以到域服务器上去查询,并给出域服务器地址。

(5)本地DNS服务器向域服务器发送请求。(.com就是一个域服务器)域服务器接到请求后,会告诉本地DNS服务器,你的域名的解析服务器地址。

(6)本地DNS服务器向域名的解析服务器发送请求,这时,可以收到一个域名和ip的对应关系。本地DNS服务器把这个对应关系保存在本地缓存中,并把ip地址返回给用户电脑。

总体查询流程:

本地hosts —> 本地DNS服务器 —> 根DNS服务器 —> 域DNS服务器 —> 域名的解析服务器

【No3】浏览器向web服务器发送一个HTTP请求

浏览器以一个随机端口向服务器的WEB程序80端口发起TCP连接请求。

经过三次握手,建立起TCP连接。

http请求发送。

【No4】服务器的永久重定向响应

服务器给浏览器响应一个301永久重定向响应。

如,输入jd.com时,会返回http://www.jd.com/

【No5】浏览器跟踪重定向地址

浏览器向重定向的地址再发送一个http请求。

【No6】服务器处理请求

这里,一些大一点的网站会在浏览器和服务器之间加一层反向代理,即Nginx。

作用:

当访问量大的时候,将用户请求分配到不同的应用服务器上处理。这里,同一个应用会事先部署到多台服务器上。

此时,客户端的请求会发送到Nginx,Nginx再请求应用服务器,然后将结果返回给客户端。

【No7】服务器返回一个HTTP响应

【No8】浏览器进行页面渲染

浏览器在接收全部HTML文档前就开始进行显示。

DOM Tree + style rules ——> render tree

render tree(渲染树)构建完成后,浏览器进行布局、绘制,最后合成。

(1)html加载过程中遇到js文件,会挂起渲染(加载解析渲染同步)的线程。这里,要等到js文件加载、解析、执行完毕,才可以恢复html文档的渲染线程。

(2)html加载过程中,遇到需要获取的外部资源,会再次向服务器发起请求。如:图片、css、js文件等。


#待续......

你可能感兴趣的:(【面试题】http相关)