云安全之HTTP协议介绍

news2024/11/29 8:43:38

HTTP的基本概念

什么是网络协议

网络协议是计算机之间为了实现网络通信而达成的一种“约定”或者”规则“,有了这种”约定不同厂商生产的设备,以及不同操作系统组成的计算机之间,就可以实现通信。

网络协议由三个要素构成:1、语义(要做什么) ;  2、语法(要怎么做) ; 3、时序(做事情的顺序);

HTTP协议定义

HTTP协议是超文本传输协议(Hyper Text Transfer Protocol )的缩写,是用于从万维(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议。HTTP协议是个简单的请求-响应协议,是一种基于TCP的应用层协议,也是目前为止最为流行的应用层协议之一。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。

HTTP是一种无状态(stateless)协议,HTTP协议本身不会对发送过的请求和相应的通信状态进行持久化处理。

HTTP的发展阶段

HTTP的发展路线图

  • 1991年:HTTP/0.9,只接收GET方法,不支持请求头
  • 1996年:HTTP/1.0,基本成型,支持富文本、header、状态码、缓存等
  • 1997年:HTTP/1.1,使用了20年的主流标准,支持连接复用、分块发送;
  • 2009年:SPDY,HTTP/2前身
  • 2013年:QUIC,第三代协议,基于UDP实现TCP+HTTP/2并优化
  • 2015年:第二代协议,多路复用、头部压缩、服务器推送等
  • 2018年:QUIC更名委HTTP/3

HTTP/0.9

HTTP是基于TCP/IP 协议的应用层协议。它不涉及数据包(packet) 传输主要规定了客户端和服务器之间的通信格式,默认使用80端口

GET/index.html

<html>

<body>Hello World</body>

</html>

HTTP/1.0

任何格式的内容都可以发送。这使得互联网不仅可以传输文字,还能传输图像、视频二进制文件这为互联网的大发展奠定了基础。

除了GET命令,还引入了POST命令和HEAD命令,丰富了浏览器与服务器的互动手段。

其他的新增功能还包括状态码 (status code)、多字符集支持、多部分发送(multi-part type)权限(authorization)、缓存 (cache)、内容编码 (content encoding)等。

HTTP请求举例:

GET/HTTP/1.0

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10 10 5)

