Android开发探索我爱编程

Android网络编程(三):HTTP的缺陷与改进

2017-06-28  本文已影响72人  C6C

虽然HTTP已经得到广泛的应用,但随着计算机的快速发展,对网络的需求也越来越高,HTTP协议已经逐渐成为一种瓶颈,目前出现了基于HTTP的一些改进协议,包括Google的SPDY,以及WebSocket通信,以及已经出现的HTTP/2.0。

1.HTTP/1.1连接特性

在HTTP的初始版本中,每进行一次HTTP请求就要进行一个TCP的建立到断开的周期,这是很耗费资源的,建立一个TCP连接要经过三次握手,断开需要四次握手,为了一个HTTP请求就进行这样的操作,无疑是很浪费的。如果只是很少的HTTP连接还可以接受,但是现今的网页中,里面包含了各种资源比如图片的下载链接,这样的流程会造成很严重的延迟与资源浪费。


TCP完整一个周期

所以在HTTP/1.1中使用到了一项技术,持久连接。

1.1 持久连接(HTTP Persistent Connections)

也称为HTTP keep-alive,特点是只要任意一端没有提出断开,就会保持TCP的连接状态。目的是建立一次TCP连接后进行多次的HTTP请求和响应。


1.2HTTP/1.1管线化(HTTP Pipelining)
一般来讲,HTTP请求在收到响应之后才会再次发起新的请求,而HTTP Pipelining其实是把多个HTTP请求放到一个TCP连接中一一发送,而在发送过程中不需要等待服务器对前一个请求的响应,但是客户端还是要按照发送请求的顺序来接收响应。大部分的浏览器都会默认关闭这个功能,因为其可能会造成线头堵塞(Head of line blocking)。

2.HTTP可能会造成网络传输的瓶颈

3.SPDY

SPDY是由Google牵头开发的协议,SPDY已经充分证实了它是一个非常好用的方案,HTTP/2.0便是基于SPDY/3草案进行一些修改之后发布的。
SDPY没有完全改写HTTP协议,而是在TCP/IP 的应用层与运输层之间通过新加会话层的形式运作,考虑到安全性问题, SPDY 规定通信中使用 SSL。



- SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议。
SPDY的优化措施包括以下几个:

4.WebSocket协议

WebSocket是浏览器与服务器之间全双工通信标准,即只需要建立一次WebSocket连接,之后所有的通信都在这个连接上进行,不需要像HTTP一样不断的建立连接、断开连接,因为HTTP是无状态连接,新建立连接还得被一个大包袱来回赶。
WebSocket其实就是借助HTTP协议的Upgrade首部字段告诉服务器接下来要使用WebSocket协议,后续的操作其实就交给WebSocket协议自己了。
WebSocket的主要特点如下:

上一篇 下一篇

猜你喜欢

热点阅读