1,解析URL:将输入的URL解析成协议,域名,路径等信息
2,解析DNS:将域名解析成对应的IP( ip 指的是网络为每一台电脑分配的一个地址。由于 ip 地址不容易被记住,所以有了域名,浏览器拿到域名后,首先要先把域名解析成 ip,然后找到 ip 对应的机器。解析域名通常使用的方法是 DNS 解析,为了让查找过程更高效,浏览器和操作系统都会将每次的解析结果缓存起来,在下次解析的时候,就会先从缓存中去查找 ip(解析方式:查找本地缓存中 ——> DNS数据缓存中 ——> DNS解析对应ip)。浏览器首先会从本地缓存中找,如果找到就用缓存,如果找不到就会向DNS服务器发送请求,获取对应的IP
3, 建立TCP连接:浏览器根据协议选择相应的端口号与服务器建立TCP连接,如果URL是HTTP协议,则会先进行SSL/TLS握手然后进行安全连接
4,发送请求:浏览器构建请求报文,请求报文包括请求行,请求头,请求体等信息,然后将请求报文发送给服务器
5,服务器处理请求:服务器接受到请求报文后,然后去调用相应的后端程序,去查询数据库等操作
6,接受HTTP响应:服务器将处理完的信息包装成相应报文,然后发送给浏览器
7,浏览器解析和渲染响应体:浏览器接受到相应报文,首先检查HTTP的响应状态码,去判断请求的成功与否,然后去解析响应报文
8,页面布局和渲染:浏览器将HTML解析成dom树,将css解析成CSSOM树,将它们合成RenderTree,计算它们大小和在页面的具体位置,然后将它们布局到页面上
9,加载其他资源:去加载页面存在的其他加载资源,如css文件,js文件和图片等,浏览器根据HTML文档解析的结果,去重新发送请求
10,执行js代码:HTML中包含js代码,浏览器根据解析结果去执行js代码,从而实现用户交互效果
11,用户交互:用户可以和页面互动,去实现js代码功能,也可以去点链接等去重新发送请求,重复执行上述代码
12,断开连接:当用户关闭浏览器窗口或输入新的URL或服务器响应报文connection字段指定断开连接,浏览器会断开与服务器的连接。