HTTP1.0~2.0发展史

Http1.0,Http2.0,Http3.0区别 Http1.0,Http2.0,Http3.0区别HTTP1.0~2.0HTTP1.0HTTP1.1HTTPSHTTP2.0(SPDY)Http1.x的问题Http2.x的二进制分帧优点:HTTP3.0(QUIC) HTTP1.0~2.0 HTTP1.0 功能: 1.请求响应支持HTTP头,响应含状态行,增加状态码 2.支持HEAD,POST方法 关于http的方法: 1.GET方法:获取资源 2.POST方法:传输实体主题 3.PUT方法:传输文件 4.HEAD方法:获取报文首部,与G 阅读详情

一、HTTP标准下的瓶颈

HTTP标准:

  1. 一条连接上只可发送一个请求。
  2. 请求只能从客户端开始,客户端不可以接收除响应以外的指令。
  3. 请求/响应首部未经压缩就发送。首部信息越多延迟越大 。
  4. 发送冗长的首部,每次互相发送相同的首部造成的浪费较多。
  5. 可任意选择数据压缩格式。非强制压缩发送。

       由于上述HTTP的标准,当大量用户发布内容,Web网站需要在很短的时间内发生大量的内容更新时,HTTP无法实时地显示这些更新的内容。(使用 HTTP 协议探知服务器上是否有内容更新,就必须频繁地从客户端到服务器端进行确认。如果服务器上没有内容更新,那么就会产生徒劳的通信。)

二、解决办法

1.Ajax(异步JavaScript与XML技术)

        Ajax(Asynchronous JavaScript and XML)是一种可以达到局部Web页面替换加载的异步通信手段。它可以只更新一部分页面,响应中传输的数据量会因此而减少。但是,利用 Ajax 实时地从服务器获取内容,有可能会导致大量请求产生。另外, Ajax 仍未解决 HTTP协议本身存在的问题。

2.Comet

       一旦服务器端有内容更新了, Comet 不会让请求等待,而是直接给客户端返回响应。这是一种通过延迟应答,模拟实现服务器端向客户端推送( Server Push ) 的功能。

       通常,服务器端接收到请求,在处理完毕后就会立即返回响应,但为了实现推送功能, Comet 会先将响应置于挂起状态,当服务器端有内容更新时,再返回该响应。因此,服务器端一旦有更新,就可以立即反馈给客户端。

       内容上虽然可以做到实时更新,但为了保留响应,一次连接的持续时间也变长了。期间,为了维持连接会消耗更多的资源。另外, Comet 也仍未解决 HTTP 协议本身存在的问题。

3.SPDY

       陆续出现的 Ajax 和 Comet 等提高易用性的技术,一定程度上使 HTTP 得到了改善,但未解决HTTP协议本身的问题。为了进行根本性的改善,需要有一些协议层面上的改动。Google在2010 年发布了 SPDY ( 取自 SPeeDY,发音同 speedy ) , 其开发目标旨在解决 HTTP 的性能瓶颈,缩短Web 页面的加载时间 ( 50 % )。

       SPDY没有完全改写 HTTP 协议,而是在 TCP/IP的应用层与传输层之间通过新加会话层的形式运作。同时,考虑到安全性问题, SPDY 规定通信中使用 SSL 。

       SPDY以会话层的形式加入,控制对数据的流动,但还是采用 HTTP 建立通信连接。因此,可照常使用 HTTP 的 GET 和 POST 等方法、 Cookie以及 HTTP 报文等。

使用SPDY后,HTTP协议额外获得以下功能:

多路复用流

通过单一的TCP连接,可以无限制处理多个HTTP请求(并发)。所有请求的处理都在一条TCP连接上完成,因此TCP的处理效率得到提高。

赋予请求优先级

SPDY不仅可以无限制地并发处理请求,还可以给请求逐个分配优先级顺序。这样主要是为了在发送多个请求时,解决因带宽低而导致响应变慢的问题。

压缩HTTP首部

压缩HTTP请求和响应的首部。这样一来,通信产生的数据包数量和发送的字节数就更少了。

推送功能

支持服务器主动向客户端推送数据的功能。这样,服务器可直接发送数据,而不必等待客户端的请求。

服务器提示功能

服务器可以主动提示客户端请求所需的资源。由于在客户端发现资源之前就可以获知资源的存在,因此在资源已缓存等情况下,可以避免发送不必要的请求。

       因为 SPDY 基本上只是将单个域名( IP 地址)的通信多路复用,所以当一个 Web 网站上使用多个域名下的资源,改善效果就会受到限制。

