1.域名解析(DNS解析)
DNS解析的目的就是为了找到域名对应的IP
过程如下:
1.浏览器查找自身缓存是否缓存该域名对应的ip,如果有解析结束
2.没有浏览器缓存没有命中,浏览器会检查本地系统文件hosts
3.如果本地hosts文件没有命中,则去请求本地域名服务器来解析
4.如果本地域名服务器没有命中,则会跳转到根域名服务器、顶级域名服务器、权限域名服务器得到对应ip
5.浏览器、本地hosts、本地服务器缓存

2.TCP/IP连接
三次握手连接
1.客户端发送syn给服务端,等待服务端确认
2.服务端返回syn和ack给客户端
3.客户端收到后发送ack给客户端,连接成功

3.浏览器和服务器之间的通讯
1.客户端的http请求(请求头、请求方法、请求正文)
2.服务端处理数据(ngnix、apache)
这里暂不做赘述,以后有时间在丰满
4.浏览器缓存
1.硬盘缓存(disk cache)、内存缓存(memory cache)
2.区别:脚本、图片存储在内存缓存中,退出进程会清除,css存储在硬盘缓存中
3.强制缓存和协商缓存(弱缓存)
4.强缓存
a.expires为缓存时间,服务器返回,在时间内缓存
b.cache-control:
public-浏览器所有文档缓存
private-浏览器仅文档缓存
no-cache-走协商缓存
no-store-所有信息都不缓存
max-age:number-在规定时间内缓存
c.cache-control优先级高于expires
5.弱缓存
a.last-modified/if-modified-since均为服务器返回的时间,last-modified为服务器返回时间,当发
送请求时,请求报文上会携带if-modified-since和服务器的last-modified对比,如果在last-
modified之前则缓存生效,否则重新请求
b.etag/if-none-match,etag为服务端返回标识,当发送请求时,请求报文上if-none-match会携带标识
和服务器上作对比,命中则读取缓存,否则重新请求
c.etag/if-none-match优先级高于last-modified/if-modified-since
5.关闭连接
四次挥手关闭连接
1.客户端发送FIN请求断开连接
2.服务端收到后发送ACK包针对客户端的FIN的确认应答
3.服务器发送FIN请求断开连接
4.客户端收到后发送ACK包针对服务端的FIN的确认应答

6.浏览器解析渲染
1.html解析为dom树
2.css解析为ObjectRender树
3.dom树和ObjectRender树合成render树渲染
4.html、css、js解析和加载之间的关系???
a.js加载会影响render树的渲染,原理:js引擎线程加载和GUI线程处理是互斥的
b.css加载会影响html的渲染,但不会影响其解析
