HTTP请求过程

    技术2024-11-01  22

    HTTP请求过程

    当我们在浏览器地址栏输入一个网站地址(比如www.bilibili.com)时,点击回车键后浏览器过段时间后会返回给我们一个页面,这其中的过程是什么样呢?(一个常见面试题)

    1. DNS 域名解析,找到对应的 IP 地址

    DNS域名解析的过程如下:

    (1).浏览器缓存解析:首先搜索浏览器本身的缓存,查看缓存中是否存在输入域名对应的IP地址,有且没有过期的话解析到此结束。 (2).系统缓存解析:情况一不存在时,浏览器会搜索操作系统本身的DNS缓存,有且没有过期的话解析到此结束。 (3).路由器解析:情况一、二不存在时,会向局域网所归属路由器发送请求。 (4).互联网服务提供商DNS解析:上述情况不存在时,最后会向根服务器发送请求。
    2.TCP连接建立

    三次握手机制建立连接,下面是三次握手流程。

    扩展:为什么要三次握手?

    答:第三次握手是为了防止失效的连接请求到达服务器后,让服务器错误打开连接。

    三次握手的作用是确保双方的收发能力正常。

    第一次握手:客户端发送网络包,服务端接收。 服务端得到结论:客户端发送能力,服务端接收能力正常 第二次握手:服务端发包,客户端接收 客户端得到结论:服务端接发能力正常,客户端接发能力正常 第三次握手:客户端发包,服务器端接收 服务端得到结论:客户端接发能力正常,服务端接发能力正常 第一、二次握手后,服务端不确定客户端接收能力以及自己的发送能力是否正常。

    在第三次握手时,服务端收到客户端对第二次握手作的回应。服务端角度来看,我在第二次握手时的响应数据发送出去了,客户端也接收到了。所以我的发送能力正常,客户端的接收能力也是正常的。

    3.浏览器端发送HTTP请求

    浏览器端发送请求报文,请求报文由请求行(request line)、请求头部(headers)、空行(blank line)和请求数据(request body)4个部分组成。

    1.请求行:分为3个部分:请求方法、请求地址和协议版本

    请求方法:8种请求方法:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、TRACE。 请求地址:URL:统一资源定位符。 协议版本:HTTP/主版本号.次版本号,常用的有HTTP/1.0和HTTP/1.1

    2.请求头部

    常见请求头如下:

    在自己电脑上截了屏如下:(登录B张首页)

    3.请求数据:可选部分

    4.服务器端响应HTTP请求

    服务器端发送响应报文,响应报文由状态行(status line)、相应头部(headers)、空行(blank line)和响应数据(response body)4个部分组成。

    1.状态行:由3部分组成,协议版本,状态码,状态码描述

    协议版本与请求报文一致,状态码与状态码描述不多解释啦,大家比较清楚的

    2.响应头部:响应报文的附加信息 。 截个图如下

    3.响应正文:返回给客户端的数据信息,如HTML等

    5.浏览器解析发送过来的HTML页面代码

    浏览器得到HTML文件后,开始解析HTML代码,遇到一些静态资源如图片时,会去向服务器端请求下载。

    6.关闭TCP连接,浏览器进行页面渲染

    这里TCP断开连接为四次挥手机制,不多阐述啦。

    ,遇到一些静态资源如图片时,会去向服务器端请求下载。

    6.关闭TCP连接,浏览器进行页面渲染

    这里TCP断开连接为四次挥手机制,不多阐述啦。

    之后浏览器利用自身工作机制,把请求到的静态资源和HTML代码进行渲染,最终显示给用户。

    Processed: 0.010, SQL: 9