首页 > 其他分享 >HTTP协议基础

HTTP协议基础

时间:2024-12-02 22:36:47浏览次数:5  
标签:协议 HTTP 请求 基础 响应 服务器 资源 客户端

HTTP协议基础

一.定义

HTTP协议(HyperText Transfer Protocol),超文本传输协议,它是一种客户端(如网页浏览器)和服务器端(如网站服务器)之间进行通信、请求与响应数据的规则集合。通过 HTTP 协议,客户端可以向服务器发起获取网页、图片、脚本等各种资源的请求,服务器接收到请求后,按照协议规范处理请求并返回相应的响应数据给客户端。

二.发展历史

  • HTTP/0.9:初代版本,功能简单,仅支持获取 HTML 文档,且只有 GET 一种请求方法,响应单纯为 HTML 内容。
  • HTTP/1.0:增加了请求方法(如 POST 等),支持多类型文件传输,引入请求头和响应头,完善了通信灵活性,但存在连接效率问题。
  • HTTP/1.1:广泛应用版本,支持持久连接、更多请求方法(PUT、DELETE 等),优化了缓存控制机制,增强虚拟主机支持等。

三.工作原理

  • 建立连接:客户端基于 TCP(HTTP/1.1 及之前)或 QUIC(HTTP/3)协议向服务器发起连接请求,部分版本支持连接复用。
  • 客户端发起请求:构造包含请求行、请求头、请求体(可选)的请求消息,向服务器发送,不同请求方法有不同用途(GET 获取、POST 提交等)。
  • 服务器处理请求:按请求信息查找并处理相应资源,依据请求头要求操作。
  • 服务器返回响应:构造含响应行、响应头、响应体的响应消息,发送回客户端,响应状态码表明处理结果。
  • 关闭连接(视情况):早期版本或特定场景下完成交互即关闭;支持持久连接的版本会按需保持或超时关闭。

四.请求与响应

1.请求

HTTP 请求由请求行、请求头、请求体(可选)这三大部分构成,它们按照特定顺序组合在一起,从客户端发送到服务器,告知服务器客户端的需求以及相关的附加信息等,服务器会依据这些内容来进行相应处理并返回响应。
img

1.1 请求行

请求行是请求消息的第一行,由请求方式请求资源路径协议版本这三部分组成。

请求方式

明确客户端希望服务器执行的操作类型,常见的请求方法有 GET、POST、PUT、DELETE 等。

  • GET:通过URL请求服务器发送资源,通常用于获取数据,客户端可见,不适合用于传输加密信息。
    img
  • POST:用于向指定资源提交数据,通常用于创建或更新资源。POST请求的数据包含在请求体中,适合需要提交表单数据的场景,客户端不可见。
    img
  • HEAD:类似于GET请求,但响应中不返回报文主体内容,仅返回报文头信息,常用于检查资源的存在性和元数据。
    img
  • PUT:用于替换指定资源的内容,通常用于更新或创建资源。
    img
  • DELETE:用于请求服务器删除指定的资源。
    img

1.2 请求头

请求头紧跟在请求行之后,它由一系列的键值对组成,每一行代表一个头字段,用于向服务器传递各种额外的信息。
img

  • host:指定请求的目标主机域名或 IP 地址以及端口号,这有助于服务器区分不同域名对应的资源请求。

  • User-Agent:用来告知服务器客户端的软件信息,包括浏览器类型、版本以及操作系统等情况,服务器可以根据此信息来进行兼容性处理或者统计客户端使用情况等。

  • Accept:向服务器表明客户端能够接受的响应内容的类型以及优先级(从左到右优先级降低)。q为质量因子,通过q体现优先级。

  • Accept-Encoding:说明客户端支持的内容编码格式,目的是告知服务器可以对响应内容采用这些编码方式进行压缩后传输,以节省网络带宽,客户端在接收到响应后会进行相应的解码操作来还原内容。

  • Accept-Language:用于传达客户端需要的语言,服务器可以据此提供对应的语言版本的内容。

  • Content-Type:该头字段用来指定请求体中数据的类型。

    • application/x-www-form-urlencoded:用于表单数据编码格式
    • multipart/form-data 用于包含文件上传的复杂表单数据格式
  • Content-Length:指明请求体中数据的长度,告诉服务器要接受的数据量多少。

1.3 请求体

主要用于在需要向服务器传递数据时使用,如post传递表单数据时。
img

2.响应

HTTP 响应是服务器针对客户端发起的 HTTP 请求所做出的回复,告知客户端请求的处理结果,并在合适情况下返回相应的资源内容。它遵循一定的格式规范,由多个关键部分构成,以方便客户端正确解析和处理接收到的信息。
img
同样的,响应也由三部分构成:

2.1 响应行

由协议版本,状态码和状态描述三部分构成。

状态码

状态码表明资源的请求结果状态,第一位表示类型:
img
常见状态码及其描述:
img

2.2 响应头

