新闻详情

新闻详情

首页 / 资讯中心 / 详情

【2019-09-03】【转】HTTP1.0、HTTP1.1和HTTP2.0的区别

发布时间:2026/9/28 20:58:58来源:尧图网络
【2019-09-03】【转】HTTP1.0、HTTP1.1和HTTP2.0的区别
[历史归档]本文原发布于 cstriker1407.info 个人博客内容为历史存档仅供参考。发布时间2019-09-03 标题【转】HTTP1.0、HTTP1.1和HTTP2.0的区别分类编程 / 网络通讯 标签Http·tlsHTTP1.0、HTTP1.1和HTTP2.0的区别HTTP的历史HTTP的基本优化HTTP1.0和HTTP1.1的一些区别HTTPS与HTTP的一些区别SPDYHTTP1.x的优化HTTP2.0SPDY的升级版HTTP2.0和HTTP1.X相比的新特性本文转自【 https://www.jianshu.com/p/be29d679cbff 】和【 https://segmentfault.com/a/1190000016656529 】有删改。HTTP的历史早在HTTP建立之初主要就是为了将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。也是说对于前端来说我们所写的HTML页面将要放在我们的web服务器上用户端通过浏览器访问url地址来获取网页的显示内容但是到了WEB2.0以来我们的页面变得复杂不仅仅单纯的是一些简单的文字和图片同时我们的HTML页面有了CSSJavascript来丰富我们的页面展示当ajax的出现我们又多了一种向服务器端获取数据的方法这些其实都是基于HTTP协议的。同样到了移动互联网时代我们页面可以跑在手机端浏览器里面但是和PC相比手机端的网络情况更加复杂这使得我们开始了不得不对HTTP进行深入理解并不断优化过程中。HTTP的基本优化影响一个HTTP网络请求的因素主要有两个带宽和延迟。带宽如果说我们还停留在拨号上网的阶段带宽可能会成为一个比较严重影响请求的问题但是现在网络基础建设已经使得带宽得到极大的提升我们不再会担心由带宽而影响网速那么就只剩下延迟了。延迟浏览器阻塞HOL blocking浏览器会因为一些原因阻塞请求。浏览器对于同一个域名同时只能有 4 个连接这个根据浏览器内核不同可能会有所差异超过浏览器最大连接数限制后续请求就会被阻塞。DNS 查询DNS Lookup浏览器需要知道目标服务器的 IP 才能建立连接。将域名解析为 IP 的这个系统就是 DNS。这个通常可以利用DNS缓存结果来达到减少这个时间的目的。建立连接Initial connectionHTTP 是基于 TCP 协议的浏览器最快也要在第三次握手时才能捎带 HTTP 请求报文达到真正的建立连接但是这些连接无法复用会导致每次请求都经历三次握手和慢启动。三次握手在高延迟的场景下影响较明显慢启动则对文件类大请求影响较大。HTTP1.0和HTTP1.1的一些区别HTTP1.0最早在网页中使用是在1996年那个时候只是使用一些较为简单的网页上和网络请求上而HTTP1.1则在1999年才开始广泛应用于现在的各大浏览器网络请求中同时HTTP1.1也是当前使用最为广泛的HTTP协议。 主要区别主要体现在缓存处理在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准HTTP1.1则引入了更多的缓存控制策略例如Entity tagIf-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。带宽优化及网络连接的使用HTTP1.0中存在一些浪费带宽的现象例如客户端只是需要某个对象的一部分而服务器却将整个对象送过来了并且不支持断点续传功能HTTP1.1则在请求头引入了range头域它允许只请求资源的某个部分即返回码是206Partial Content这样就方便了开发者自由的选择以便于充分利用带宽和连接。错误通知的管理在HTTP1.1中新增了24个错误状态响应码如409Conflict表示请求的资源与资源的当前状态发生冲突410Gone表示服务器上的某个资源被永久性的删除。Host头处理在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址因此请求消息中的URL并没有传递主机名hostname。但随着虚拟主机技术的发展在一台物理服务器上可以存在多个虚拟主机Multi-homed Web Servers并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域且请求消息中如果没有Host头域会报告一个错误400 Bad Request。**长连接**HTTP 1.1支持长连接PersistentConnection和请求的流水线Pipelining处理在一个TCP连接上可以传送多个HTTP请求和响应减少了建立和关闭连接的消耗和延迟在HTTP1.1中默认开启Connection keep-alive一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。HTTPS与HTTP的一些区别HTTP协议运行在TCP之上所有传输的内容都是明文HTTPS运行在SSL/TLS之上SSL/TLS运行在TCP之上所有传输的内容都经过加密的。HTTP和HTTPS使用的是完全不同的连接方式用的端口也不一样前者是80后者是443。HTTPS可以有效的防止运营商劫持解决了防劫持的一个大问题。SPDYHTTP1.x的优化2012年google如一声惊雷提出了SPDY的方案优化了HTTP1.X的请求延迟解决了HTTP1.X的安全性SPDY是Speedy的昵音意为“更快”。它是Google开发的基于TCP协议的应用层协议目标是优化HTTP协议的性能通过压缩、多路复用和优先级等技术缩短网页的加载时间并提高安全性。SPDY协议的核心思想是尽量减少TCP连接数。SPDY并不是一种用于替代HTTP的协议而是对HTTP协议的增强。具体如下**降低延迟。**针对HTTP高延迟的问题SPDY优雅的采取了多路复用multiplexing。多路复用通过多个请求stream共享一个tcp连接的方式解决了HOL blocking的问题降低了延迟同时提高了带宽的利用率。请求优先级request prioritization。多路复用带来一个新的问题是在连接共享的基础之上有可能会导致关键请求被阻塞。**SPDY允许给每个request设置优先级这样重要的请求就会优先得到响应。**比如浏览器加载首页首页的html内容应该优先展示之后才是各种静态资源文件脚本文件等加载这样可以保证用户能第一时间看到网页内容。header压缩。前面提到HTTP1.x的header很多时候都是重复多余的。选择合适的压缩算法可以减小包的大小和数量。基于HTTPS的加密协议传输大大提高了传输数据的可靠性。服务端推送server push采用了SPDY的网页例如我的网页有一个sytle.css的请求在客户端收到sytle.css数据的同时服务端会将sytle.js的文件推送给客户端当客户端再次尝试获取sytle.js时就可以直接从缓存中获取到不用再发请求了。HTTP2.0SPDY的升级版HTTP2.0可以说是SPDY的升级版其实原本也是基于SPDY设计的但是HTTP2.0 跟 SPDY 仍有不同的地方如下HTTP2.0和SPDY的区别HTTP2.0 支持明文 HTTP 传输而 SPDY 强制使用 HTTPSHTTP2.0 消息头的压缩算法采用 HPACK而非 SPDY 采用的 DEFLATEHTTP2.0和HTTP1.X相比的新特性新的二进制格式Binary FormatHTTP1.x的解析是基于文本。基于文本协议的格式解析存在天然缺陷文本的表现形式有多样性要做到健壮性考虑的场景必然很多二进制则不同只认0和1的组合。基于这种考虑HTTP2.0的协议解析决定采用二进制格式实现方便且健壮。多路复用MultiPlexing即连接共享即每一个request都是是用作连接共享机制的。一个request对应一个id这样一个连接上可以有多个request每个连接的request可以随机的混杂在一起接收方可以根据request的 id将request再归属到各自不同的服务端请求里面。HTTP2.0中有两个概念非常重要帧frame和流stream。帧是最小的数据单位每个帧会标识出该帧属于哪个流流是多个帧组成的数据流。所谓多路复用即在一个TCP连接中存在多个流即可以同时发送多个请求对端可以通过帧中的表示知道该帧属于哪个请求。在客户端这些帧乱序发送到对端后再根据每个帧首部的流标识符重新组装。通过该技术可以避免HTTP旧版本的队头阻塞问题极大提高传输性能。HTTP2.0的多路复用和HTTP1.X中的长连接复用有什么区别HTTP/1.* 一次请求-响应建立一个连接用完关闭每一个请求都要建立一个连接HTTP/1.1 Pipeling解决方式为若干个请求排队串行化单线程处理后面的请求等待前面请求的返回才能获得执行机会一旦有某请求超时等后续请求只能被阻塞毫无办法也就是人们常说的线头阻塞HTTP/2多个请求可同时在一个连接上并行执行。某个请求任务耗时严重不会影响到其它连接的正常执行具体如图header压缩在HTTP1.x中我们使用文本的形式传输header在header中携带cookie的话每次都需要重复传输几百到几千的字节这着实是一笔不小的开销。在HTTP2.0中我们使用了HPACKHTTP2头部压缩算法压缩格式对传输的header进行编码减少了header的大小。并在两端维护了索引表用于记录出现过的header后面在传输过程中就可以传输已经记录过的header的键名对端收到数据后就可以通过键名找到对应的值。服务端推送server push同SPDY一样HTTP2.0也具有server push功能。在HTTP2.0中服务端可以在客户端某个请求后主动推送其他资源。服务端推送能把客户端所需要的资源伴随着index.html一起发送到客户端省去了客户端重复请求的步骤。正因为没有发起请求建立连接等操作所以静态资源通过服务端推送的方式可以极大地提升速度。具体如下普通的客户端请求过程服务端推送的过程
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