4.WebSocket

       WebSocket,即 Web 浏览器与 Web 服务器之间全双工通信标准。(全双工:两方可同时发送和接收;半双工:两方在同一时间只能发送或接收;单双工:只能一方向另一方发送)

       由于是建立在 HTTP 基础上的协议,因此连接的发起方仍是客户端(先通过http建立连接,然后再通过upgrade协议来切换为websocket协议,即握手),而一旦 Web 服务器与客户端之间建立起WebSocket协议的通信连接,之后所有的通信都依靠这个专用协议进行。通信过程中可互相发送JSON、 XML 、 HTML 或图片等任意格式的数据。不论服务器还是客户端,任意一方都可直接向对方发送报文。

WebSocket 协议的主要特点:

推送功能

支持由服务器向客户端推送数据的推送功能。这样,服务器可直接发送数据,而不必等待客户端的请求。

减少通信量

只要建立起 WebSocket 连接,就希望一直保持连接状态。和 HTTP 相比,不但每次连接时的总开销减少,而且由于 WebSocket 的首部信息很小,通信量也相应减少了。

       为了实现 WebSocket 通信,在 HTTP 连接建立之后,需要完成一次“握手” ( Handshaking ) 的步骤:客户端用 HTTP 的Upgrade首部字段,告知服务器通信协议发生改变,以达到握手的目的。服务器对于客户端的请求 , 返回状态码 101 Switching Protocols的响应。

       成功握手确立 WebSocket 连接之后,通信时不再使用 HTTP 的数据帧,而采用 WebSocket 独立的数据帧。

 

5.HTTP/2.0

       HTTP/2.0是由google的SPDY协议衍生而来的,目标是改善用户在使用 Web 时的速度体验。

HTTP2.0引入的新技术:

新的二进制格式(Binary Format)

HTTP1.x的解析基于文本。基于文本协议的格式解析存在天然缺陷,文本的表现形式有多样性,要做到健壮性考虑的场景必然很多,二进制则不同,只认0和1的组合。基于这种考虑HTTP2.0的协议解析决定采用二进制格式,实现方便且健壮。

多路复用(MultiPlexing)

即连接共享,即每一个request都是用作连接共享机制的。一个request对应一个id,这样一个连接上可以有多个request,每个连接的request可以随机的混杂在一起,接收方可以根据request的 id将request再归属到各自不同的服务端请求里面。

header压缩

HTTP1.x的header带有大量信息,而且每次都要重复发送,HTTP2.0使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。

客户端拉取(client pull)/服务端推送(server push)

同SPDY一样,HTTP2.0也具有server push功能。

流量控制

流量控制是一种阻止发送方向接收方发送大量数据的机制,以免超出后者的需求或处理能力。

6.WebDAV

       WebDAV ( Web - based Distributed Authoringand Versioning , 基于万维网的分布式创作和版本控制 ) 扩展了HTTP/1.1协议,是一个可对 Web 服务器上的内容直接进行文件复制、编辑等操作的分布式文件系统。除了创建、删除文件等基本功能,它还具备文件创建者管理、文件编辑过程中禁止其他用户内容覆盖的加锁功能,以及对文件内容修改的版本控制功能。

HTTP协议学习笔记--http1.0、http1.1、http2.0、https、http3 参考文章《HTTP协议:菜鸟入门系列》 - 老_张 - 博客园 参考文章 HTTP2 详解 - 简书 参考文章 HTTP2.0协议全文翻译 参考文章 探索HTTP/2: 流的状态(原) - John Jiang - BlogJava HTTP/1.x http1.x是基于文本的通信协议,分为start line,http header和http body三个部分。 根据发起方的不同 start... 阅读详情

相关推荐

详解HTTP1.0、1.1、2.0版本区别/优化

HTTP/1.1并不支持 HTTP 首部压缩,为此 SPDY 和 HTTP/2 应运而生, SPDY 使用的是通用的DEFLATE 算法,而 HTTP/2 则使用了专门为首部压缩而设计的 HPACK 算法。本质上是为了减少请求,通过多个js或css合并成一个文件,多张小图片拼合成Sprite图,可以让多个HTTP请求减少为一个,减少额外的协议开销,而提升性能。连接和并行发送请求,这样每次一个请求都需要三次握手,而且其实建立连接和释放连接的这个过程是最耗时的,传输数据相反却不那么耗时。的缓存机制失效的问题。

