HTTP协议知多少-关于http1.x、http2、SPDY的相关知识
作为网站开发的基础协议,我们知道浏览器上都有输出http这四个字母,这意味着什么呢?
这就是最基础的HTTP协议。
逐浪君今天为各位大人准备了一些HTTP技术的知识,来和大家分享。
以下图为例:

这一个加载界面,至少用到了http/1.1、SPDY、Http/2(简称h2)三种浏览器技术。
先说HTTP/1.1:
HTTP1.1(Hypertext Transfer Protocol Version 1.1)超文本传输协议-版本1.1
它是用来在Internet上传送超文本的传送协议。它是运行在TCP/IP协议簇之上的HTTP应用协议,它可以使浏览器更加高效,使网络传输减少。任何服务器除了包括HTML文件以外,还有一个HTTP驻留程序,用于响应用用户请求。您的浏览器是HTTP客户,向服务器发送请求,当浏览器中输入了一个开始文件或点击了一个超级链接时,浏览器就向服务器发送了HTTP请求,此请求被送往由URL指定的IP地址。驻留程序接收到请求,在进行必要的操作后回送所要求的文件。
HTTP1.1支持续连接.通过这种连接,就有可能在建立一个TCP连接后,发送请求并得到回应,然后发送更多的请求并得到更多的回应.通过把建立和释放TCP连接的开销分摊到多个请求上,则对于每个请求而言,由于TCP而造成的相对开销被大大地降低了.而且,还可以发送流水线请求,也就是说在发送请求1之后的回应到来之前就可以发送请求2.也可以认为,一次连接发送多个请求,由客户机确认是否关闭连接,而服务器会认为这些请求分别来自不同的客户端。
与之相对的HTTP1.0
当连接建立起来以后,浏览器发送一个请求,之后一个回应消息被送回来.然后TCP连接被释放.这在早期,Web页面通常只包含HTML文本,在这种情况下,这样的做法已经足够了.但是,现在的网页一般还含有大量的图标,图象以及其他很养眼的内容,所以建立一个TCP连接仅仅传输一个图标,则显得代价太昂贵了.

再说HTTP/2:
HTTP/2,也就是超文本传输协议第2版,不论是1还是2,HTTP的基本语义是不变的,比如方法语义(GET/PUST/PUT/DELETE),状态码(200/404/500等),Range Request,Cacheing,Authentication、URL路径, 不同的主要是下面几点:
HTTP2 主要是针对 Http1的下面几个问题做的优化:
并行能力有限
每一个源最大只支持6个请求 
管道在实际使用时不起作用 
竞争性的TCP流,强制快速重传(Spurious retransmissions) 
额外的握手、内存缓冲等
客户端请求队列
队首阻塞 
延迟的请求分发
较高的协议负载
头信息和Cookies大约要800字节 
HTTP元数据没有压缩
另外,HTTP/1.1只允许由客户端主动发起请求,服务端只能等待客户端发送请求,这对于满足预加载的现状是一种桎梏。
HTTP 2.0  的出现,相比于 HTTP 1.x ,大幅度的提升了 web 性能。在与 HTTP/1.1  完全语义兼容的基础上,进一步减少了网络延迟。而对于前端开发人员来说,无疑减少了在前端方面的优化工作。本文将对 HTTP 2.0 协议  个基本技术点进行总结,联系相关知识,探索 HTTP 2.0 是如何提高性能的。
初露锋芒
HTTP/2: the Future of the Internet 这是 Akamai 公司建立的一个官方的演示,用以说明 HTTP/2 相比于之前的 HTTP/1.1 在性能上的大幅度提升。 同时请求 379 张图片,从Load time 的对比可以看出 HTTP/2 在速度上的优势。

