首页 > 其他分享 >浏览器工作过程及相关名词

浏览器工作过程及相关名词

时间:2024-07-16 20:31:26浏览次数:12  
标签:HTTP 浏览器 名词 -- 域名 密钥 相关 加密

网页获取

  1. 在计算机网络中,双方通过知道彼此的 IP 地址,即可建立通信

    • 通信协议包括 TCPUDP 两种,其中:
      TCP 建立连接过程如下(三次挥手):

      sequenceDiagram participant A participant B A->>B: SYN B->>A: SYN, ACK A->>B: ACK

      TCP 断开连接过程如下(四次握手):

      sequenceDiagram participant A participant B A->>B: FIN B->>A: ACK A->>B: FIN B->>A: ACK
  2. IP 地址不便记忆,因此使用域名代替,IP 地址与域名一一对应,形成域名表,即 hosts 文件内容

    127.0.0.1 mycomputer1.com
    127.0.0.1 mycomputer2.com
    
  3. 域名表存储有上限,且不便跨设备共享,因此需要域名服务器

  4. 域名服务器采用分布式数据库的形式存储各种域名,并根据域名段进行划分,如 example.com 可拆分为 comexample.com 域名段

  5. 为提高查询速度,运营商会建立代理服务器,通过缓存机制缩短查询响应时间

    • 域名服务器分四种
      • 本地服务器(代理服务器)
      • 根服务器
      • 顶级域名服务器(如 comorg 等)
      • 权威域名服务器(如 example.com 等)
  6. 域名服务器共同组成 DNS 服务,解决了客户端查询 IP 的问题

    • 浏览器缓存与计算机缓存会将部分域名表进行缓存,并非每次都需要使用 DNS 服务
  7. 双方的请求数据与响应数据均采用约定好的格式,即 HTTP

  8. 明文传输的数据在各个路由器之间传递过程中,容易被截获、篡改,因此需要对内容进行加密处理
    一般采用非对称加密方法,为防止中间人攻击,需要保护并传输域名与公钥等信息,因此产生了 CA 机构

  9. CA 机构将域名与公钥等信息,将内容经过哈希处理后,产生的哈希结果采用非对称加密技术加密,制成 CA 证书并传输给接收方,之后将证书密钥传输给发送方

  10. 由于非对称加密计算量大、密文长,因此普遍采用对称加密,并使用非对称加密处理对称加密的密钥,这一过程称为 RSA 密钥交换

  11. 为提升性能,目前采用 DH 密钥交换,并添加约定好的随机数(防止伪造)生成密钥,该密钥称为主密钥

  12. 主密钥不可用于加密,需要将主密钥再合成一次,并派生出两个密钥,分别为客户端密钥服务端密钥

    • 不可用于加密:当攻击者无法解密时,将加密数据重新发送给发送方,造成发送方事务紊乱
  13. 在以上两个密钥基础上,还需要派生出其他密钥:

    1. MAC Key:验证数据
    2. Client IV、Server IV:加密初始化向量
  14. 自第 11 步至此称为 TLS1.2 加密流程,此时放弃了非对称加密方法

    • TLS1.3 将所有加密材料与随机数等合并发送
    • TLS 是 SSL 的延展,完善了 SSL 的安全漏洞
  15. HTTP 结合 TLS 构成了 HTTPS

  16. HTTP/1.0 中,每次请求都会建立各自的 TCP 连接,造成资源浪费,因此 HTTP/1.1 通过连接保持机制补全了这一缺点,并采用管线化机制进一步提高了请求效率

    • 连接保持机制:请求完成后,允许下一个请求继续使用此条连接
    • 管线化机制:允许多个请求一起发出,无需等待上一个请求响应
  17. HTTP/2 则在 HTTP/1.1 基础上,将单个请求数据进行拆分,接收方接收后按顺序重组,解决了数据包大小不一导致效率变低的问题

  18. HTTP/2 在拆分时,将数据分为头部帧数据帧,而头部帧具有重复性,因此可以引入 HPACK 头部压缩

  19. HTTP/3 采用了 UDP 通信协议,并实现了 QUIC 连接协议

    • UDP 规避了 TCP 的队头堵塞问题
    • QUIC 本质上是将连接建立过程与 TLS 过程融合

网页渲染

