输入URL后发生了什么(上)

104 阅读2分钟

浏览器进程将URL通过进程间通信发给网络进程

然后网络进程要先查找本地缓存

查找缓存

浏览器中的网络进程在本地查找是否存在有效的缓存,如果有则直接将缓存返回给浏览器进程,进行展示。

查找缓存的过程

  1. 如果是https 在设置了离线缓存,请求拦截的情况下,会先查找service worker
  2. 查找memory cache (内存缓存)一般用于存储脚本 ,图片等
  3. 查找disk cache(硬盘内存)比memory cache 空间更大,存储的有效时间更长
  4. 如果是http2 查找push cache(推送内存)通常存在在session中

解析URL 获取服务器IP地址(DNS解析)

如果没有有效的缓存,那么就开始解析url 获取服务器的IP地址

DNS过程

本地查找(递归查询)

  1. 浏览器缓存
  2. 本地host
  3. 本地DNS缓存
  4. 本地DNS服务器

本地DNS转发(迭代查询)

  1. 本地dns服务器将本地主机发来的查询报文转发给根服务器(.)
  2. 根服务器返回包含域名的顶级域名服务器的IP
  3. 本地dns服务器将查询报文发给顶级域名服务器
  4. 顶级域名服务器返回权威域名服务器的IP
  5. 本地dns服务器将查询报文发给权威域名服务器
  6. 权威域名服务器把IP返回给本地DNS服务器
  7. 本地DNS服务器将域名和IP地址的映射返回给本地主机

拿到地址后,开始建立连接

tcp 三次握手

  1. 客户端 发送一个syn报文和 seq初始化随机序列号
  2. 服务器收到后,返回 自己的seq ,和ack 确认号(客户端的seq+1)
  3. 客户端收到服务器的返回后,向服务器发送 确认ack号(服务器seq+1) ,seq(服务器的ack)

如果是https 进行TLS握手

连接建立之后,正式发送请求