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

  惭愧了,很久之前被面试的时候也有面试官问了我这个问题,但是当时回答的很不满意,于是回头看了很多资料,现在也整理一下。

  大致可总结为以下几个步骤:

  1. DNS解析。

  2. TCP链接。

  3. 发送HTTP请求。

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

  5. 浏览器渲染界面。

  6. 连接结束

一 DNS解析

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

  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 ;

原文地址:https://www.cnblogs.com/zhouwenbo/p/8404259.html