STM32串口调试5分钟闭环:USB转TTL驱动与硬件连接全指南 2026/9/28 21:52:54

STM32串口调试5分钟闭环:USB转TTL驱动与硬件连接全指南

1. 为什么“5分钟搞定”不是口号,而是可复现的操作节奏STM32串口通信,是每个嵌入式新手跨出开发板点亮LED后的第一道真实门槛。它不像GPIO那样只写寄存器就能看到结果,而是一条需要两端协同、软硬咬合、信号精准对齐的“数据通道”。你手里的…

阅读更多 →
校园POS消费数据清洗与行为建模实战指南 2026/9/28 21:52:54

校园POS消费数据清洗与行为建模实战指南

简介:本资源是一份面向本科生与Python初学者的校园消费行为分析实战项目,适用于毕业设计、期末大作业及课程设计场景,聚焦学生群体消费偏好、时段规律与食堂就餐结构等现实问题,助力掌握从数据清洗到建模可视化的完整分析链路。压…

阅读更多 →
ST7789V 8080并口驱动实战:FSMC配置与60fps刷新优化 2026/9/28 21:51:59

ST7789V 8080并口驱动实战:FSMC配置与60fps刷新优化

1. 为什么我要折腾ST7789V的8080并口模式市面上关于ST7789V的教程,十篇里有八篇讲的是SPI驱动,剩下两篇讲的是RGB接口。8080并口(也就是Intel 8080时序的MCU接口)的完整教程少得可怜,能跑通的初始化代码更是凤毛麟角。…