前五步统称为关键渲染路径

  1. 解析 HTML 文档并构建 DOM 树(Document Object Model)

    • DOM 树是 HTML 文档在浏览器中的对象表示,可以被 JavaScript 操作(参考 Web APIs | SRIGT
    • 解析过程有一个主线程,其过程顺序执行(自上而下)
    • 遇到 <script> 会执行其中的代码,执行时主线程停止解析,直至代码执行完成
    • 另外有预扫描线程,负责扫描 HTML 文档,并提前将引用的外部文件采用异步方式下载
  2. 解析 CSS 并构建 CSSOM 树(CSS Object Model)

    • CSSOM 树是 CSS 在浏览器中的对象表示
  3. 从 DOM 根节点开始,合并 DOM 与 CSSOM,形成渲染树(render tree)

  4. 浏览器根据渲染树中,每个元素节点的样式,计算每个可见节点的布局(宽高、位置等)

    • 可见节点:其 display 样式不是 none 的节点
    • 对于未设置宽高的图片,首先按非可见节点处理,当图片加载完成后,重新计算布局,此过程称为重排(reflow)
  5. 在第一次完成布局后,浏览器会将元素节点及其样式绘制在屏幕上

    • 重绘(repaint)指将变化的布局重新绘制,主要在以下情况下触发:
      1. 重排
      2. 组合,即渲染过程中出现新的图层需要组合,包括重排

    重排与重绘合称回流(layout thrashing)

  6. 被标记 asyncdefer 等的 <script> 开始加载并执行

完整加载过程

以目前广泛使用的 HTTP/2 为例

  1. 在浏览器中,输入 URL 指定目标网页
  2. 先通过本地缓存或 DNS 服务,根据 URL 获取对应的 IP 地址
  3. 通过 CA 证书与 DH 密钥交换,完成 TLS
  4. 根据 TCP 建立连接,由浏览器发起 HTTP(S) 请求
  5. 接收到响应的 HTML 文档后,根据 TCP 断开连接
  6. 浏览器将 HTML 文档渲染并展示
graph LR URL--domain<br/>name-->本地缓存或DNS--IP-->1["CA & DH & TLS"]--encrypted<br/>request<br/>data-->TCP--encrypted<br/>response<br/>data-->2["CA & DH & TLS"]-->Browser

-End-

标签:HTTP,浏览器,名词,--,域名,密钥,相关,加密
From: https://www.cnblogs.com/SRIGT/p/18306034

相关文章

  • 云计算实训06——find、stat、touch、tree、scp、crontab指令相关应用
    一、find命令1.find的作用:对文件进行搜索2.基本语法:                    find[文件路径][选项选项的值]3.常见的选项-name根据文件的名称搜索文件,支持通配符*-typef 代表普通文件,-typed代表目录4.*通配符在l......
  • MySQL版本的相关问题:com.mysql.cj.jdbc.Driver和com.mysql.jdbc.Driver
    原文链接:https://www.cnblogs.com/daemonFlY/p/9820541.html1.在使用mysql时,控制台日志报错如下:Loadingclass`com.mysql.jdbc.Driver'.Thisisdeprecated.Thenewdriverclassis`com.mysql.cj.jdbc.Driver'.ThedriverisautomaticallyregisteredviatheSPIand......
  • 无人机区域常见名词
    融合空域是指有其他航空器同时运行的空域。隔离空域是指专门分配给无人机系统运行的空域,通过限制其他航空器的进入以规避碰撞风险。人口稠密区是指城镇、村庄、繁忙道路或大型露天集会场所等区域。重点地区是指军事重地、核电站和行政中心等关乎国家安全的区域及周边,或......
  • 了解一下人工智能(AI)相关概念
    人工智能(AI)不仅仅是一个技术流行语,其是一种迅速重塑我们生活和工作方式的变革力量。当我们站在一个新时代的顶端时,人工智能技术已经做好了未来的准备,在各个领域释放出前所未有的可能性。现在各种关于人工智能的技术层出不穷,每种不同的技术所针对的技术重点不同,现在就让我们根据......
  • 【C++】链表相关的项目(2.0)
    链表相关的项目1.0需要请点击       ---------------------------------------------------准备工作首先弄几个可能会需要的头文件:#include<stdio.h>#include<stdlib.h>#include<string.h>typedefintADT;//定义自定义数据类型​​因为写的是关于......
  • 底软驱动 | 大厂面试爱考的C++内存相关
    文章目录C++内存相关C++内存分区C++对象的成员函数存放在内存哪里堆和栈的区别堆和栈的访问效率“野指针”有了malloc/free为什么还要new/deletealloca内存崩溃C++内存泄漏的几种情况内存对齐柔性数组参考推荐阅读C++内存相关本篇介绍了C++内存相关的知识。C++......
  • 信息安全从业者考试认证大全_信息化相关的证书
    证书是IT从业者知识水平能力的一个体现,考证同时也是拓展自身知识的一个方法。近年来,安全行业风生水起,各种认证层出不穷,眼花缭乱。这里不对任何一个证书做评价,只是做出介绍,在国内,对任何事物的评价都会引起围攻。所以笔者不敢妄谈一个证书的含金量,会具体谈到每个证书笔者所了......
  • 第二部分:关键技术领域的开源实践【高性能Web服务器和反向代理服务器的代名词】
    Nginx能够解决企业中多种常见的痛点需求,尤其在高流量、高性能和安全性方面表现突出。以下是Nginx可以帮助企业解决的一些主要痛点:高并发处理能力:Nginx使用异步非阻塞的事件驱动架构,这使得它能够高效地处理大量并发连接。对于访问量大的网站或服务,Nginx可以显著提高响应速......
  • 安防视频监控EasyCVR平台浏览器http可以播放,https不能播放,如何解决?
    安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台基于云边端一体化架构,兼容性强、支持多协议接入,包括国标GB/T28181协议、部标JT808、GA/T1400协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK、华为SDK、宇视SDK、乐橙SDK、萤石云SDK等。平台能对外分发RTMP、RT......
  • 网络安全相关的一些学习笔记
    网络安全?本文主要为《计算机网络》网络安全章节的学习笔记,也包括部分来自其他博客与网站的段落。1.一些名词解释密码编码学(cryptography):密码体制的设计学密码分析学(cryptanalysis):在未知密钥的情况下从密文推演出明文或密钥的技术上述二者合称密码学(cryptology)无条件安全(理......