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

虽然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可能会造成网络传输的瓶颈

  • 2.1 每一条连接只能发送一条请求
  • 2.2 从客户端开始请求,客户端只接受响应的指令
  • 2.3 冗长的首部,每次都发送相同的首部
  • 2.4 请求和响应的首部未经压缩就进行发送
  • 2.5 数据内容可能未经压缩就进行发送
  • 2.6 线头阻塞(Head of line blocking):服务器是要按照顺序处理请求的,如果前一个请求非常耗时,那么后续请求都会受到影响。这样会造成网络延迟,有一种方式是新建TCP连接,但是新建TCP开销是很大的,所以新建TCP连接并不能解决问题。

3.SPDY

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



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

  • 3.1 多路复用:一个TCP可以处理多个HTTP请求,与HTTP/1.1的持久连接区别在于,持久连接排队串行化执行,一旦一个请求出现耗时会造成堵塞,而多路复用可以进行并行请求,一部分请求的堵塞不影响其它请求的执行。
  • 3.2 请求优先级设定:可以设定不用请求的优先级,这样可以按照指定的顺序执行请求。
  • 3.3 压缩HTTP首部:因为HTTP的首部在请求和响应过程都会带上,而且还特别臃肿,对其进行压缩在进行传输会大大节约资源。
  • 3.4 服务器主动推送:支持服务器主动向客户端推送数据。

4.WebSocket协议

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

  • 4.1 主动推送
    支持服务器向客户端推送消息,但由于是借助于HTTP协议,一开始的请求发起方也是客户端,但建立连接之后就自由自在了。
  • 4.2 减少通信
    一方面是只需要建立一次连接,另一方面是WebSocket连接过程所携带的首部本来就很少。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容