浏览器渲染原理
2021-07-30 10:21:38 19 举报
AI智能生成
浏览器渲染原理以及http相关
作者其他创作
大纲/内容
线程和进程
线程
1、线程不能单独存在,它是由进程来启动和管理的
2、进程中的任意一线程执行出错,都会导致整个进程的崩溃。
3、线程之间共享进程中的数据。
进程
1、一个进程就是一个程序运行的实例。
2、当一个进程关闭之后,操作系统会回收进程所占用的内存
3、进程之间的内容相互隔离。
浏览器发展历史
单进程时代
1、浏览器的所有模块都运行在同一个进程里,这些模块包括网络、插件、JavaScript 运行环境、渲染引擎和页面等。
2、问题:不稳定、不安全、不流畅。
多进程时代(chrome)
浏览器主进程
主要负责界面显示、用户交互、子进程管理,同时提供存储等功能。
渲染进程
1、html、css、js转换为可交互的网页
2、排版引擎Blink
3、Javascript V8引擎
4、每个Tab(域名)标签都会创建一个渲染进程,且都运行在沙箱模式下。
GPU进程
css3渲染
网络进程
插件进程
未来面向服务的架构
构建一个更内聚、松耦合、易于维护和扩展的系统
IP
UDP
1、通过端口号把数据包分发给正确的程序。
2、UDP 不能保证数据可靠性,但是传输速度却非常快。
3、数据传递可能会丢包,并且数据到达时间先后顺序可能不一致。
4、UDP头 = 目的端口号 + 源端口号
5、UDP数据包 = UDP头 + IP头 + 数据包
TCP
1、把数据完整地送达应用程序
2、是一种面向连接的、可靠的、基于字节流的传输层通信协议
3、TCP头 = 目标端口号 + 源端口号 + 排序序列号
4、对于数据包丢失的情况,TCP 提供重传机制
5、TCP 引入了数据包排序机制,用来保证把乱序的数据包组合成一个完整的文件。
HTTP
1、HTTP协议和TCP协议都是TCP/IP协议簇的子集。
2、HTTP协议属于应用层,TCP协议属于传输层,HTTP协议位于TCP协议的上层。
HTTP请求流程
1、构建请求
GET /index.html HTTP1.1
2、查找缓存
浏览器判断当前请求存在缓存,则不会发起请求
3、准备IP地址和端口,即将发送TCP请求
1、首先搜索浏览器自身的DNS缓存,如果存在,则域名解析到此完成。
2、尝试读取操作系统的hosts文件看是否存在对应的映射关系,如果存在,则域名解析到此完成
3、查找本地DNS服务器(ISP服务器,或者自己手动设置的DNS服务器),如果存在,域名到此解析完成。
4、如果本地DNS服务器还没找到的话,它就会向根服务器发出请求,进行递归查询。
4、TCP连接
TCP的连接与断开
HTTP/0.9版本
请求以短连接进行,每次发送完HTTP响应之后,服务器就会断开TCP连接
HTTP/1.1 将Connection: Keep-alive写进标准
Connection: close 每次 HTTP请求都重新建立TCP连接
Connection: keep-alive 一次TCP连接发送多个HTTP请求,但是在响应的时候必须排队响应。
队头阻塞:单个TCP连接在一个时刻只能处理一个HTTP请求,也就是说一个请求处理完成后才能处理下一个请求,某个请求响应时间过长,后面的响应会被阻塞。
同一域名同时最多建立6个(chrome)TCP连接。
5、HTTP请求
请求行
请求方法+请求URL+HTTP协议版本
请求头
headers
cookie
Host...等
请求体
请求数据
6、响应请求
响应行
HTTP协议版本 + 状态码
响应头
headers
set-cookie
响应体
响应数据
7、TCP断开连接
0 条评论
下一页
为你推荐
查看更多