HTTP 常见协议:选择正确的协议,提升用户体验(上)

news2024/10/2 10:36:38

在这里插入图片描述

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6
🍨 阿珊和她的猫_CSDN个人主页
🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》
🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》

文章目录

  • 一、引言
    • HTTP 协议的重要性和应用范围
  • 二、HTTP 协议基础
    • 介绍 HTTP 协议的概念和作用
    • HTTP 请求和响应的结构
    • HTTP 方法(GET、POST、PUT、DELETE 等)
  • 三、常见的 HTTP 协议
    • HTTP1 协议
    • HTTP/2 协议
    • HTTP/3 协议

一、引言

HTTP 协议的重要性和应用范围

HTTP(超文本传输协议)是互联网上进行数据传输的一种基本协议,它的重要性不言而喻。

HTTP 协议广泛应用于各种场景,如:

  1. 网页浏览:HTTP 协议是网页浏览的主要协议,它负责在浏览器和服务器之间传输网页内容。
  2. RESTful API:HTTP 协议被广泛应用于 RESTful API 中,如 JSON API、GraphQL API 等。这些 API 通过 HTTP 请求和响应来实现数据交互。
  3. 文件传输:HTTP 协议也可以用于文件传输,如在线文件下载、上传等。
  4. 即时通信:HTTP 协议也可以用于即时通信,如 WebSocket 协议。WebSocket 协议基于 HTTP 协议,可以在 Web 应用中实现实时通信。

在这里插入图片描述

HTTP 协议的稳定性和广泛的应用范围,使得它成为互联网上最常用的协议之一。同时,HTTP 协议的灵活性和可扩展性,使得它能够适应各种不同的场景需求。

二、HTTP 协议基础

介绍 HTTP 协议的概念和作用

HTTP(超文本传输协议)是互联网上进行数据传输的一种基本协议,它负责在浏览器和服务器之间传输网页内容。HTTP 协议的提出是为了解决互联网上的数据传输问题,它使得网页可以通过互联网进行快速、高效地传输。

HTTP 协议主要包括以下几个部分:

  1. 请求:浏览器向服务器发送请求,告知服务器需要获取的网页内容。请求通常包括请求方法、请求 URI、请求头等信息。
  2. 响应:服务器向浏览器返回响应,告知浏览器是否成功获取了网页内容。响应通常包括响应状态码、响应头、响应体等信息。
  3. 状态码:状态码用于表示响应的成功或失败,常见的状态码有 200(成功)、404(未找到)、500(服务器错误)等。

在这里插入图片描述

HTTP 协议的请求和响应可以分为以下几种类型:

  1. GET 请求:GET 请求用于获取网页内容,通常用于浏览网页。
  2. POST 请求:POST 请求用于向服务器发送数据,通常用于提交表单、创建新资源等。
  3. PUT 请求:PUT 请求用于更新服务器上的资源,通常用于更新已有资源。
  4. DELETE 请求:DELETE 请求用于删除服务器上的资源,通常用于删除已有资源。

在这里插入图片描述

HTTP 协议的请求和响应可以包含多种参数,如请求头、响应头、请求体、响应体等。请求和响应的格式也可以通过不同的编码方式进行调整,如 JSON、XML 等。HTTP 协议的稳定性和广泛的应用范围,使得它成为互联网上最常用的协议之一。同时,HTTP 协议的灵活性和可扩展性,使得它能够适应各种不同的场景需求。

HTTP 请求和响应的结构

HTTP 请求和响应的结构主要包括请求头、响应头和响应体三个部分。

  1. 请求头(Request Header):请求头用于存储请求的相关信息,如请求方法、请求 URI、请求头、客户端信息等。请求头通常以键值对的形式存储,每个键值对之间用空格分隔,各个键值对之间用换行符(\n)分隔。

