• 从浏览器输入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树

  • 相关阅读:
    c++数据类型
    c++注释
    c++基本语法
    c++环境配置
    c++简介
    9 HTTP和HTTPS
    12 RESTful架构(SOAP,RPC)
    剑指10二进制中1的个数
    第2章 新手必须掌握的Linux命令
    11个炫酷的Linux终端命令大全
  • 原文地址:https://www.cnblogs.com/jinyu-cnblogs/p/13555542.html
Copyright © 2020-2023  润新知