再说SPDY,这是Google创立的一种技术,诞生之初http/2并未定稿,所以用于解决过渡期问题。
HTTP/1.1在1999年由RFC 2616定为标准,从那以后,整个互联网就一直基于它在运行,其间有人提出了总共10个更新版本或替代协议,但是有些版本被认为还有改进的空间,尤其是性能方面。Google也是尝试改进HTTP/1.1的公司之一,他们在2009年发布了SPDY协议。通常情况下,这种尝试获得成功的机会微乎其微,因为互联网有庞大的历史包袱,但Google有一件武器能使SPDY流行起来:Chrome。他们搭建了自己的网站,修改了Chrome来支持SPDY,用户被其更好的性能所吸引,把压力留给了其他网站和浏览器开发商。
根据W3Techs的统一,目前,在全球超过12亿的网站中,有3.4%使用了SPDY协议。这个比例看起来不高,但这份名单中包括了一些最大的网站,有Google、Facebook、Yahoo!、Twitter、YouTube、Wordpress等,这使得互联网每天通过SPDY协议来承载的页面流量在总流量数中占了相当大的份额。
负责HTTP/2.0标准化工作的IETF HTTPBIS工作小组在2012年的一次讨论中,决定把SPDY作为HTTP/2.0的原型,但一开始他们没有想完全采用它。微软也提出了他们自己的提案,称为HTTP Speed+Mobility。三年后,看起来SPDY已经在竞争中胜出,它已经被HTTPBIS工作小组采纳为HTTP/2.0,并且进入标准化流程的最后阶段。
由此,Google宣布SPDY于2016年头退休,转而采用HTTP/2.0。对于Google旗下的网站和Chrome来说,只是换了个协议名字,协议本身没什么变化。最新的Chrome 40里面有个SPDY/4开关,有兴趣测试HTTP/2.0的人可以打开它。Google也打算不再让Chrome支持NPN协议,转而支持ALPN协议,并建议开发者使用最新的TLS扩展。
下图是逐浪软件www.z01.com官网在http/1.1和http/2.0协议下的加载速度实测图,可以看到差别在10倍以上,值得部署。

关于部署HTTP/2,首先拥有高品质的服务器(win2016+ssl是必要前提条件),同时需要有一个卓越的CMS支持,在这方面,Zoomla!逐浪CMS是国内产网站门户系统中的佼佼者,值得推荐。
PS:继2016年,Zoomla!逐浪CMS全面启用SSL,成为国内首家支持SSL金融级网站内容管理系统后。
2017年7月15日,逐浪CMS官方宣布:全面为所有用户提供HTTP/2高速门户接入和技术规范服务,并融入到全新的Zoomla!逐浪CMS产品中,与其中的微信建站、APP生成、站群、办公系统结合一体,打造中国优秀的网站管理系统。
HTTP协议知多少-关于http1.x、http2、SPDY的相关知识的更多相关文章
- 微信小程序必知相关知识
		
微信小程序必知相关知识 1 请谈谈微信小程序主要目录和文件的作用? project.config.json 项目配置文件,用得最多的就是配置是否开启https校验: App.js 设置一些全局的基础数 ...
 - HTTP协议详解及http1.0与http1.1http2.0的区别
		
HTTP协议介绍 http(超文本传输协议)是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.特点: (1)支持客户/服务器模式. HTTP是一个客户端和服务器端请 ...
 - 浅谈Http1.0/Http1.1/Http2.0/Https
		
HTTP 1.0 → HTTP 1.1 长连接 HTTP 1.1默认支持长连接,减少了TCP连接次数,节约开销. HTTP 1.0所保持的TCP每次只能处理一个请求,最典型的就是pipline管线化模 ...
 - HTTP1.0,HTTP1.1,HTTP2.0的主要特征对比
		
HTTP1.0 是一种无状态.无连接的应用层协议. HTTP1.0规定浏览器和服务器保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器处理完成后立即断开TCP连接(无连接),服务 ...
 - FTP协议的粗浅学习--利用wireshark抓包分析相关tcp连接
		
一.为什么写这个 昨天遇到个ftp相关的问题,关于ftp匿名访问的.花费了大量的脑细胞后,终于搞定了服务端的配置,现在客户端可以像下图一样,直接在浏览器输入url,即可直接访问. 期间不会弹出输入用户 ...
 - Http缓存知识;HTTPS, HTTP2相关知识;百度统计和即时线上客服。
		