Accept:*/*

HTTP回应举例

HTTP/1.0 200 0K

Content-Type: text/plain

Content-Length:137582

Expires: Thu, 05 Dec 2020 16:00:00 GMT

Last-Modified: Wed, 5 August 1996 15:55:28 GMT

Server: Apache 0.84

<html>

<body>Hello World</body>

</html>

注:每个TCP连接只能发送一个请求。发送数据完毕,连接就关闭,如果还要请求其他资源,就必须再新建一个连接。

为了解决这个问题,有些浏览器在请求时,用了一个非标准的Connection字段

Connection: keep-alive

HTTP/1.1

1997年1月,HTTP/1.1版本发布,它进一步完善了HTTP 协议,一直用到了20年后的今天,直到现在还是最流行的版本。

持久连接:与之前版本的最大区别,便是解决了1.0版本的痛点。引入了持久连接 (persistentconnection),即TCP连接默认不关闭,可以被多个请求复用,不用声明Connection: keep:alive。

管道机制(pipelining):即在同一个TCP连接里面,客户端可以同时发送多个请求。这样就进步改进了HTTP协议的效率。

Content-Length 字段:一个TCP连接现在可以传送多个回应,区分数据包是属于哪一个回应这就是Content-length字段的作用,声明本次回应的数据长度。

分块传输编码:采用“流模式”(stream)取代"缓存模式”(buffer)。

1.1版还新增了许多动词方法: PUT、PATCH、HEAD、OPTIONS、DELETE

SPDY协议

2009年,谷歌公开了自行研发的SPDY协议,主要解决HTTP/1.1效率不高的问题

HTTP/2

2015年,HTTP/2发布。

HTTP/3

2018年,QUIC更名为HTTP/3

HTTP的特点

  • 支持客户/服务器模式:HTTP协议支持客户端和服务器的交互模式,客户端可以向服务器发送请求,服务器则给予相应的响应。
  • 简单快速:在客户端向服务器请求服务时,只需要传送请求方法和路径。常用的请求方法有GET、HEAD、POST。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
  • 灵活:HTTP协议允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
  • 无连接:每次请求一次,释放一次连接。无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  • 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。服务器不知道客户端是什么状态。另一方面,在服务器不需要先前信息时它的应答就较快。

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

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

相关文章

<C++> 哈希表模拟实现STL_unordered_set/map

哈希表模板参数的控制 首先需要明确的是&#xff0c;unordered_set是K模型的容器&#xff0c;而unordered_map是KV模型的容器。 要想只用一份哈希表代码同时封装出K模型和KV模型的容器&#xff0c;我们必定要对哈希表的模板参数进行控制。 为了与原哈希表的模板参数进行区分…

IntelliJ IDEA配置Cplex12.6.3详细步骤

Cplex12.6.3版IntelliJ IDEA配置详细步骤 一、Cplex12.6.3版下载地址二、Cplex安装步骤三、IDEA配置CPLEX3.1 添加CPLEX安装目录的cplex.jar包到项目文件中3.2 将CPLEX的x64_win64文件夹添加到IDEA的VM options中 四、检查IDEA中Cplex是否安装成功卸载Cplex 一、Cplex12.6.3版下…

案例题真题-数据库系统

案例题真题-数据库系统 真题 扩展方式和水平扩展是一个东西 关系数据库向上扩展强&#xff0c;水平扩展弱&#xff08;向外扩展&#xff09; NoSQL模式向上扩展弱&#xff0c;水平扩展强&#xff08;向外扩展&#xff09; 向上扩展就是增加数据库 向外扩展就是将数据库划分开&a…

SmartX 边缘计算解决方案:简单稳定,支持各类应用负载

在《一文了解近端边缘 IT 基础架构技术需求》文章中&#xff0c;我们为大家分析了边缘应用对 IT 基础架构的技术要求&#xff0c;以及为什么超融合架构是支持边缘场景的最佳选择。值得一提的是&#xff0c;IDC 近日发布的《中国软件定义存储&#xff08;SDS&#xff09;及超融合…

Halcon中灰度直方图的使用与学习

目录 第一步:当前打开窗口的显示灰度图或者mono图片第二步:激活后,我们可以去调整调整右边直方图灰阶值的中蓝色和红色竖线,获取左边图上的灰阶值的范围内的特征显示。第三步:插入代码:总结:它的直观目的,就是查看灰度的分布情况!灰度直方图,是我们经常使用,抓取不同…

objective-c 基础学习

目录 第一节&#xff1a;OC 介绍 ​​第二节&#xff1a;Fundation 框架 ​第三节&#xff1a;NSLog 相对于print 的增强 ​第四节&#xff1a;NSString ​第五节&#xff1a;oc新增数据类型 第六节&#xff1a; 类和对象 ​类的方法的声明与实现 ​第七节&#xff1a;类…

思维模型 冷热水效应

本系列文章 主要是 分享 思维模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。冷热水效应可以改变你90%的人际关系。对于技术人员的沟通大有助益。 1 冷热水效应的应用 1.1 生活中的冷热水效应 恋爱和恋爱关系&#xff1a;在恋爱关系中&#xff0c;一对情侣可能会经历…

【人工智能导论】机器学习环境配置

一、Anaconda 1、安装Anaconda Anaconda的安装&#xff1a;https://www.anaconda.com/ Anaconda-国内镜像站 在terminal上看到(base)说明安装已完成 2、conda换源 添加中科大源 conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/ conda confi…

Secureboot从入门到精通

关键词&#xff1a;trustzone视频、tee视频、ATF视频、secureboot视频、安全启动视频、selinux视频&#xff0c;cache视频、mmu视频&#xff0c;armv8视频、armv9视频 FF-A视频、密码学视频、RME/CCA视频、学习资料下载、免费学习资料、免费 周贺贺&#xff0c;baron&#xff0…

zemax对称式目镜

两个几乎对称的双胶合透镜相对放置&#xff0c;可以达到25度的半视场 为了加工方便&#xff0c;这两个透镜组采用相同的结构 对称式目镜要求各组透镜自行校正色差&#xff0c;这样倍率色差也随之而校正。 它还能校正两种像差&#xff0c;慧差和象散。 对称目镜的结构更紧&…

QGIS文章一——实现天地图加载

无论是农业科学还是海洋科学&#xff0c;对地图的处理和数值模型的计算是少不了的&#xff0c;地图是可视化的基础&#xff0c;先有了基础再进行开始某些复杂处理&#xff0c;进而开始模拟推演&#xff0c;最后进行数值模拟和计算。 QGIS&#xff08;原称Quantum GIS&#xff0…

黑豹程序员-架构师学习路线图-百科:Git/Gitee(版本控制)

文章目录 1、什么是版本控制2、特点3、发展历史4、SVN和Git比较5、Git6、GitHub7、Gitee&#xff08;国产&#xff09;8、Git的基础命令 1、什么是版本控制 版本控制系统&#xff08; Version Control &#xff09;版本控制是一种管理和跟踪软件开发过程中的代码变化的系统。它…

力扣设计循环队列

1.使用了数组来表达循环 typedef struct {int k;//数据个数int *a;//数组int rear;//尾int front;//头 } MyCircularQueue;2.循环队列是否为空 bool myCircularQueueIsEmpty(MyCircularQueue* obj) {return obj->rear obj->front; }3.循环队列是否已满。 bool myCircula…

质数的判定和质因数分解

质数的判定&#xff1a; 质数&#xff1a;i>1&#xff0c;并且i的因子只有1和它本身。 思路&#xff1a; 对于n如果n%i0那么n/i和i都是n的因子&#xff0c;对于n的每一对因子&#xff0c;至少有一个在1-,所以我们只需要判断1-是否有能整数n的数即可。时间复杂度o(). 代码…

把握现在,热爱生活

博客主页&#xff1a;https://tomcat.blog.csdn.net 博主昵称&#xff1a;农民工老王 主要领域&#xff1a;Java、Linux、K8S 期待大家的关注&#x1f496;点赞&#x1f44d;收藏⭐留言&#x1f4ac; 目录 厨艺房价琐事计划随想 今年的中秋国庆假期放8天&#xff0c;比春节假期…

基于Cplex的人员排班问题建模求解(JavaAPI)

使用Java调用Cplex实现了阿里mindopt求解器的案例&#xff08;https://opt.aliyun.com/platform/case&#xff09;人员排班问题。 这里写目录标题 人员排班问题问题描述数学建模编程求解&#xff08;CplexJavaAPI&#xff09;求解结果 人员排班问题 随着现在产业的发展&#…

Leetcode 2119.反转两次的数字

反转 一个整数意味着倒置它的所有位。 例如&#xff0c;反转 2021 得到 1202 。反转 12300 得到 321 &#xff0c;不保留前导零 。 给你一个整数 num &#xff0c;反转 num 得到 reversed1 &#xff0c;接着反转 reversed1 得到 reversed2 。如果 reversed2 等于 num &#x…

Centos7配置firewalld防火墙规则

这里写自定义目录标题 欢迎使用Markdown编辑器一、简单介绍二、特点和功能2.1、区域&#xff08;Zone&#xff09;2.2、运行时和永久配置2.3、服务和端口2.4、动态更新2.5、连接跟踪2.6、D-Bus接口 三、设置规则3.1、启动防火墙服务3.2、新建防火墙规则的服务&#xff0c;添加端…

C/C++进程超详细详解【中部分】(系统性学习day07)

目录 前言 一、守护进程 1.概念 2.守护进程创建的原理&#xff08;如图清晰可见&#xff09; 3.守护进程的实现&#xff08;代码块&#xff09; 二、dup和dup2 1&#xff0c;复制文件描述符 2.文件描述符重定向 三、系统日志 1&#xff0c;打开日志 2&#xff0c;向日…

【MATLAB】字体美化和乱码

文章目录 前言首先说说说字体美化乱码到底是怎么导致的&#xff1f;1 字体导致的乱码2 编码导致的乱码总结 前言 最近打开MATLAB&#xff0c;又发现了一个问题&#xff1a;编辑器中的中文输入在命令行或者说终端输出竟然是乱码&#xff0c;然后赶紧翻阅了一下此前的博客以及未发…