例如,一个 HTTP GET 请求的请求头示例如下:

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.4
  1. 响应头(Response Header):响应头用于存储响应的相关信息,如响应状态码、响应头、服务器信息等。响应头通常以键值对的形式存储,每个键值对之间用空格分隔,各个键值对之间用换行符(\n)分隔。

例如,一个 HTTP 响应的响应头示例如下:

HTTP/1.1 200 OK
Date: Wed, 28 Mar 2018 10:00:00 GMT
Server: Apache/2.4.7 (Ubuntu)
Content-Type: text/html; charset=UTF-8
Content-Length: 1024
Connection: close

  1. 响应体(Response Body):响应体用于存储响应的具体内容,如网页内容、文件数据等。响应体通常以字符串的形式存储。

例如,一个 HTTP 响应的响应体示例如下:

<!DOCTYPE html>
<html>
<head>
    <title>Example Page</title>
</head>
<body>
    <h1>Welcome to the Example Page</h1>
    <p>This is an example web page.</p>
</body>
</html>

HTTP 请求和响应的结构可以看作是一个三层的结构,请求头和响应头属于 HTTP 协议的顶层结构,它们定义了 HTTP 请求和响应的基本格式和信息。响应体属于 HTTP 协议的中间层结构,它存储了 HTTP 请求和响应的具体内容。

HTTP 方法(GET、POST、PUT、DELETE 等)

HTTP 方法(Method)是 HTTP 请求中用于描述请求动作的关键字,它用于告诉服务器希望执行的操作
HTTP 请求中必须包含一个 HTTP 方法,以指示请求的类型。

常见的 HTTP 方法包括:

  1. GET:GET 方法用于获取服务器上的资源,通常用于获取网页内容。GET 方法会将请求的 URI 和请求头等信息发送给服务器,服务器会返回一个 HTTP 响应,其中包含请求的资源。
  2. POST:POST 方法用于向服务器发送数据,通常用于提交表单或创建新资源。POST 方法会将请求的 URI、请求头和请求体等信息发送给服务器,服务器会返回一个 HTTP 响应,其中包含服务器处理请求的结果。
  3. PUT:PUT 方法用于更新服务器上的资源,通常用于更新已有资源。PUT 方法会将请求的 URI、请求头和请求体等信息发送给服务器,服务器会将请求的资源更新到服务器上。
  4. DELETE:DELETE 方法用于删除服务器上的资源,通常用于删除已有资源。DELETE 方法会将请求的 URI 和请求头等信息发送给服务器,服务器会将请求的资源从服务器上删除。

HTTP 方法可以用于各种场景,如:

  1. 获取网页内容:使用 GET 方法获取网页内容。
  2. 提交表单:使用 POST 方法提交表单。
  3. 创建新资源:使用 POST 方法创建新资源。
  4. 更新已有资源:使用 PUT 方法更新已有资源。
  5. 删除已有资源:使用 DELETE 方法删除已有资源。

HTTP 方法的定义非常简洁,但通过不同的使用场景,可以实现不同的功能,HTTP 方法是 HTTP 协议中最核心的部分之一。

三、常见的 HTTP 协议

HTTP1 协议

HTTP1 协议是指 HTTP 协议的第一个版本,它于 1995 年发布。HTTP1 协议的主要特点包括:

  1. 持久连接:HTTP1 协议支持持久连接,即在同一个 TCP 连接中可以连续发送多个 HTTP 请求和响应。这样可以减少网络开销,提高网络效率。
  2. 缓存控制:HTTP1 协议支持缓存控制,即服务器可以通过 HTTP 响应头中的 Cache-Control 字段来指定请求资源的缓存策略。这可以避免重复请求相同资源,提高网络效率。

在这里插入图片描述

HTTP1 协议的不足之处包括:

  1. 缺少错误处理:HTTP1 协议缺乏对错误请求和响应的处理机制,可能导致数据传输错误。
  2. 缺少会话管理:HTTP1 协议缺乏会话管理机制,无法实现跨请求的数据共享。
  3. 缺少身份验证:HTTP1 协议缺乏身份验证机制,无法保证数据传输的安全性。