安装 : 百度统计 来统计用户流量, Intercom 来做即时线上客服. 这两个是 JavaScript 插件放在 HTML 上的. HTTP缓存: https://developers.googl ...
 - Windows网络编程笔记4 -- Winsock 协议相关知识
		
Win32平台上的Winsock编程,Winsock是一个与协议无关的接口.以下协议是我们需要了解的: 网络协议的特征包括: 1. 面向消息 2. 面向连接和无线接 3. 可靠性和次序性 4. ...
 - USB协议[转]_基本上涵盖了所有最基础的USB协议相关知识。
		
背景: 需要使用到USB协议,我一直尝试着去强记这个流程,现在看来,其实不用.看多了,把这个过程具象出来,就牢牢记住了. 正文: 正文转自:http://fangjian0518.blog.163.c ...
 - 读书笔记——网络编程与开发技术(3)基于TCP/IP协议的网络编程相关知识
		
TCP/IP协议:数据链路层,网络层,传输层,应用层. IP地址分为5类:A类.B类.C类.D类.E类. (A类.B类.C类是基本类,D类多用于多播传送,E类为保留类.) "*"表 ...
 
随机推荐
- ETL作业调度软件TASKCTL4.1单机部署
			
单机部署,实际上就是将EM节点和一个Server节点安装到同一个地方.EM节点是TASKCTL服务端的最顶层,主要负责客户端与服务端之间的通信.Server节点是TASKCTL的调度服务控制层,也有A ...
 - Android Handler 机制 - Looper,Message,MessageQueue
			
Android Studio 2.3 API 25 从源码角度分析Handler机制.有利于使用Handler和分析Handler的相关问题. Handler 简介 一个Handler允许发送和处理M ...
 - for’ loop initial declarations are only allowed in C99 mode
			
今天做南邮编程在线的编程题,编程首先计算Fibonacci数列1,1,2,3,5,8,13,21,......的前n项(n不超过40)存入一维整型数组f中,再按%12d的格式输出每项的值,每6项换一行 ...
 - NOIP 2014 提高组 题解
			
NOIP 2014 提高组 题解 No 1. 生活大爆炸版石头剪刀布 http://www.luogu.org/problem/show?pid=1328 这是道大水题,我都在想怎么会有人错了,没算法 ...
 - 以太网帧、TCP与UDP段以及IP数据报格式总结
			
传输层及其以下的机制由内核提供,是操作系统的一部分,应⽤层由⽤户进程提供应⽤层数据通过协议栈发到⽹络上时,每层协议都要加上⼀个数据⾸部(header),称为封装.不同的协议层对数据包有不同的称谓,在传 ...
 - noip普及组2007 Hanoi双塔问题
			
Hanoi双塔问题 描述 给定A,B,C三根足够长的细柱,在A柱上放有2n个中间有孔的圆盘,共有n个不同的尺寸,每个尺寸都有两个相同的圆盘,注意这两个圆盘是不加区分的.现要将这些圆盘移到C柱上,在移动 ...
 - css div旋转之后自适应
			
css: .rotate90deg { transform: rotate(90deg); -ms-transform: rotate(90deg); /* IE 9 */ -moz-transfor ...
 - java array to list
			
背景 想把数组转为list,使用list的判断元素是否存在的方法,结果发现一个坑,int类型的数组失败了 步骤 public static void main(String[] args) { int ...
 - DesignPatternPrinciple(设计模式原则)二
			
设计模式六大原则(5):迪米特法则 定义:一个对象应该对其他对象保持最少的了解. 问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大. 解决方案:尽量降低类与类之 ...
 - BotVS趋势交易策略-RSI
			
BotVS趋势交易策略-RSI, 基于Python实现. RSI简单买卖测试, 默认 70-100卖出,0-30买入 参数 代码 import math def adjustFloat(v): ret ...