weixin_47826078的博客 5370

HTTP协议的演进:从HTTP/1.0到HTTP/2.0

HTTP/2.0引入了帧(Frame)的概念,允许在单一的TCP连接上同时发送多个请求和响应。通过在一个TCP连接上传输多个HTTP请求和响应,减少了连接建立和关闭的开销,从而提高了网络利用率和性能。随着互联网技术的不断发展,HTTP协议作为Web通信的基础,也经历了从HTTP/1.0到HTTP/1.1再到HTTP/2.0的演进。除了GET和POST之外,HTTP/1.1还新增了PUT、DELETE、OPTIONS、HEAD等请求方式,为Web应用提供了更多的灵活性和功能选择。然而,它也存在一些不足之处。

WYZFJHH的博客 1168

告别Keil,在Windows上用VSCode + arm-none-eabi-gcc + Makefile搭建国产MCU开发环境(附JLink配置避坑)

本文详细介绍了如何在Windows上使用VSCode、arm-none-eabi-gcc和Makefile搭建国产MCU开发环境,替代传统的Keil和IAR。内容涵盖工具链配置、工程结构设计、Makefile编写、VSCode集成调试以及高效开发工作流,特别针对国产MCU如复旦微FM33系列提供了优化方案和避坑指南。

weixin_28729205的博客 431

http1.0~2.0

http1.0和http1.1 1、长连接 http1.1支持长连接,默认打开keep-alive,通过这个参数告诉服务器要建立长连接,在一个tcp连接中可以传送多个http请求和响应,减少了建立和关闭连接的消耗和延迟 2、节约带宽 http1.0:客户端只需要一小部分,但服务端一次性把整个对象传送,且不支持断点续传功能。 http1.1支持只发送header信息,如果服务端验证通过返回100后,客服端才开始发送body请求,如果返回401则不用发送body请求,节约了带宽。 3、缓存处理 http1.0:

m0_45857808的博客 263

Protege新手入门:5分钟搞定本体建模基础(附实战案例)

本文为Protege本体建模新手提供了一份快速入门指南。通过构建一个关于“披萨”的实战案例,详细讲解了从环境准备、定义核心类(Classes)、建立对象属性(Object Properties)到设置数据属性(Data Properties)和创建个体的完整流程。文章旨在帮助读者绕过复杂理论,在5分钟内直观掌握本体建模的基础操作,快速建立知识图谱构建的信心。

weixin_28335283的博客 281

从零开始解析N-CMAPSS数据集:航空发动机健康管理的入门指南

本文详细解析了N-CMAPSS数据集在航空发动机健康管理中的应用,从数据集的构成、关键变量到实际数据分析方法,为初学者提供了全面的入门指南。通过Python代码示例,展示了如何加载、探索和建模这一复杂数据集,帮助读者掌握航空发动机性能预测的核心技术。

weixin_29063979的博客 318

HTTP1.0、1.1、2.0的关系和区别以及编码和字符集的解释

目录 一、关于HTTP的网络请求 二、HTTP1.0和1.1的区别 三、HTTP2.0 四、编码释义 五、字符集释义 (一)ASCII字符集 (二)GB2312 (三)UTF-8 编码 一、关于HTTP的网络请求 总的来说,影响一个 HTTP 网络请求的因素主要有两个:带宽、延迟 随着网络建设逐步完善,目前基本上已经不会再因为宽带影响网速,因此,延迟便是网速的首要拦路虎。 延迟的三点要素: 浏览器阻塞(HOL blocking):浏览器会因为一些原因阻塞请求。浏览器对于同一个域名,

Hero_era的博客 2130

深入GSConv代码:逐行解析这个混合了标准卷积与深度可分离卷积的‘新算子’

本文深入解析GSConv代码,详细介绍了这个混合标准卷积与深度可分离卷积的‘新算子’的设计哲学与实现框架。通过PyTorch代码逐行分析,揭示GSConv如何在轻量级卷积神经网络中平衡计算效率与特征表达能力,特别适用于Slim-Neck架构,显著降低计算量同时保持高精度。

weixin_29860267的博客 321

websocket和HTTP2.0的服务器推送有什么区别

websocket和HTTP2.0的服务器推送有什么区别

weixin_43801836的博客 2155

csp-j/s

CSP-J/S 是中国计算机学会(CCF)主办的 ‌‌(Certified Software Professional Junior/Senior),是信息学奥赛(NOI)体系的入门级选拔考试,也是国内最具权威性的青少年编程能力认证之一。