响应头也紧跟在响应行之后,它同样由一系列的键值对组成,每一行代表一个头字段。

  • Date:原始服务器消息发出的时间,用格林尼治时间表示。
  • Allow:服务器允许那种请求方式,不运行则返回403(禁止访问被请求资源)。
  • Content-Encoding:服务器支持的返回内容压缩编码类型。
  • Content-Language:响应体的语言。
  • Content-Length:响应体的长度。
  • Server:响应服务器的软件名称。
  • X-Powered-By:告知客户端该响应是由哪种服务器软件或框架生成的。

2.3 响应体

响应体是服务器依据客户端请求进行相应处理后,要传递给客户端的具体数据实体。其作用在于为客户端提供请求所期望获取的内容,比如当客户端请求查看一个网页时,响应体就是该网页对应的 HTML 代码。

标签:协议,HTTP,请求,基础,响应,服务器,资源,客户端
From: https://www.cnblogs.com/hackerT/p/18582885

相关文章

  • 开发嵌入式系统 这五种微处理器该怎么选?从零基础到精通,收藏这篇就够了!
    本文介绍了嵌入式系统中常用的五种微处理器类型:微处理器单元(MPU)、微控制器(MCU)、数字信号处理器(DSP)、现场可编程逻辑门阵列(FPGA)和单片机(SBC)。文章详细阐述了每种处理器的功能、优点、缺点以及选择建议,并列出了一些精选的微处理器产品,供读者参考。任何一个电子系统都需要一......
  • 「Java进阶」数据结构与算法全攻略:从基础理论到实战应用
    「Java进阶」数据结构与算法全攻略:从基础理论到实战应用目录第1章绪论1.1数据结构的基础概念1.2数据结构的内容1.3算法1.4算法描述1.5算法性能评价1.5.1算法的时间性能分析1.5.2算法的空间性能分析1.5.3算法性能选择1.6数据结构与Java语言表示......
  • 6张图详解计算机网络知识点,从零基础到精通,收藏这篇就够了!
    一、计算机网络概述1.1计算机网络的分类按照网络的作用范围:广域网(WAN)、城域网(MAN)、局域网(LAN);按照网络使用者:公用网络、专用网络。1.2计算机网络的层次结构TCP/IP四层模型与OSI体系结构对比:1.3层次结构设计的基本原则各层之间是相互独立的;每一层需要有足够的......
  • Wireshark网络协议抓包解析(二)分析TCP HTTP协议
    实验分析前准备通过curl-I baidu.com 分析TCP HTTP协议在http捕捉中找到目的ipip.addr==110.242.68.66(换成对应目的ip)过滤以下是对每个步骤的详细解释:TCP三次握手建立连接:数据包25:源IP 192.168.76.18 向目标IP 110.242.68.66 发送一个TCPSYN包,请求建......
  • 【ajax】解析http响应头信息
    先看一下ajax发送的请求函数,如下: 可见,这是一个axios发送的一个常规的httpGET请求,分别记录下服务端在不同情况下的http响应信息:1. 常规application/json响应 2. 文件下载头 3. 文件预览(后端返回文件流信息) 综上所述,大致可以通过以上的几种响应头(多列举常见的几种)......
  • 信息资源管理文字题之“CIO基础职能”
    一、案例:某公司招聘CIO的岗位职责包括如下内容:(1)按照公司发展战略,负责组织制定公司信息化中长期发展规划和年度工作计划,并组织实施;(2)负责组织制定完善公司有关规章制度,并贯彻执行(3)主持建立、优化公司的信息化管理平台,包括ERP、OA系统、经营系统、网站等(4)负责公司信息系统的规划......
  • 五层网络协议(封装和分用)
    目录七层网络协议五层网络协议封装1.应用层2.传输层3.网络层4.数据链路层5.物理层分用1.物理层2.数据链路层3.网络层IP协议4.传输层UDP协议5.应用层七层网络协议网络通信过程中,需要涉及到的细节,其实是非常非常多的,如果要有一个协议来完成网络通信,就需要约定......
  • windows基础(1)
    公众号:泷羽Sec-Ceo声明!        学习视频来自B站up主**泷羽sec**有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的......
  • CS61B srping 2018 examprep01(?02) https://sp18.datastructur.es/
    1.写出第21、24行的运行结果。(画出box-pointer指示图会对答题很有帮助)1publicclassShock{2publicstaticintbang;3publicstaticShockbaby;4publicShock(){5this.bang=100;6}7publicShock(intnum){8this.bang=num;9baby=starter();10this......
  • CryEngine引擎开发:角色控制与状态机_CryEngine引擎基础
    CryEngine引擎基础1.引擎概述CryEngine是一个功能强大的游戏开发引擎,广泛用于动作游戏的开发。它提供了丰富的工具和功能,使得开发者可以高效地创建高质量的游戏内容。本节将介绍CryEngine的基本架构和主要特点,帮助初学者快速了解这个引擎的基本概念。1.1引擎架构Cr......