浏览器回车涉及的知识点

107 阅读4分钟

可以针对不同模块进行性能优化

  • DNS域名解析(CDN原理)

  • CDN是将源站内容分发至最接近用户的节点,使用户可就近取得所需内容,提高用户访问的响应速度和成功率。解决因分布、带宽、服务器性能带来的访问延迟问题,适用于站点加速、点播、直播等场景。

  • 部署了CDN的时候

  • 浏览器将域名解析为IP地址,向本地DNS发送请求

  • 本地DNS依次向根服务器、顶级域名服务器、权限服务器发送请求;得到全局负载均衡系统(GSLB)的IP地址

  • 本地DNS再向GSLB发出请求。GSLB主要是根据DNS的IP判断请求的位置,筛选到距离用户较近的SLB的位置,并将SLB的IP作为结果返回给DNS

  • DNS将SLB的IP发送给浏览器,浏览器向其发送请求

  • SLB根据请求的资源,选择最优的缓存服务器发回给浏览器

  • 浏览器将请求重定向到缓存服务器

  • 缓存服务器有其请求的资源就返回;没有的话,向源服务器请求,并返回资源

  • 没有部署CDN的时候

  • 浏览器需要将域名解析为IP地址,因此向本地DNS发出请求

  • 本地DNS依次向根服务器、顶级域名服务器、权限服务器发出请求,最终得到域名的IP地址。

  • DNS将IP发送给浏览器,浏览器向网站服务器IP地址发出请求,得到请求的资源

  • TCP/IP链接

  • 32 比特的序号字段和确认号字段,TCP 字节流每一个字节都按顺序编号。确认号是接收方期望从对方收到的下一字节的序号。

  • ACK 标志位,用于指示确认字段中的值是有效的 ACK=1 有效,ACK=0 无效。

  • SYN 标志位,用于连接建立,SYN 为 1 时,表明这是一个请求建立连接报文。

  • FIN 标志位,用于连接拆除,FIN 为 1 时,表明发送方数据已发送完毕,并要求释放连接。

  • 三次握手 

  • TCP 标准规定,ACK 报文段可以携带数据,但不携带数据就不用消耗序号。

  • TCP 报文段到达服务器主机后,服务器提取报文段,并为该 TCP 连接分配缓存和变量。然后向客户端发送允许连接的 ACK 报文段(不包含应用层数据)。这个报文段的首部包含 4 个信息:ACK 置 为 1,SYN 置为 1;确认号字段置为客户端的序号 + 1;随机选择自己的初始序号(一般为 0)

  • 收到服务器的 TCP 响应报文段后,客户端也要为该 TCP 连接分配缓存和变量,并向服务器发送一个 ACK 报文段。这个报文段将服务器端的序号 + 1 放置在确认号字段中,用来对服务器允许连接的报文段进行响应,因为连接已经建立,所以 SYN 置为 0。最后一个阶段,报文段可以携带客户到服务器的数据。并且以后的每一个报文段,SYN 都置为 0

  • 客户端发送一个不包含应用层数据的 TCP 报文段,首部的 SYN 置为 1,随机选择一个初始序号(一般为 0)放在 TCP 报文段的序号字段中。(SYN 为 1 的时候,不能携带数据,但要消耗掉一个序号)

  •  四次分手

  • FIN 报文段即使不携带数据,也要消耗序号

  • 服务器回送一个确认报文段

  • 服务器发送 FIN 置为 1 的报文段

  • 客户端回送一个确认报文段

  • 客户端发送一个 FIN 置为 1 的报文段

  • 为什么是四次分手,不是三次

  • 当 A 给 B 发送 FIN 报文时,代表 A 不再发送报文,但仍可以接收报文

  • B 可能还有数据需要发送,因此先发送 ACK 报文,告知 A “我知道你想断开连接的请求了”。这样 A 便不会因为没有收到应答而继续发送断开连接的请求(即 FIN 报文)

  • B 在处理完数据后,就向 A 发送一个 FIN 报文,然后进入 LAST_ACK 阶段(超时等待)

  • A 向 B 发送 ACK 报文,双方都断开连接

  • HTTP请求(书:图解Http)

  • 通用首部字段

  • Catch-control:控制缓存的行为(强缓存/协商缓存)

  • Connection:连接的状态

  • http请求报文

  • 报文首部:在客户端和服务器处理是至关重要的信息在此处

  • 请求行:方法、URI、http版本

  • 请求首部字段:http首部字段

  • Accept(Charset/Encoding/Languange/Authorization)

  • 报文主体:用户信息以及资源信息

  • http响应报文

  • 报文首部

  • 状态行:http版本、状态码

  • 响应首部字段:http首部字段

  • 报文主体

  • 浏览器处理返回结果

  • 重排、重绘

  • 链接断开