HTTP请求的整个过程

    xiaoxiao2023-11-14  162

    这是这两天面试的时候的一道面试题,当时答得不好,现在总结了一下。

    一次完整的 http 请求包括一下几个步骤【这仅是个人的理解】

    DNS解析--->TCP 连接--->浏览器发送http请求--->服务器响应请求--->浏览器解析html文件--->浏览器布局渲染

    1.DNS域名解析

         (1) 首先会在浏览器DNS缓存中搜索是否有对应的IP映射(并且是有效的),如果找到的话,就调用该映射并且停止解析;如果没找到的话就执行第二步;

        (2)在操作系统DNS缓存中查找是否有对应的IP,如果有的就停止解析,否则就执行第三步;

        (3)查找本地系统 hosts 文件,在hosts文件中查找是否有对应的IP,如果有的话就停止解析,否则就向本地配置首选的DNS服务器发起域名解析的请求。

    2.TCP连接。

           TCP通过三次握手创建连接【保证数据传输的可靠性】,具体说一下三次握手的过程(此处就不细说了)。

    3.客户端的浏览器向服务器发起http请求。【请求报文包括请求行、请求报头、空行、正文】在此不再详述

    4.服务器对浏览器发过来的请求作以响应。【报文中 包括状态行、响应头部、空行、响应正文】在此也不详述(在这里常见的状态码要记住)

    5.浏览器对HTML进行解析

           客户端的浏览器收到服务器的响应之后就按照顺序一个一个地对HTML文件进行解析,构建DOM树,当解析到外部资源文件CSS或JS文件时,会对服务器发送请求,下载资源文件,如果下载的是CSS文件,浏览器会一边下载CSS文件,一边对后面的html文件进行解析,并且构建DOM树,如果下载的是JS文件,那么浏览器就停止对后面html文件的解析,此时就会出现JS页面阻塞的问题。

    6.浏览器布局进行布局和渲染。

    参考:

    HTTP请求报文和响应报文的格式:https://blog.csdn.net/Atalanta1/article/details/89715037

    TCP三次握手的过程详述:https://blog.csdn.net/Atalanta1/article/details/89351281

    最新回复(0)