• 详解--从地址栏输入url到页面展现中间都发生了什么?


    这是一个综合性很强的问题,个人理解包含以下七个基本点:

       1.在浏览器地址栏输入url并按下回车。

       2.浏览器检查当前url是否存在缓存和缓存是否过期。

       3.域名解析(DNS解析url对应的ip)。

       4.根据ip建立tcp链接(三次握手)。

       5.用当前url发送http请求。

       6.服务器处理请求,浏览器接收响应。

       7.浏览器渲染页面。

    接下来分析一下每一个基本点所干的事情:

      1.在浏览器地址栏输入url并按下回车。

      分析:略

      2.浏览器检查当前url是否存在缓存和缓存是否过期。

      分析:浏览器检查当前url是否存在缓存,如果存在,则检查缓存资源是否过期,如果不存在直接进入阶段3。如果资源过期进入阶段3,没有过期则直接使用。

      3.域名解析(DNS解析url对应的ip)。

      分析:域名解析实际上是将域名解析为ip地址的过程。

         首先,浏览器会检查本地hosts文件中是否有此url的映射关系,如果有就调用这个ip地址映射,完成域名解析。

         如果没有,则会查找本地DNS解析器缓存,如果查找到则返回。

         如果还是没有,则会查找本地DNS服务器,如果查找到则返回。

         最后迭代查询,按根域服务器 ->顶级域(.com)->第二层域(yeahfei.com) ->子域(admin.yeahfei.com)的顺序找到IP地址。

      4.根据ip建立tcp链接(三次握手)。

      分析:通过第3阶段已经拿到了服务器的ip地址,在获取到IP地址后,便会开始建立一次连接,这是由TCP协议完成的,主要通过三次握手进行连接。

        第一次握手: 建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认; 

        第二次握手: 服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

        第三次握手: 客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成                                       三次握手。

         

      

      5.用当前url发送http请求。

      分析:略

      

      6.服务器处理请求,浏览器接收响应。

      分析:略

      

      7.浏览器渲染页面。

      分析:如果说响应的内容是HTML文档的话,就需要浏览器进行解析渲染呈现给用户。整个过程涉及两个方面:解析和渲染。在渲染页面之前,需要构建DOM树和CSSOM树。

           在浏览器还没接收到完整的 HTML 文件时,它就开始渲染页面了,在遇到外部链入的脚本标签或样式标签或图片时,会再次发送 HTTP 请求重复上述的步骤。在收到 CSS 文件后会对已经渲染的页面重新渲染,加入它们应有的样式,图片文件加载完立刻显示在相              应位置。在这一过程中可能会触发页面的重绘或重排。

      

  • 相关阅读:
    维特比算法 实现中文分词 python实现
    最大匹配算法进行分词 前向 后向 python实现
    动态规划 编辑距离问题(Edit Distance Problem)
    “RuntimeError: Trying to backward through the graph a second time, but the buffers have already been freed. Specify retain_graph=True when calling backward the first time”
    PCA主成分分析 原理讲解 python代码实现
    卷积的理解 python代码实现 pytorch 多输入多输出通道的理解
    AdaBoost python代码实现
    随机森林 python实现
    Apache配置转发
    JS 由前端保存到文件
  • 原文地址:https://www.cnblogs.com/zifayin/p/9534831.html
Copyright © 2020-2023  润新知