gxyxxrYYDS的博客 2021

Z-Image Turbo随机性增强插件的下载教程及使用方法 z-image生成图像太相似怎么办 Z-Image Turbo 整合包下载

Z-Image Turbo 是出了名的“seed 不敏感”,非常难做多样化图像创作。ComfyUi-ConditioningNoiseInjection 插件通过在conditioning(提示词编码)阶段加入可控噪声,成功解决了 Turbo 随机性不足的问题。它不仅能让 Turbo 产生更丰富的构图差异,还能保持主题稳定,是目前我测试过最有效的 Turbo 随机性增强工具。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1970

websocket和http2

网络

weixin_50134791的博客 1823

刷机维修进阶教程-----adb禁用错了系统app导致无法开机 如何保数据无损恢复机型

在刷机维修过程中 。我们会遇到一些由于客户使用adb指令来禁用手机app而导致手机无法开机进入系统的故障机型。通常此类问题机型有好几种解决方法。但如果客户需要保数据来恢复机型。其实操作也是很简单的.还有类似误删除应用导致不开机等等如何保数据。  通过博文了解💝💝💝    1💝💝💝----adb禁用或者删除系统app导致无法开机的几种解决方法 2💝💝💝----如何保数据来无损恢复机型 3💝💝💝----其他保数据解决系统类故障无法开机的步骤解析

小马哥的专栏 1349

HTTP1.0、HTTP1.1、HTTP2.0的关系和区别

一、汇总对比 HTTP1.0 无状态、无连接 HTTP1.1 持久连接 请求管道化 增加缓存处理(新的字段如cache-control) 增加Host字段、支持断点传输等(把文件分成几部分) HTTP2.0 二进制分帧 多路复用(或连接共享) 头部压缩 服务器推送 二、H...

田园园野的博客 1万+

智能挂锁软件需求规格说明书(SRS)

智能挂锁系统SmartPadlockV1.0是一款融合蓝牙通信、指纹识别和远程控制技术的便携式安防设备。系统由设备端、移动App和云平台三部分组成,支持蓝牙配对(10米内)、指纹识别、OTP一次性密码等多种开锁方式,响应时间<1.5秒。产品采用SM2/SM4加密技术保障安全,日均20次使用下续航达180天,兼容iOS13+/Android8.0+系统。功能包括设备绑定、远程授权、开锁记录查询和OTA固件升级,符合个人信息保护法规要求,适用于仓储、快递柜等多场景应用。

moton2017的博客 2110

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

HTTP 2.0 与HTTP1.1的差别

前面的话 在说HTTP2.0前,先说一说发展到HTTP1.1做了哪些升级。 HTTP1.1的升级 目前使用最广泛的HTTP1.1做了哪些重大升级? 默认长连接。HTTP1.0也提供长连接,但是默认是短连接,要想长连接必须将头部的connection设置为keep-alive。而HTTP1.1默认开启connection:keep-alive,不用设置。 强制设置Host请求首部字段。Host字段...

小柒的前端之旅 3894

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

HTTP1.0、HTTP1.1和HTTP2.0的区别---学习

影响一个HTTP网络请求的因素主要有两个:带宽和延迟 延迟: - 浏览器阻塞: 浏览器对同一个域名,连接数会有所限制,如果超出了最大连接数,后续请求就会被阻塞。(如果要做页面热点计算的话或者广告,那就得注意域名的使用了) - DNS查询 - 建立连接: HTTP是基于TCP协议的,至少第三次握手时才能带HTTP请求报文,以达到真正的连接 一、HTTP1.0和HTTP1.1的一些区别 1、缓存处理,在1.0中主要使用header里的if-Modified-...

程序员小嗨 2505

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

HTTP1.0、HTTP1.1、HTTP2.0、okHTTP的区别

HTTP1.0 浏览器的每次请求都需要与服务器建立一个TCP连接,服务器处理完成后立即断开TCP连接(无连接),服务器不跟踪每个客户端也不记录过去的请求(无状态)。 HTTP1.1 HTTP/1.0中默认使用Connection: close。在HTTP/1.1中已经默认使用Connection: keep-alive,避免了连接建立和释放的开销,但服务器必须按照客户端请求的先后顺序依次回送相应的结果,以保证客户端能够区分出每次请求的响应内容。通过Content-Length字段来判断当前请求的数据是否已经

IT_Bonnie的博客 2197

