点击网页到内容展示背后发生了什么

解析URL

DNS域名解析

  1. 浏览器缓存

  2. 计算机缓存,域名表,本地hosts文件

  3. 域名服务器,运营商有代理服务器(本地服务器),根服务器,顶级域名服务器,权限域名服务器

    1. 递归查询

    2. 迭代查询

HTTP协议

加密

  1. 对称加密,同一把秘钥(AES,DES),秘钥传递不安全

    1. 缺点:秘钥传递不安全,容易泄露

  2. 非对称加密,RSA等

    1. 优点:解决了秘钥泄露问题

    2. 缺点:攻击者可以把自己的公钥替换成服务端的公钥给客户端,客户端用公钥加密后传递,攻击者截取信息后用自己的私钥解密,然后再用服务端的公钥加密,再传递给服务端,进而达到长期监听的目的,这就是中间人攻击。

  3. CA机构,服务端将自己的公钥发给CA机构,CA机构会将这些信息非对称加密加密起来,加密后的东西变成了证书,之后送给服务端(电话,电子邮件,物理邮件)。之后把CA私钥送给客户端(浏览器自带,计算机出厂自带),以方便客户端解密证书。之后的通信,服务端要先把证书发给客户端,只要客户端能够解密证书就说明证书没有被篡改过。

    1. 优点:解决了中间人攻击的问题

    2. 缺点:非对称加密耗时,更费资源

  4. 非对称加密传递对称加密的秘钥

    1. 缺点:像RSA之类的非对称加密生成秘钥的过程非常耗费资源,秘钥固定,一旦泄露,历史消息也都不再安全,不具备前向保密性

  5. DH秘钥交换(基于离散对数DH秘钥交换)(基于椭圆曲线的ECDH秘钥交换)

    1. 优点:生成私钥过程耗费资源少。

  6. tls1.2是目前使用最广泛的版本,但是流程太繁琐

  7. tls1.3做了大胆的改进,把所有要传递的加密材料,随机数等合并发送,只需要一个来回就能完成安全通信建立

http1.0

  1. 短连接

http1.1

  1. 长连接,加了保持连接的机制,请求完成后不会立马关闭

  2. 但是后面请求需要等待前面请求结束,如果一个网页同时加载的文件特别多就会产生很长的等待时间

    1. 管线化机制(pipelining)允许多个请求一起发出,无需等待上一个请求响应,但是此时仍然存在问题,例如前面请求数据特别大或丢失就会堵塞后面的请求,尽管后面的请求可以跑的很快也被迫慢下来

http2

将单个请求数据做了拆分,拆分成若干个小块,对方接受后按顺序重组,虽然总传输时间不变,但是拆分后,小请求更快完成加载体验上更好。因为头部高度一致hpack头部压缩。

http3

基于UDP解决了队头堵塞

TCP