阅读更多 →
Altium Designer集成库IntLib元件调用不显示的根源与实战解决 2026/9/28 21:51:59

Altium Designer集成库IntLib元件调用不显示的根源与实战解决

1. 项目概述:为什么“元件调用不显示”是AD用户最常卡住的生死线Altium Designer里,元件调用后在原理图上一片空白、属性栏里只显示“?”、放置时提示“Component not found”——这种问题我每天至少收到7条私信。不是设计能力不行,而是集成…

阅读更多 →
STM32驱动ST7789V 8080并口屏:从GPIO模拟到FSMC硬件加速实战 2026/9/28 21:51:52

STM32驱动ST7789V 8080并口屏:从GPIO模拟到FSMC硬件加速实战

1. 项目缘起与整体设计思路1.1 为什么还要折腾8080并口屏现在做嵌入式显示,SPI接口的屏几乎占了半壁江山,接线少、驱动简单、Arduino库一抓一大把。但真到了量产项目或者对刷屏速度有要求的场景,SPI那点带宽就开始捉襟见肘了。我去年做一个工…

阅读更多 →
Superpowers实战:给AI编码代理装上技能包、记忆库和工作流 2026/9/28 21:51:52

Superpowers实战:给AI编码代理装上技能包、记忆库和工作流

做AI辅助编程大半年,我最深的感受是:工具越来越强,用起来却越来越散。Codex聊着聊着就忘了上半场的结论,每次新开会话要把项目背景重新讲一遍,团队里各人的Agent配置又五花八门。后来我把一套叫 superpowers 的增强工作…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