流程
在地址栏中输入url
- 浏览器是用http还是https访问服务器呢? 如果没有明确告知浏览器是用哪个协议,针对此种情况,浏览器有自己的预案,那就是默认使用http协议,除非小明输入的是 https://zhihu.com
- 所以输入的网址被浏览器补齐为 zhihu.com
域名解析
- 浏览器在本地host文件中查找,检查在该文件中是否有相应的域名、IP对应关系,如果有,则向其IP地址发送请求,如果没有,再去找DNS服务器。
- 由于本地 DNS 服务器没有缓存不能直接将域名转换为 IP 地址,需要采用递归或者迭代查询的方式依次向根域名服务器、顶级域名服务器、权威域名服务器发起查询请求,直至找到一个或一组 IP 地址,返回给浏览器。
- 浏览器向本地DNS服务器发送查询请求报文,本地DNS服务器把查询报文转发到根DNS服务器,根DNS服务器注意到其com后缀,于是向本地DNS服务器返回comDNS服务器的IP地址。本地DNS服务器再次向comDNS服务器发送查询请求,comDNS服务器注意到其www.yuque.com后缀并用负责该域名的权威DNS服务器的IP地址作为回应,再往下推导。
TCP连接
- 通过 DNS 解析拿到服务器 IP 地址后,浏览器再通过系统调用 Socket 接口与服务器 443 (https)端口进行通信。
- 三次握手:客户端发送一个带有SYN标志的数据包给服务端,服务端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息,最后客户端再回传一个带ACK标志的数据包,代表握手结束,连接成功。
- 如果客户端此前未与服务器建立会话,那么双方需要进行一次完整的 TLS 四次握手。
- SSL/TLS协议,网站想要实现数据HTTPS加密协议访问,保障数据的安全,就需要SSL证书,TLS是SSL与HTTPS安全传输层协议名称
- https://www.cnblogs.com/huanxiyun/articles/6554085.html
发送HTTP请求
- 请求结构:报文首部、空行和报文主体。
- 请求行作用补充??
服务器处理请求
- web服务器诸如Apache、Ngnix、IIS等,解析用户请求,知道了需要调度哪些资源文件,再通过资源文件处理用户请求和参数,从数据库查询信息,最后将结果通过web服务器返回给浏览器客户端。
- 静态资源和动态资源
- web服务器和应用服务器??
返回响应结果
- 响应报文
- 常见状态码
断开连接????
- 为了避免服务器与客户端双方的资源占用和损耗,当双方没有请求或响应传递时,任意一方都可以发起关闭请求
- 四次握手
浏览器解析HTML
- 渲染引擎 Blink(基于 Webkit)和 JavaScript 引擎 V8
- 浏览器通过解析HTML,生成DOM树,解析CSS,生成CSS规则树,然后通过DOM树和CSS规则树生成渲染树。
- 浏览器的解析过程并非是串连进行的,比如在解析CSS的同时,可以继续加载解析HTML。
- 浏览器只能解析静态资源?
页面布局与渲染
- replaint和reflow
参考:
https://www.cnblogs.com/xianyulaodi/p/6547807.html
https://blog.csdn.net/u013450405/article/details/79563810
https://zhuanlan.zhihu.com/p/43369093
https://segmentfault.com/a/1190000012092552
https://www.jianshu.com/p/c1dfc6caa520