云安全之HTTP协议介绍

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.rhkb.cn/news/146305.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Tomcat启动后的日志输出为乱码

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

定时任务管理平台青龙 QingLong

一、关于 QingLong 1.1 QingLong 介绍 青龙面板是支持 Python3、JavaScript、Shell、Typescript 多语言的定时任务管理平台&#xff0c;支持在线管理脚本和日志等。其功能丰富&#xff0c;能够满足大部分需求场景&#xff0c;值得一试。 主要功能 支持多种脚本语言&#xf…

Mybatis学习

为什么会有mybatis?&#xff1a; 图片来自b站的黑马网课 截图 懒得自己打字了hh 帅气的人都要注明出处 相信在学习框架之前 都学习了JDBC 因为Mybatis可以解决旧的JDBC存在的一些问题 什么是mybatis?: ORM框架原理&#xff1a; Mybatis是一个ORM框架&#xff0c;即obje…

c++---I/o操作

5、文件操作 程序运行时产生的数据都属于临时数据&#xff0c;程序一旦运行结束都会被释放。 我们可以通过文件将数据持久化 C中对文件操作需要包含头文件 <fstream> 文件类型分为两种&#xff1a; 文本文件 - 文件以文本的ASCII码形式存储在计算机中二进制文件 - 文…

PADS9.5使用记录

目录 一、概述 二、PADS Logic IN4148二极管封装 SOD-123封装 SOD-323封装 SOD-523封装 2N3904 1AM 三极管封装 78L05 7533-1 一、概述 PADS Logic 原理图绘制PADS Layout PCB 封装设计PADS Router 布线 二、PADS Logic …

1.2.C++项目:仿muduo库实现并发服务器之时间轮的设计

文章目录 一、为什么要设计时间轮&#xff1f;&#xff08;一&#xff09;简单的秒级定时任务实现&#xff1a;&#xff08;二&#xff09;Linux提供给我们的定时器&#xff1a;1.原型2.例子 二、时间轮&#xff08;一&#xff09;思想&#xff08;一&#xff09;代码 一、为什…

重试机制-spring-retry、guava-retry

重试机制是什么&#xff1f; 网络重试机制是用于在网络通信中处理失败的请求。接口重试可以在一定的时间间隔内多次尝试发送相同的请求&#xff0c;直到请求成功或达到最大重试次数为止。 为什么要重试&#xff1f; 1. 提高请求的成功率&#xff1a;网络通信中可能会出现各种…

【Linux指令集】---git命令的基本使用

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Linux专栏】&#x1f388; 本专栏旨在分享学习Linux的一点学习心得&#xff0c;欢迎大家在评论区讨论&#x1f48c; 演示环境&#xff1…

git使用,一点点

查看自己有没有安装git git --version 如果没有安装请执行sudo yum install -y git来安装 git 指令 git log 查看日志 git pull 同步远端和本地仓库 这就是冲突的报错&#xff1a; 所以这个时候你要同步一下git pull

网络-fetch

文章目录 前言一、fetch简介优点&#xff1a;缺点&#xff1a; 二、使用getpost进度实现取消请求超时实现 总结 前言 本文主要记录浏览器与服务端网络通讯 fetch 的介绍与使用&#xff0c;将完成get、post、进度、取消请求、和超时请求的功能实现。 一、fetch简介 fetch作为继…

国庆day2---select实现服务器并发

select.c&#xff1a; #include <myhead.h>#define ERR_MSG(msg) do{\fprintf(stderr,"__%d__:",__LINE__);\perror(msg);\ }while(0)#define IP "192.168.1.3" #define PORT 8888int main(int argc, const char *argv[]) {//创建报式套接字socketi…

3. 文档操作

1. 创建文档 1.1 创建一个文档 在相应的索引下面使用_doc创建文档&#xff0c;地址为&#xff1a;http://127.0.0.1:9200/students/_doc&#xff0c;创建一个姓名张三的学生信息&#xff1a; {"姓名":"张三","年级":5,"班级":2,&qu…

渐变色毛玻璃形态卡悬停效果

效果展示 页面结构组成 从上述的效果展示可以看出&#xff0c;页面的组成部分主要包含这几个部分&#xff1a; 渐变色的底层方块毛玻璃的内容层内容层上的两个小方块 CSS 知识点 transformlinear-gradient 实现页面结构布局 <div class"box"><span>…

竞赛 大数据疫情分析及可视化系统

文章目录 0 前言2 开发简介3 数据集4 实现技术4.1 系统架构4.2 开发环境4.3 疫情地图4.3.1 填充图(Choropleth maps)4.3.2 气泡图 4.4 全国疫情实时追踪4.6 其他页面 5 关键代码最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 大数据疫…

笔记本电脑查询连接wifi密码

笔记本电脑查询连接wifi密码 1、背景2、环境3、实操3.1、已连接wifi查看密码3.2、之前连接过的wifi密码查看 1、背景 在日常使用过程中遇到两个使用场景。网络管理员跳过一下步骤&#xff0c;针对wifi使用人员。 1、刚到一个新环境中需要连接wifi的场景 2、在一个场所连接过一…

.Net Core后端架构实战【介入IOC控制反转】

引言 Inversion of Control,简称IOC,即控制反转。记得当初刚实习的时候公司的带我的人和我提到过IOC这个概念,当初完全不知道是 啥东西。后来有幸写了半年Java,SpringBoot里面业务开发随处可见IOC。再后来我写.Net Core用到的第一个框架Blog.Core项目,它里 面IRepository与R…

MATLAB中d2d函数用法

目录 语法 说明 示例 重新采样离散时间模型 重新采样已识别的离散时间模型 d2d函数的功能是重新采样离散时间模型。 语法 sys1 d2d(sys, Ts) sys1 d2d(sys, Ts, method) sys1 d2d(sys, Ts, opts) 说明 sys1 d2d(sys, Ts)将离散时间动态系统模型 sys 重新采样&#…

集合-List集合

系列文章目录 1.集合-Collection-CSDN博客​​​​​​ 2.集合-List集合-CSDN博客 文章目录 目录 系列文章目录 文章目录 前言 一 . 什么是List? 二 . List集合的特点 三 . 常用方法 1.void add(int index, E element): 将指定的元素插入到列表的指定位置。 2.E remove(int in…

StarRocks数据导入

1、相关环境 Flink作为当前流行的流式计算框架&#xff0c;在对接StarRocks时&#xff0c;若直接使用JDBC的方式"流式"写入数据&#xff0c;对StarRocks是不友好的&#xff0c;StarRocks作为一款MVCC的数据库&#xff0c;其导入的核心思想还是"攒微批降频率&qu…

ChatGPT App迎来重大更新;人工智能应用于应对气候变化

&#x1f989; AI新闻 &#x1f680; ChatGPT App迎来重大更新&#xff1a;增加多模态交互方式 摘要&#xff1a;OpenAI最近宣布了ChatGPT App的重大更新&#xff0c;新版的ChatGPT增加了多模态交互方式&#xff0c;用户可以向AI展示正在谈论的内容&#xff0c;比如拍照并询问…