ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
#### 浏览器获取资源过程 1. 先去查找缓存,检测缓存是否过期,直接返回缓存的内容 2. 看域名是否被解析过,DNS协议,将域名解析成ip地址(DNS基于UDP协议) 3. 如果请求时https,那么会做一个ssl协商,保证请求的安全性 4. 通过ip地址来进行寻址,排队等待,最多能发送6个http请求 5. 创建tcp连接,三次握手 6. 利用tcp传输数据,拆分为数据包,有序,可靠,服务器会按顺序来接收 7. 发送http请求(请求行,请求头,请求体) 8. tcp连接默认不会断开,因为有个字段叫keep-alive,为了下次传输数据时,可以复用上次创建的连接 9. 服务器收到数据后,发送响应数据,响应行,响应头,响应体 10. 服务器状态码:301,302会进行重定向,如果重定向了就会重新发另一个请求 11. 服务器状态码304,去查询浏览器缓存进行返回 #### 浏览器解析资源过程 1.将html转化为DOM树 2.将css解析成cssom样式表 ``` css link标签放在最下面可能会导致css的重绘 构件dom树的时候不会被css解析阻塞,但是渲染render tree的过程会被css阻塞 js阻塞html解析,也会阻塞html渲染,js要等上面的css加载完毕,保证js可以操作样式 ``` 3.计算出DOM树种每个节点的具体样式(Attachment) 4.创建render tree,将dom树中的可见节点,添加到布局树种,并计算节点渲染到页面的坐标位置layout 5.通过布局树,进行分层 ### 备用知识 #### 1.网络七层模型 物联网淑慧试用 应用层 + 应用层 + 表示层 + 会话层 传输层 (TCP, UDP) 网络层 数据链路层 物理层 #### 2.http历史 http0.9:负责传输的html,最早的时候没有请求头和响应头 http1.0:提供了http的header,根据了header的不同,来处理不同的资源 http1.1:默认开启了keep-alive,tcp的长连接,链接复用,管线化(同时可以建立6个链接) ​ 服务器处理多个请求(对头阻塞问题) http2: + 用同一个tcp链接来发送数据,一个域名一个tcp(多路复用),多个请求用一个tcp链接 + 头部压缩 + 服务器可以推送数据给客户端 http3:解决了tcp的队头阻塞问题,采用了udp,并在udp上一层加了一层quic协议