• 二、HTTP协议基础


    HTTP协议基础

    1、HTTP协议用于客户端与服务端之间的通信

    1.1客户端与服务端

    请求资源(文本、图像等)的一端叫做客户端,提供资源响应的一端叫服务端。而HTTP协议就是用于客户端与服务器端之间的通信。
    注意:在使用HTTP协议进行通信时,必定有一端是客户端另一端是服务端,但是他们两个的角色可能会互换。

    1.2通过请求和响应的交换达成通信

    HTTP 协议规定,请求从客户端发出,最后服务端响应请求并返回。(没有请求,就不会有响应)

    如果客户端想要发起请求就需要提供请求信息(也就是请求报文),而请求报文是由请求方法(get、post等)、请求URI(统一资源标识符)、协议版本、请求首部字段(可选)、内容实体(参数)构成。
    在这里插入图片描述

    接收到请求的服务器,将处理结果以响应的形式返回(也就是响应报文)。
    响应报文是由状态码、状态码原因短语、响应首部字段(可选)、实体主体构成(资源、数据等)。
    在这里插入图片描述

    2、HTTP协议中的方法

    向请求 URI 指定的资源发送请求报文时,采用称为方法的命令。
    方法的作用在于,可以指定请求的资源按期望产生某种行为。
    HTTP/1.0 和 HTTP/1.1 支持的方法如下表:
    在这里插入图片描述
    注意:LINK 和 UNLINK 已被 HTTP/1.1 废弃,不 再支持。

    GET
    GET方法主要用来获取被 URI 识别的指定资源经服务器处理后返回的响应内容。

    POST
    POST 方法用来传输实体的主体。(平时开发时虽然GET也可以传输,但是大多使用POST方法请求,他们的目的不一样。)

    PUT
    PUT 方法用来传输文件。
    在请 求报文的主体中包含文件内容,然后保存到请求 URI 指定的位置。(由于HTTP的PUT方法自身不带验证机制,所以可能会有安全问题,如需使用请配和其他验证机制)。

    HEAD
    获得报文首部。
    和GET方法一样,只是不返回报文主体部分。主要用于确认URI 的有效性及资源更新的日期时间等。

    DELETE
    主要用于删除文件。
    按照请求URI 删除指定的资源是与PUT相反的方法(同样不带验证机制)。

    OPTIONS
    用来查询针对请求 URI 指定的资源支持的方法。

    TRACE
    主要用来追踪路径。
    有时请求想要连接到源目标服务器可能会通过代理中转、处理,TRACE 方法就是用来确认连接过程中发生的一系列操作(容易引发 XST(跨站追踪)攻击,所以不常用)。

    CONNECT
    CONNECT 方法要求在与代理服务器通信时建立隧道,实现用隧道协 议进行 TCP 通信。
    主要使用 SSL(安全套接 层)和 TLS(传输层安全)协议把通信内容 加 密后经网络隧道传输。

    3、HTTP协议状态

    3.1无状态协议

    HTTP 是一种不保存状态,即无状态协议。
    HTTP 协议自 身不对请求和响应之间的通信状态进行保存。也就是说在 HTTP 这个 级别,协议对于发送过的请求或响应都不做持久化处理。

    HTTP的无状态协议是为了快速处理大量事务,确保协议的可伸缩性,但是无状态也会带来其他的问题,需要使用其他技术来辅助保存状态(如cookie)。

    3.2使用 Cookie 的状态管理

    HTTP协议是无状态的,也就是说它无法根据上一次请求的状态来处理本次请求。假如我登录一个网站后在进行页面跳转的时候,登录状态不保存那么我每次都要进行重新登录操作非常麻烦,而在项目中还会有许多此类的场景,为了解决这种问题于是引入 了 Cookie 技术。

    Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的 首部字段信息,通知客户端保存 Cookie。当下次客户端再往该服务器 发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出 去。

    服务器端发现客户端发送过来的 Cookie 后,会去检查究竟是从哪一 个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前 的状态信息。
    在这里插入图片描述
    在这里插入图片描述

    4、持久连接

    HTTP 协议的初始版本中,每进行一次 HTTP 通信就要断开一次 TCP 连接。

    也就是说我没请求和获取响应一次,TCP就要经历三次握手建立连接和四次挥手断开链接,当数据量很小的时候几乎不会造成影响,但是当数据有大量图片或者文件资源的时候,就会造成非常大的通信开销。
    在这里插入图片描述

    4.1持久化

    为了解决上述TCP 连接的问题,HTTP想出了持久化链接方法,也就是说只要任意一端 没有明确提出断开连接,则保持 TCP 连接状态。一次连接可以进行多次请求和响应的交互。

    持久连接的好处在于减少了 TCP 连接的重复建立和断开所造成的额 外开销,减轻了服务器端的负载。可以使HTTP请求和响应更快速的结束,提高请求性能。
    注意:在 HTTP/1.1 中,所有的连接默认都是持久连接,但在 HTTP/1.0 内并 未标准化(只有一部分持久化)。
    在这里插入图片描述

    4.2管线化

    持久连接为请求管线化做了基础,之前发送请求后需等待并收到响应,才能发送下一个请求。管线化技术 出现后,不用等待响应亦可直接发送下一个请求。

    管线化技术使得请求和响应并发进行,在面对很多次数请求的时候,交互时间更加的快。
    在这里插入图片描述

  • 相关阅读:
    137.(前端)订单管理显示物流信息——前端利用axios调用后端接口并且使用timeline时间线效果展示
    HarmonyOS系统中内核实现温湿度采集方法
    [SpringBoot] 自定义spring-boot-starter
    ctf bugku
    Meta 发布 Bean Machine 帮助衡量 AI 模型的不确定性
    Ubutntu 命令行界面显示UI 【FrameBuffer显示GuiLiteSample-Hello3D】
    basis of algorithm
    uniapp之 登录成功后返回之前页面
    记一次MySQL安装过程中遇到的问题
    Java版本spring cloud + spring boot企业电子招投标系统源代码
  • 原文地址:https://blog.csdn.net/weixin_43911758/article/details/127792900