- 用户在浏览器地址栏中输入网站域名
- 浏览器拿到该域名先去本地hosts文件中查找对应的ip地址,未找到时自动去请求 DNS服务器查询 用户输入的域名对应的 ip 地址
- 浏览器拿到 ip 地址之后,通过ip地址+端口号(HTTP默认80)和服务器建立连接(通过 三次握手 )
- 三次握手建立连接成功之后
- 浏览器将用户输入的 url 地址通过 HTTP 协议包装成 请求报文 ,然后通过 Socket(服务器ip地址和端口号) 发送到服务器
- 当HTTP服务器接收到客户端浏览器发送过来的请求报文时候,按照 HTTP 协议将请求报文解析出来
- 然后服务器拿到请求报文中的请求信息(例如请求路径url),做相应的业务逻辑处理操作
- 当业务逻辑处理完毕之后,服务器将要发送给客户端的数据按照 HTTP 协议包装成 响应报文
- 然后服务器通过 Socket(客户端的ip地址+端口号) 将响应报文数据发送给客户端浏览器
- 当浏览器接收到服务器发送给自己的响应报文数据的时候,浏览器根据 HTTP 协议将报文内容解析出来
- 浏览器拿到响应报文体中的数据开始 解析渲染html、css,执行 JavaScript,如果在解析的过程(从上到下)中,发现有外链的标签(link、css、img),浏览器会自动对该标签指向的 路径地址 发起新的请求(还是通过 Socket )。
- 解析html生成dom树 + cssom树,结合二者生成最终的渲染树,然后浏览器UI后端进行最终的绘制。浏览器解析渲染的过程并非严格顺序执行的,而是串行进行,为了提高网页性能,要减少浏览器的reflow和repaint。
浏览器的主要结构:
- 浏览器引擎 + 渲染引擎 + JS解释器
- 用户界面 + UI后端
- 网络
-
数据存储