从输入一个url到加载页面发生了什么?

  惭愧了,好久以前被面试的时候也有面试官问了我这个问题,可是当时回答的很不满意,因而回头看了不少资料,如今也整理一下。linux

  大体可总结为如下几个步骤:面试

  1. DNS解析。chrome

  2. TCP连接。浏览器

  3. 发送HTTP请求。缓存

  4. 服务器处理而且返回HTTP请求。服务器

  5. 浏览器渲染界面。负载均衡

  6. 链接结束命令行

 

一 DNS解析调试

  简单点说就是寻找域名对应的IP的这个过程。在这个过程当中经历了一下几个环节,浏览器缓存=>系统缓存=>路由器缓存=>IPS服务器缓存=>根域名服务器缓存=>顶级域名服务器缓存=>主域名服务器缓存。xml

  1. 浏览器缓存。在谷歌浏览器下搜索chrome://net-internals/#dns,能够看到dns缓存信息。

  2. 系统缓存。系统缓存能够在命令行中输入 vi  /etc/hosts (linux中),查看,而且设置,固然能够设置假的,用于本地调试。

  DNS负载均衡

  DNS能够返回一个合适的机器的IP给用户,例如能够根据每台机器的负载量,该机器离用户地理位置的距离等等,这种过程就是DNS负载均衡,又叫作DNS重定向。你们耳熟能详的CDN(Content Delivery Network)就是利用DNS的重定向技术,DNS服务器会返回一个跟用户最接近的点的IP地址给用户,CDN节点的服务器负责响应用户的请求,提供所需的内容。

二 TCP链接

  三次握手,确保链接可靠性。

三 HTTP相关

  当服务器与主机创建了链接以后,下面主机便与服务器进行通讯。网页请求是一个单向请求的过程,便是一个主机向服务器请求数据,服务器返回相应的数据的过程。

  1. 浏览器根据 URL 内容生成 HTTP 请求,请求中包含请求文件的位置、请求文件的方式等等;

  2. 服务器接到请求后,会根据 HTTP 请求中的内容来决定如何获取相应的 HTML 文件;

  3. 服务器将获得的 HTML 文件发送给浏览器;

  4. 在浏览器尚未彻底接收 HTML 文件时便开始渲染、显示网页;

  5. 在执行 HTML 中代码时,根据须要,浏览器会继续请求图片、CSS、JavsScript等文件,过程同请求 HTML ;

相关文章
相关标签/搜索