HTTP1 协议在发布之后广泛应用于互联网,但由于其缺乏错误处理和会话管理机制,逐渐被 HTTP2 协议所取代。HTTP2 协议在 HTTP1 协议的基础上进行了大量的改进,包括错误处理、会话管理、身份验证等功能,提高了网络效率和安全性。

HTTP/2 协议

HTTP/2 协议是指 HTTP 协议的第二个版本,它于 2015 年发布。HTTP/2 协议的主要特点包括:

  1. 二进制分帧:HTTP/2 协议采用二进制分帧的方式进行数据传输,将 HTTP 请求和响应的数据分成多个帧,每个帧都包含一个或多个消息块。这种分帧方式可以提高网络效率,减少网络延迟。
  2. 服务器推送:HTTP/2 协议允许服务器将响应头和响应体一起推送给客户端,而不需要等待客户端发送请求才能发送响应。这种推送方式可以减少网络延迟,提高网络效率。
  3. 首部压缩:HTTP/2 协议采用首部长度压缩技术,将 HTTP 请求和响应的首部进行压缩,从而减少了网络传输的数据量。这种压缩技术可以提高网络效率,减少网络延迟。

在这里插入图片描述

HTTP/2 协议的优点包括:

  1. 提高网络效率:HTTP/2 协议采用二进制分帧、服务器推送和首部压缩等技术,可以提高网络传输的效率,降低网络延迟。
  2. 减少网络延迟:HTTP/2 协议允许服务器将响应头和响应体一起推送给客户端,可以减少网络延迟,提高用户体验。
  3. 增强安全性:HTTP/2 协议采用加密传输,可以增强数据传输的安全性,保护用户隐私。

HTTP/2 协议的不足之处包括:

  1. 兼容性问题:HTTP/2 协议需要服务器和客户端同时支持,否则无法正常工作。
  2. 缺乏错误处理:HTTP/2 协议缺乏对错误请求和响应的处理机制,可能导致数据传输错误。
  3. 缺少会话管理:HTTP/2 协议缺乏会话管理机制,无法实现跨请求的数据共享。

HTTP/2 协议在发布之后广泛应用于互联网,由于其提高了网络效率和安全性,逐渐取代了 HTTP1 协议。

HTTP/3 协议

HTTP/3 协议是指 HTTP 协议的第三个版本,它于 2019 年发布。HTTP/3 协议的主要特点包括:

  1. QUIC 协议HTTP/3 协议采用 QUIC 协议进行通信,QUIC 协议是一种基于 UDP 的协议,可以提供可靠、低延迟的通信服务。
  2. 0-RTT 建立连接HTTP/3 协议采用 0-RTT 建立连接的技术,可以在建立连接时减少网络延迟。这种技术可以提高网络效率,减少网络延迟。

在这里插入图片描述

HTTP/3 协议的优点包括:

  1. 提高网络效率:HTTP/3 协议采用 QUIC 协议进行通信,可以提供可靠、低延迟的通信服务,从而提高了网络效率。
  2. 减少网络延迟:HTTP/3 协议采用 0-RTT 建立连接的技术,可以在建立连接时减少网络延迟,从而提高了用户体验。
  3. 增强安全性:HTTP/3 协议采用加密传输,可以增强数据传输的安全性,保护用户隐私。

HTTP/3 协议的不足之处包括:

  1. 兼容性问题:HTTP/3 协议需要服务器和客户端同时支持,否则无法正常工作。
  2. 缺乏错误处理:HTTP/3 协议缺乏对错误请求和响应的处理机制,可能导致数据传输错误。
  3. 缺少会话管理:HTTP/3 协议缺乏会话管理机制,无法实现跨请求的数据共享。

