zoukankan      html  css  js  c++  java
  • 从输入URL到页面加载发生了什么

    总体来说可以分为以下几个过程:

    1.DNS解析;

    2.TCP连接;

    3.发送HTTP请求;

    4.服务器处理请求并返回HTTP报文;

    5.浏览器解析渲染页面;

    6.连接结束;

    具体过程分析:

    DNS解析

    DNS解析的过程就是寻找哪台机器上有你需要资源的过程,实现了由网址都ip地址的转换。互联网上每一台计算机都有唯一的标识:ip地址,但是ip地址记忆并不方便,用户更喜欢去根据网址来寻找,所以DNS可以来进行转换。

    TCP连接

    http协议是使用TCP作为传输层协议的,当TCP出现瓶颈时,HTTP也会受到影响;使用三次握手建立连接。

    TCP三次握手过程如下所示:

    1.客户端发送SYN(seq=x)报文给服务器端,进入SYN_SEND状态;

    2.服务器端接受到SYN报文,回应一个SYN(seq=y)ACK(ACK=X+1)报文,进入SYN-RECV状态。

    3.客户端收到服务器端的SYN报文,回应一个ACK(ACK=Y+1)报文;

    三次握手完成,TCP客户端和服务器端成功建立连接。

    HTTP请求

    主要发生在客户端,发送HTTP请求的过程就是构建HTTP请求报文并通过TCP协议中发送到服务器指定端口,HTTP请求报文由三部分组成:请求行、请求报头和请求正文。

    服务器处理请求并返回HTTP报文

    后端从在固定的端口接受到TCP报文开始,这一部分对应于编程语言中的socket。它会对TCP连接进行处理,对HTTP协议进行解析,并按照报文格式进一步封装成HTTP Request对象,供上层使用,http响应报文也有三个部分组成:状态码、响应报头、响应报文。

    状态码:

    状态码由三位数字组成,第一个数字定义了响应的类别,具有五种可能取值:

    1xx:指示信息--表示请求已接受,继续处理;

    2xx:成功--表示请求已被成功接收、理解接受;

    3xx:重定向--要完成请求必须要进行进一步操作;

    4xx:客户端错误--请求有语法错误或请求无法实现;

    5xx:服务器端错误--服务器端未能实现合法的请求。

    浏览器解析渲染页面

    浏览器在收到HTMLCSSJS文件后,首先浏览器解析HTML文件构建DOM树,然后解析CSS文件构建渲染树,等到渲染树构建完成后,浏览器开始布局渲染树并将其绘制在屏幕上。这个过程设计到reflow(回流)和repain(重绘);

    回流:DOM节点中的各个元素都是以盒模型的形式存在,这些都需要浏览器计算其位置和大小等,这个过程称为回流;

    重绘:当盒模型的位置、大小以及其它属性,如颜色、字体、等确定下来后,浏览器便开始绘制内容,这个过程称为重绘;

    页面在首次加载时必然会经历回流和重绘。

    js解析是由浏览器中js解析引擎完成的,js是单线程运行,也就是说一个时间只能做一件事,所有的任务需要排队;js的执行机制可以看成是一个主线程加上一个任务队列。同步任务就是放在主线程上的任务,异步任务就是放在队列中的任务。

  • 相关阅读:
    (引)spring学习笔记1.什么是控制反转
    Arduino 各种模块篇 步进电机 step motor 舵机 servo 直流电机 总复习
    Raspberry Pi Wireless Adaptor
    Pyramid 使用总结1
    Arduino 各种模块篇 人体红外感应模块 proximity sensor
    Pyramid 使用总结2
    Webcam Streaming Desktop Recording on Linux for ubuntu or its destros
    Arduino 各种模块篇 步进电机 step motor( 不用库,不用shield, 纯)
    Arduino 各种模块篇 motor shield 电机扩展板(舵机、直流电机、步进电机party)
    转载 stepper motors
  • 原文地址:https://www.cnblogs.com/LYliangying/p/9588070.html
Copyright © 2011-2022 走看看