从输入URL到页面渲染
一、输入URL
历史记录、书签:补全URL
缓存(chrome):不用回车直接显示页面
二、DNS查询(应用层)
递归查询:
- 浏览器缓存
- 操作系统缓存(hosts文件) :在C:\Windows\System32\drivers\etc路径下的hosts文件
- (本地)ISP DNS服务器(运营商)
迭代查询:
- 本地ISP DNS服务———(请求顶级域名服务器地址)———》根域名服务器,返回结果
- 本地ISP DNS服务———(请求第二层域名服务器地址)———》顶级域名服务器(com),返回结果
- 本地ISP DNS服务———(请求子域域名服务器地址)———》第二层域名服务器(baidu.com)
- ...... 直到找的IP地址返回给本地ISP DNS服务器
- 本地ISP DNS服务器——(发送IP地址给浏览器)——》浏览器
- 浏览器发送网络请求并将IP保存在缓存中
三、生成HTTP报文(应用层)
总体来说,HTTP报文分为请求报文和响应报文,报文内容分为:行,头,空行,体
请求报文:
- 请求行:请求方法 、请求URL、请求协议名/版本号
- 请求头
- 空行
- 请求体
响应报文:
- 状态行:协议名/版本号、状态码、状态描述
- 响应头
- 空行
- 响应体
HTTP协议的状态码:HTTP协议状态码汇总
四、TCP三次握手(传输层)
作用:防止无效的报文发送到服务器(若某个网络节点积压报文后发送)
五、浏览器发送HTTP请求
六、服务器接收HTTP请求
1.服务器重定向
作用:增加引擎排名,如www.yy.com和yy.com看成不同的网站,此时将yy.com重定向成www.yy.com搜索引擎将其看成一个增加排名,但容易造成缓存友好性差(保存两个网址)
HTTP状态码:301、302
2.浏览器重定向追踪
在返回的HTTP响应包头的location中保存重定向网址,向新地址再次发起HTTP请求同上
七、浏览器接收资源
1.加载(loader模块)
主资源:index.html
派生资源:index.html中用到的资源
2.解析(parse模块)
HTML:解码、分词、解析、建DOM树
CSS:cssRule
JS:js解析引擎
3.渲染
DOM树——render树——point / renderlayer+GPU
八、TCP四次挥手
作用:防止服务器端有未发完的数据