HTTP 之在浏览器地址栏输入域名地址后的完整流程

  1. Chrome 搜索自身的 DNS 缓存,找到则结束解析,返回内容
  2. 搜索操作系统自身的 DNS 缓存 (浏览器缓存没找到或失效),找到则结束解析,返回内容
  3. 读取本地 HOST 文件,查找配置项
  4. 如果 HOST 中也没有找到,则浏览器会发起一个 DNS 的系统调用,访问宽带运营商的 DNS 服务器
    1. 宽带运营商服务器会查看本身的缓存
    2. 如果没有找到缓存,则运营商服务器会发起一个迭代 DNS 解析的请求 (从最高级域名开始,层层向下解析,直到找到最底层域名的服务器的 IP,然后最底层服务器会向运营商服务器返回域名所对应的 IP。然后运营商服务器会把结果返回给操作系统内核同时缓存起来,接着操作系统内核会把结果返回给浏览器,最终浏览器拿到了域名地址对应的 IP 地址。)
  5. 浏览器获得域名对应的 IP 地址后,发起 HTTP 三次握手(浏览器通过随机端口向 Web 服务器发起连接请求,这个连接请求通过层层路由设备,最终到达服务器的网卡,然后进入到内核的 TCP/IP 协议栈,还有可能经过防火墙的过滤,最终到达 Web 服务端,此时就建立起了 TCP 连接)
  6. TCP/IP连接建立起来以后,浏览器就可以向服务器发送HTTP请求了
  7. 服务器端接收到这个请求,根据路径参数,经过后端的一些处理之后,拔出力结果返回给浏览器,比如 HTML 页面代码
  8. 浏览器拿到了完整的 HTMl 页面代码,在解析和渲染这个页面的时候,里面的 JS,CSS,图片静态资源都是通过一个个 HTTP 请求来获取到的
  9. 最终浏览器根据拿到的资源对页面进行渲染,把一个完整的页面呈现给用户