从浏览器输入url到页面展示出来的过程

我们可以把这个过程分为两个部分来分析

  1.用户输入url  到  浏览器拿到服务端返回的数据

  2.浏览器拿到数据  到  浏览器成功渲染拿到的数据

第一部分:

  1.用户输入url地址

    在用户输入url的时候,浏览器会从历史记录、书签等地方找输入的字符串可能对应的url然后给出智能提示。

  2.DNS解析

    用户点击回车发起请求,浏览器第一步要做的就是解析这个域名,

    一般来说浏览器会首先查看本地硬盘的hosts文件,如果有的话就直接使用hosts中对应的ip

    如果在本地hosts文件中没有找到对应的ip地址,浏览器会发送一个DNS请求到本地DNS服务器(一般由网络接入服务商提供,电信、移动)

    本地DNS服务器接到请求后,本地DNS服务器会首先查询他的缓存记录,如果缓存中有就直接返回结果(递归方式进行查询),如果没有本地DNS服务器向DNS根服务器进行查询

    根DNS服务器本身没有记录域名和ip的对应关系,而是告诉本地DNS服务器到域服务器上去查询,并给出域服务器地址

    本地DNS服务器继续向域服务器(.com)发送请求,而域服务器会告诉本地DNS服务器,域名解析服务器的地址

    最后本地DNS服务器向域名解析服务器发送请求,得到域名和ip的对应关系。本地DNS服务器会缓存这个地址。

  3.浏览器向web服务器发送一个HTTP请求

    浏览器与远程web服务器通过TCP三次握手来建立一个TAP/IP连接

       第一次握手:建立连接,客户端A发送SYN=1、随机产生Sep=client_isn的数据包到服务器B。等待服务器确认
       第二次握手:服务器B收到请求后确认联机(可以接受数据),会发起第二次请求,ACK=(A的Sep+1)、SYN=1,随机产生Sep=client_isn的数据包到A。
       第三次握手:A收到后检查ACK是否正确。若正确,A会再发送确认包ACK=(B的Sep+1)、ACK=1,服务器B收到后确认Seq与ACK的值,若正确建立连接。

    浏览器通过TCP连接向web服务器发送一个http请求,请求信息包含请求方法 URL 协议/版本、请求头、请求正文。

  4、服务器的永久重定向相应。比如  “http://google.com/” 重定向到 “http://www.google.com/”,浏览器跟踪重定向地址。

  5、服务器处理请求,并返回一个HTTP响应(状态行、响应头、响应正文)

第二部分:

  浏览器解析HTML文件时会‘自上而下’加载,并在加载过程中进行解析渲染,在解析过程中如果遇到请求外部资源时,请求过程是异步的不影响HTML文档加载。

  浏览器解析过程:解析html以构建dom树=>解析css文件构建render树=>布局render树=>绘制render树

原文地址:https://www.cnblogs.com/jinyu-cnblogs/p/13555542.html