HTTP/3 协议已经开始应用,由于其提高了网络效率和安全性,未来可能会逐渐取代 HTTP/2 协议。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1378139.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库创建表并插入数据练习题

一、创建表的要求 创建一个英雄表(hero) 主键 name nickname address groups email telphone 二、 操作步骤 1.登录MySQL [rootlocalhost ~]# systemctl start mysqld [rootlocalhost ~]# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with…

共商、共建、共谋未来,国台与经销商的“双向奔赴”

执笔 | 洪大大 编辑 | 扬 灵 1月9日&#xff0c;以“共商共建同奋进 共创共享新名酒”为主题的国台2024年全国经销商大会在广州召开。大会彰显了国台对经销商的尊重&#xff0c;将经销商放在C位&#xff0c;进一步强化厂商同心的经营理念。 此次大会不仅是对国台2023年市场…

1、理解Transformer:革新自然语言处理的模型

目录 一、论文题目 二、背景与动机 三、卖点与创新 四、解决的问题 五、具体实现细节 0. Transformer 架构的主要组件 1. 注意力、自注意力&#xff08;Self-Attention&#xff09;到多头注意力&#xff08;Multi-Head Attention&#xff09; 注意力到底是做什么的&…

【开源项目】轻量元数据管理解决方案——Marquez

大家好&#xff0c;我是独孤风。 又到了本周的开源项目推荐。最近推荐的元数据管理项目很多&#xff0c;但是很多元数据管理平台的功能复杂难用。 那么有没有轻量一点的元数据管理项目呢&#xff1f; 今天为大家推荐的开源项目&#xff0c;就是一个轻量级的元数据管理工具。虽然…

ModuleNotFoundError: No module named ‘simple_knn‘

【报错】使用 AutoDL 复现 GaussianEditor 时引用 3D Gaussian Splatting 调用simple_knn 时遇到 ModuleNotFoundError: No module named ‘simple_knn‘ 报错&#xff1a; 【原因】 一开始以为是版本问题&#xff0c;于是将所有可能的版本都尝试了 (from versions: 0.1, 0.2…

C++设计模式-- 2.代理模式

文章目录 代理模式 代理模式 代理模式的定义&#xff1a;为其他对象提供一种代理以控制对这个对象的访问。在某些情况下&#xff0c;一个对象不适合 或不能直接引用另一个对象&#xff0c;而代理对象可以在客户端和目标对象之间起到中介的作用。 代理模式有以下三种角色&…

VBA_MF系列技术资料1-310

MF系列VBA技术资料 为了让广大学员在VBA编程中有切实可行的思路及有效的提高自己的编程技巧&#xff0c;我参考大量的资料&#xff0c;并结合自己的经验总结了这份MF系列VBA技术综合资料&#xff0c;而且开放源码&#xff08;MF04除外&#xff09;&#xff0c;其中MF01-04属于…

爬虫之使用代理

爬虫—使用代理 1. 为什么使用代理 1.1 让服务器以为不是同一个客户端在请求 1.2 防止我们的真实地址被泄漏&#xff0c;防止被追究 2. 理解使用代理的过程 3. 理解正向代理和反向代理的区别 通过上图可以看出&#xff1a; 正向代理&#xff1a;对于浏览器知道服务器的真实…

PostMan、LoadRunner进行并发压测流程

需求 两个记账接口在同一时间大量处理同一账户账务时&#xff0c;锁表顺序不同导致死锁&#xff0c;在修改完代码后模拟生产记账流程进行测试&#xff0c;需要对两个接口进行并发测试。 在进行压测的时候&#xff0c;需要对流水号进行递增。 PostMan处理流程 1. 新建Collection…

Postman接口测试神器从安装到精通

Postman 的优点&#xff1a; 支持各种的请求类型: get、post、put、patch、delete 等支持在线存储数据&#xff0c;通过账号就可以进行迁移数据很方便的支持请求 header 和请求参数的设置支持不同的认证机制&#xff0c;包括 Basic Auth&#xff0c;Digest Auth&#xff0c;OAu…

