在面试的时候考官经常会问这样一道题,请问从输入URL到加载页面经历什么?
被问了听多次的,所以根据我了解的知识以及理解回答一下吧
回答:
这个过程大概会有如下几个步骤:
1.输入URL 这个URL结构为 scheme://domin:port/path/filename port为端口号,默认为80端口
2.DNS解析(将域名解析为IP的过程)
过程(查询到了终止查询过程):
A.查询浏览器的DNS缓存(一张键值对的映射表)
B.查询操作系统的DNS缓存
C.查询操作系统的host文件
D.查询本地运营商有没缓存,没有再迭代查询根域名服务器,顶级域名服务器,负责具体域名的服务器,其中某一个查询到了终止迭代过程
3.拿到IP后,建立TCP连接,这时候会有一个3次握手的过程
① 客户端向服务器发送连接的请求
② 服务器端收到客户端的请求,并且返回同意建立连接的通知
③ 服务器端确认收到通知
4.通过建立的TCP连接发送http请求(get方法)
5.拿到html页面,开始解析,同时解析到css,图片,JS文件的时候,发送请求去下载
此时渲染引擎构建DOM树,解析CSS后构建渲染树
JS引擎解析JS代码,添加交互效果
6.断开TCP连接,这时候会有一个4次挥手的过程
① 客户端向服务器发送一个断开连接的请求
② 服务器端收到请求,发送一个确认的信号
③ 服务器端向客户端发送断开连接的通知
④ 客户端收到通知,断开请求,反馈一个确认的信号,服务器收到信号后断开连接
好了,写完了。
另外补上一份大神的答案:
https://zhuanlan.zhihu.com/p/34453198
由于他说的东西我现在还不能完全理解,所以希望以后自己进一步提高自己以后,再来完善这篇blog。