HTTP1.0、HTTP1.1、HTTP2.0演变进化史

http1.0 简介:HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。 痛点:连接无法复用和head of line blocking这两个问题。 连接无法复用:理解这两个问题有一个十分重要的前提:客户端是依据域名来向服务器建立连接,一般PC端浏览器会针对单个...

小白的博客 1038

HTTP1.0、HTTP1.1、HTTP2.0、HTTP3.0的关系和区别

HTTP1.1的缺点:安全性不足和性能不高;HTTP2.0完全兼容HTTTP1.0,是“更安全的HTTP,更快的HTTPS”,头部压缩,多路复用等技术充分利用了带宽,降低了延迟。HTTP3.0的底层支撑协议QUIC基于UDP实现,又含TCP的特点,实现了又快又可靠的协议。

记录学习路上的每一个 “啊哈!” 时刻 欢迎交流,共同进步! 2611

HTTP/1.0/1.1/2.0

本文将涉及以下方面: HTTP协议 HTTP1.0 HTTP1.1 HTTP2.0 1.0和1.1和2.0之间的区别 HTTPS HTTP协议 HTTP(超文本传输协议,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。是用于从WWW服务器...

Again yy 2961

http1.0~2.0的区别和https实现原理

http1.0、http1.1和http2的区别 http0.9只能进行get请求; http1.0添加了POST,HEAD,OPTION,PUT,DELETE等; http1.1增加了长连接keep-alive,增加了host域,而且节约带; http2 多路复用,头部压缩,服务器推送。 https和http有什么区别,https的实现原理 http无状态无连接,而且是明文传输,不安全。 https传输内容加密,身份验证,保证数据完整性。 https实现原理: 浏览器把自己支持的加密规则(

刘炳全的博客 1989

面试必问的http-1.3:http1.0-http1.1-http1.2区别

Http1.1 由于HTTP 1自身的局限性,它不能很好的为用户提供性能良好的WEB服务。 于1999年6月正式发布了HTTP1.1标准REC2616,它厘清了之前版本中很多有歧义的地方,而且还新增了很多重要的优化, 如持久连接、分块编码传输、状态码扩充、增强的缓存机制、传输编码及请求管道等。 1.持久连接 每个TCP连接在建立初期都需要进行三次握手,需要经历一次客户端与服务器间的完整往返,...

u010953880的专栏 3489

HTTP 1.0 与 HTTP 2.0 核心区别详解:从文本到二进制、从阻塞到多路复用

HTTP 协议是互联网的基石。从 HTTP 0.9 的纯文本传输,到 1.0 正式支持请求头/响应头,再到 1.1 引入持久连接,直到HTTP 2.0彻底重构二进制分帧与多路复用,每一次演进都为了解决性能瓶颈。很多开发者对 1.0 和 2.0 的区别停留在“2.0 更快”的模糊认知上。今天我们从协议格式、连接模型、队头阻塞、服务端推送等角度,带流程图详细对比。短连接 单一长连接文本请求/响应 二进制帧流串行请求 多路复用无压缩头 HPACK 压缩无推送 服务端推送HTTP 1.0。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 2856

HTTP1.0 HTTP1.1 HTTP2.0 主要特性对比

转载自:https://segmentfault.com/a/1190000013028798 本篇是对HTTP不同版本主要特性的一个概述和总结。 HTTP1.0 早先1.0的HTTP版本,是一种无状态、无连接的应用层协议。 HTTP1.0规定浏览器和服务器保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器处理完成后立即断开TCP连接(无连接),服务器不跟踪每个客户端也不记录过去的请求(无状态)。 这种无状态性可以借助cookie/session机制来做身份认证和状态记录。而下面两.

huhm_evget的博客 445

HTTP协议、HTTP1.0、http1.1、http2.0

HTTP(超文本传输协议,HyperText Transfer Protocol)最初的目的是提供一种发布和接收HTML页面的方法,是服务器传输超文本到本地浏览器的传输协议,默认使用80端口。 HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP使用TCP而不是UDP的原因在于TCP协议提供传输控制,按顺序组织数据,和错误纠正。 HTTP协议的瓶颈及其优化技巧都是基于TCP协议本身的特性。如TCP建立连接时三次握手有1.5个RTT(round-trip time)

abc_xian的博客 686
上一篇: C++11新特性之——enable_shared_from_this(Boost原有)
下一篇: HTTP劫持
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ปรัชญา แค้วคำมูล

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值