RTSP网络视频协议

一.RTSP网络视频协议介绍 RTSP是类似HTTP的应用层协议&#xff0c;一个典型的流媒体框架网络体系可参考下图&#xff0c;其中rtsp主要用于控制命令&#xff0c;rtcp主要用于视频质量的反馈&#xff0c;rtp用于视频、音频流从传输。 1、RTSP&#xff08;Real Time Streaming P…

装机必看:电脑Bios里的CSM兼容模块是啥?打开有啥用?

前言 最近朋友装了一台新的电脑&#xff0c;用的i5-13490f的CPU。但是由于预算有限&#xff0c;手边只有一块GTX650ti&#xff0c;没办法&#xff0c;只好先这么用着了。 谁知道出现了个大问题&#xff1a;电脑开机居然没办法显示。 由于电脑所有的配件基本上都是全新的&…

查看lucene和elasticsearch的版本对应关系

一、Maven仓库官网&#xff1a; https://mvnrepository.com/ 二、搜索elasticsearch&#xff0c;然后点击Server或者elasticsearch进入。 三、点击相应的版本号进入。 四、查看对应的lucene版本。 END

J3-DenseNet实战

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 目录 环境步骤环境设置数据准备图像信息查看 模型构建模型训练模型效果展示 总结与心得体会 环境 系统: Linux语言: Python3.8.10深度学习…

Defi安全--Zunami Protocol攻击事件分析

其它相关内容可见个人主页 1 Zunami攻击事件相关信息 2023.8.13发生在Ethereum上发生的攻击&#xff0c;存在两个攻击交易&#xff0c;具体信息如下&#xff1a; 攻击合约地址&#xff1a;Contract Address 攻击合约 攻击者地址&#xff1a;Zunami Protocol Exploiter 攻击…

一种DevOpts的实现方式:基于gitlab的CICD(二)

写在之前 前文已经搭建了基于gitlab的cicd环境&#xff0c;现在我们来更近一步&#xff0c;结合官网给出的案例来详细介绍如何一步一步实现CI的过程。 基于gitlab搭建一个前端静态页面 环境依赖&#xff1a; gitlabgitlab runner&#xff08;docker版本&#xff09; 环境达吉…

Element-ui图片懒加载

核心代码 <el-image src"https://img-blog.csdnimg.cn/direct/2236deb5c315474884599d90a85d761d.png" alt"我是图片" lazy><img slot"error" src"https://img-blog.csdnimg.cn/direct/81bf096a0dff4e5fa58e5f43fd44dcc6.png&quo…

网络层协议及IP编址与IP路由基础华为ICT网络赛道

目录 4.网络层协议及IP编址 4.1.网络层协议 4.2.IPv4地址介绍 4.3.子网划分 4.4.ICMP协议 4.5.IPv4地址配置及基本应用 5.IP路由基础 5.1.路由概述 5.2.静态路由 5.3.动态路由 5.4.路由高阶特性 4.网络层协议及IP编址 4.1.网络层协议 IPv4(Internet Protocol Versi…

vivado编译设置、执行设置、bit流生成设置

合成设置 使用“合成设置”可以指定约束集、合成策略、合成选项&#xff0c;以及要生成的报告。选项由选定的定义综合策略或综合报告策略&#xff0c;但您可以用自己的策略覆盖这些策略设置。您可以选择一个选项来查看对话框底部的描述。了解更多有关“合成设置”的信息&#…

SpringMVC ResponseEntity常见使用场景

ResponseEntity 作为 Spring MVC controller层 的 HTTP response&#xff0c;包含 status code, headers, body 这三部分。 正常场景 RestController Slf4j public class SearchController {AutowiredUserService userService;RequestMapping(value "/getAllStudents4&…