超文本传输协议(HyperText Transfer Protocol) 伴随着计算机网络和浏览器的诞生,HTTP1.0也随之而来,处于计算机网络中的应用层,HTTP是创建在TCP协议之上的。ios
HTTP的基本优化
影响一个HTTP网络请求的因素主要有两个:带宽和延迟。算法
- 带宽:单位时间能经过链路的数据量。一般以bps来表示,即每秒可传输之位数。
- 浏览器阻塞:浏览器对于同一个域名同时只能有 4 个链接,超过浏览器最大链接数限制,后续请求就会被阻塞。
- DNS 查询:将域名解析为 IP 的过程,能够利用DNS缓存结果来减小时间。
- 创建链接:HTTP 是基于 TCP 协议的,浏览器最快也要在第三次握手时才能捎带 HTTP 请求报文,达到真正的创建链接,可是这些链接没法复用会致使每次请求都经历三次握手和慢启动。
HTTP 存在的问题
- HTTP在传输数据时,每次都须要从新创建链接,增长了大量的延迟时间,特别是在移动端更为突出。
- 传输数据时全部内容都是明文,客户端和服务器端都没法验证对方的身份,必定程度上没法保证数据的安全性。
- header里携带的内容过大,增长了传输的成本,而且每次请求header基本不怎么变化,尤为在移动端增长用户流量。
- 虽然HTTP支持keep-alive 来弥补屡次建立链接产生的延迟,可是keep-alive使用多了一样会给服务端带来大量的性能压力,而且对于单个文件被不断请求的服务(例如图片存放网站),keep-alive可能会极大的影响性能,由于它在文件被请求以后还保持了没必要要的链接很长时间。
HTTPS
网景在1994年建立了HTTPS,并应用在网景导航者浏览器中。HTTPS是与SSL一块儿使用的;在SSL逐渐演变到TLS时(其实两个是一个东西,只是名字不一样而已)
简单来讲,HTTPS就是安全版的HTTP,chrome和firefox都大力支持网站使用HTTPS,苹果也在ios 10系统中强制app使用HTTPS来传输数据。chrome
* SSL(Secure Sockets Layers): 安全套接层
* TLS(Transport Layer Security): 传输层安全
为网络通讯提供安全及数据完整性的一种安全协议。二者在传输层对网络链接进行加密浏览器
HTTPS 和 HTTP 的区别
- HTTPS协议须要到CA申请证书,通常免费证书不多,须要交费。
- HTTP协议运行在TCP之上,全部传输的内容都是明文,HTTPS运行在SSL/TLS之上,SSL/TLS运行在TCP之上,全部传输的内容都通过加密的。
- HTTP和HTTPS使用的是彻底不一样的链接方式,用的端口也不同,前者是80,后者是443。
- HTTPS能够有效的防止运营商劫持,解决了防劫持的一个大问题。

SPDY
Google开发的基于TCP的应用层协议,用以最小化网络延迟,提高网络速度,优化用户的网络使用体验。SPDY并非一种用于替代HTTP的协议,而是对HTTP协议的加强。新协议的功能包括数据流的多路复用、请求优先级以及HTTP报头压缩。谷歌表示,引入SPDY协议后,在实验室测试中页面加载速度比原先快64%。缓存
SPDY能够说是综合了HTTPS和HTTP二者有点于一体的传输协议,解决的问题以下:安全
- 经过多路复用下降延迟,单个TCP链接支持并发的HTTP请求。
- 请求优先级。SPDY容许给每一个request设置优先级,这样重要的请求就会优先获得响应,防止在网络通道被非关键资源堵塞时,高优先级的请求被挂起。
- 压缩 header 报头和去掉没必要要的头部来减小当前HTTP使用的带宽。
- 基于HTTPS的加密协议传输,强制使用SSL,让SSL协议在现存的网络设施下有更好的安全性和兼容性。
- 服务端推送。容许服务器在须要时发起对客户端的链接并推送数据。
SPDY构成图服务器
HTTP1.1 特性
- 默认持久链接节省通讯量,只要客户端服务端任意一端没有明确提出断开TCP链接,就一直保持链接,能够发送屡次HTTP请求
- 管线化,客户端能够同时发出多个HTTP请求,而不用一个个等待响应
- 断点续传原理
HTTP2.0
HTTP2.0能够说是SPDY的升级版(其实本来也是基于SPDY设计的),可是,HTTP2.0 跟 SPDY 仍有不一样的地方,主要是如下两点:网络
- HTTP2.0 支持明文 HTTP 传输,而 SPDY 强制使用 HTTPS
- HTTP2.0 消息头的压缩算法采用 HPACK,而非 SPDY 采用的 DEFLATE

参考:HTTP,HTTP2.0,SPDY,HTTPS你应该知道的一些事并发
