[TOC]

获取ip解析域名(怎么获取,怎么解析?)
浏览器把输入的域名解析成对应ip

1查找浏览器的缓存 有就返回ip没有就进行下一步

2查找系统缓存 当浏览器缓存中找不到ip时 浏览器会查找本机的hosts文件(Hosts文件主要作用是定义IP地址和主机名的映射关系,是一个映射IP地址和主机名的规定。当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,浏览器会立即打开对应网页,如果没有找到,则浏览器会将网址提交DNS服务器进行IP地址解析。这也是提高快速打开网页的方法)否则进行下一步

3.查找路由器缓存 如果1.2无法找到那么则需要借助网络 路由器一般有自己的dns缓存 将前面的请求发送给路由器 查找isp服务商缓存dns的服务器 找到返回 否则同上

4.递归查询 如果以上步骤还找不到,则ISP的DNS服务器就会进行递归查询,如果主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其他根域名服务器继续发出查询请求报文,而不是让该主机自己进行下一步查询。

5.迭代查询 本地域名服务器采用迭代查询,它先向一个根域名服务器查询。本地域名服务器向根域名服务器的查询一般都是采用迭代查询。所谓迭代查询就是当根域名服务器收到本地域名服务器发出的查询请求报文后,要么告诉本地域名服务器下一步应该查询哪一个域名服务器,然后本地域名服务器自己进行后续的查询。(而不是替代本地域名服务器进行后续查询)

发请求(发到哪,通过什么发?)
浏览器向web发送一个http请求 拿到域名对应的IP地址之后,浏览器会向服务器发起TCP的连接请求。这个连接请求到达服务器端后,进入到网卡,然后是进入到内核的TCP/IP协议栈,最终到达WEB程序,最终建立了TCP/IP的连接,通过get/post发送 请求头) tcp的三次握手(1.拿到IP地址后,浏览器第一次发起连接请求,进入等待回复状态2.服务器端接收到请求之后,如果同意连接,向客户端发送确认 3.客户端收到确认后需再发一次请求,此时携带要发送给Server的数据,服务器端收到客户端确认后,此时TCP连接,可以发起Http请求。)

并建立连接发起http请求 等待服务器响应http请求(怎么响应,服务器端发生了什么)
服务器拿到客户端发送过来的包 拿到请求路径 根据路径对应的扩展找到文件 判断文件是否为静态文件,如果是静态文件则直接读取内容 否则将文件交给后端进行处理,然后服务器将数据打包通过之前的连接发送给客户端 )

浏览器得到html代码 并解析浏览器请求html代码中的资源(按照什么顺序解析,在加载的哪个时间节点上开始解析) 然后渲染页面(按照什么顺序渲染)
浏览器在解析html文件时,会”自上而下“加载,并在加载过程中进行解析渲染。在解析过程中,如果遇到请求外部资源时,如图片、外链的CSS、iconfont等,请求过程是异步的,并不会影响html文档进行加载。
解析过程中,浏览器首先会解析HTML文件构建DOM树,然后解析CSS文件构建渲染树,等到渲染树构建完成后,浏览器开始布局渲染树并将其绘制到屏幕上。
先解析head标签中的代码,head标签中会包含一些引用外部文件的代码,从开始运行就会下载这些被引用的外部文件 当遇到script标签的时候 浏览器暂停解析将控制权交给JavaScript引擎(解释器)如果