云安全之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.hqwc.cn/news/124593.html

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

相关文章

【Unity2022】Unity实现在两个物体之间连出一条线

文章目录 Line Renderer组件添加Line Renderer组件重要属性Positions&#xff08;位置&#xff09;Width &#xff08;宽度&#xff09;Material&#xff08;材质&#xff09;其他属性 使用脚本绘制直线绳子运行结果其他文章 Line Renderer组件 我们可以使用LineRenderer组件来…

百度交易中台之内容分润结算系统架构浅析

作者 | 交易中台团队 导读 随着公司内容生态的蓬勃发展&#xff0c;内容产出方和流量提供方最关注的“收益结算”的工作&#xff0c;也就成为重中之重。本文基于内容分润结算业务为入口&#xff0c;介绍了实现过程中的重难点&#xff0c;比如千万级和百万级数据量下的技术选型和…

基于SSM的健身房管理系统

基于SSM的健身房管理系统的设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringSpringMVCMyBatis工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 【主要功能】 角色&#xff1a;管理员、用户 查看健身课程列表、新闻公告查看、推荐课程、购买…

LIMS实验室信息管理系统源码 基于计算机的数据处理技术、数据存储技术、网络传输技术、自动化仪器分析技术于一体

LIMS 是一个集现代化管理思想与基于计算机的数据处理技术、数据存储技术、网络传输技术、自动化仪器分析技术于一体&#xff0c;以实验室业务和管理工作为核心&#xff0c;遵循实验室管理国际规范&#xff0c;实现对实验室全方位管理的信息管理系统。 LIMS将样品管理、数据管理…

[CSCCTF 2019 Qual]FlaskLight 过滤 url_for globals 绕过globals过滤

目录 subprocess.Popen FILE warnings.catch_warnings site._Printer 这题很明显就是 SSTI了 源代码 我们试试看 {{7*7}} 然后我们就开始吧 原本我的想法是直接{{url_for.__globals__}} 但是回显是直接500 猜测过滤 我们正常来吧 {{"".__class__}} 查看当前…

MQ面试题

一、部署架构了解么? 1.1、生产者 1.2、消费者 1.3、brocker 负责接收生产者的消息并且储存起来,同时转发给消费者; 1.4、nameServer 类似注册中心,所有的brocker通过长链接和nameserver链接;通过心跳的方式定期的发送消息给nameserver;每个nameserver节点是对等的; 二…

SketchUp Pro 2023 for Mac——打造你的创意之城

SketchUp Pro 2023 for Mac是一款专业级的3D建模软件&#xff0c;为你提供最佳的设计和创意工具。不论你是建筑师、室内设计师&#xff0c;还是爱好者&#xff0c;SketchUp Pro都能满足你对于创意表达的需求。 SketchUp Pro 2023拥有强大而直观的界面&#xff0c;让你轻松绘制…

【小程序 - 加强】自定义组件、使用npm包、全局数据共享、分包_05

目录 一、自定义组件 1. 组件的创建与引用 1.1 创建组件 1.2 引用组件 1.2.1 局部引用组件 1.2.2 全局引用组件 1.2.3 全局引用 VS 局部引用 1.2.4 组件和页面的区别 2. 样式 2.1 组件样式隔离 2.2 组件样式隔离的注意点 2.3 修改组件的样式隔离选项 2.4 styleIso…

Springboot+vue的在线试题题库管理系统(有报告),Javaee项目,springboot vue前后端分离项目。

演示视频&#xff1a; Springbootvue的在线试题题库管理系统&#xff08;有报告&#xff09;&#xff0c;Javaee项目&#xff0c;springboot vue前后端分离项目。 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的在线试题题库管理系统&#xff0c;采用M&…

双重差分模型(DID)论文写作指南与操作手册

手册链接&#xff1a;双重差分模型&#xff08;DID&#xff09;论文写作指南与操作手册https://www.cctalk.com/m/group/90983583?xh_fshareuid60953990 简介&#xff1a; 当前&#xff0c;对于准应届生们来说&#xff0c;毕设季叠加就业季&#xff0c;写作时间显得十分宝贵…

嵌入式软件架构中抽象层设计方法

大家好&#xff0c;今天分享一篇嵌入式软件架构设计相关的文章。 软件架构这东西&#xff0c;众说纷纭&#xff0c;各有观点。什么是软件架构&#xff0c;我们能在网上找到无数种定义。 比如&#xff0c;我们可以这样定义&#xff1a;软件架构是软件系统的基本结构&#xff0c…

MyBatis的关联映射

目录 ​编辑 文章目录 前言 一、表与表之间的关系 一对一&#xff1a; 一对多&#xff1a; 多对一&#xff1a; 多对多&#xff1a; 二、多对一 1.创建接口MoreMapper 在MoreMapper里面写入方法&#xff0c;通过员工ID来查询员工的信息以及部门的信息&#xff0c;员…