【图解HTTP】——基于HTTP的功能追加协议

【1】HTTP的瓶颈(单工通信)

  1. 一条链接上面只可发送一条信息
  2. 请求只能从客户端开始,客户端不可以接收除响应以外的指令
  3. 请求/响应的首部未压缩就发送
  4. 首部信息多,传输速度下降
  5. 会发送相同的首部多次,浪费了资源
  6. 可任意选择压缩方式

HTTP协议的一个大的特点:通信的开始一定是客户端请求开始的
在这里插入图片描述

【2】Ajax通信(异步通信)

  • 不用请求全部内容
  • Ajax是一种有效利用JS和DOM(Document Object Model),以达到局部Web网页替换加载的异步通信
  • 只更新部分内容,响应传输的数据量大大减小
  • 没有解决HTTP的缺陷
    在这里插入图片描述

【3】Comet通信(等待信息更新)

  • Comet通信会将响应置于挂起状态,等待服务器的信息更新完,最后将更新后的信息返回

优点:内容上实现了实时更新
缺点:一次链接的时间过长

  • 没有解决HTTP的问题
    在这里插入图片描述

【4】SPDY(SpeeDY)

  • 修改协议解决HTTP瓶颈
    在这里插入图片描述
  • SPDY以会话层的形式加入
  • 控制数据的流动
  • SPDY依然是基于HTTP建立的通信
  • 新增功能:

(1)多路复用:在单一的TCP连接下,可以无限制的处理多个HTTP请求。所有的请求都在一条TCP连接上完成
(2)赋予请求优先级:解决带宽低而导致的响应变慢
(3)压缩HTTP首部:解决资源
(4)推送功能:服务器直接主动的向客户端推送数据,不用等待客户端的请求
(5)服务器的提示功能:Server提示Client请求所需的资源,告诉Client资源存在,避免确认请求

  • SPDY解决了HTTP瓶颈,但Web瓶颈也需要解决

SPDY只是将单个域名(IP地址)的通信多路复用了,所以当一个web网站上有多个域名资源的时候,效果不佳

【5】WebSocket(全双工通信)

  • 利用Ajax和Comet可以提升Web浏览器的速度,但HTTP协议的使用使得许多问题难以解决
  • WebSocket依然是建立在HTTP协议上的,连接的发起方是客户端,但是一旦建立了WebSocket连接,不论服务器还是客户端都可以发送报文——全双工
HTTP协议下的TCP连接 单工通信 一定是由客户端发送请求开始的,同一时间只能同一方发送信息
WebSocket 全双工通信 基于HTTP的,也是由客户端请求开始,但之后客户端和服务器都能随意发送数据
  • WebSocket新增功能:

(1)推送功能
(2)减少通信量:WebSocket建立之后,会一直保持连接状态

  • 为了实现WebSocket通信,在HTTP连接建立之后,需要完成一次 “握手”

握手请求:为了实现WebSocket通信,需要用到HTTP的Upgrade字段,告知服务器协议发生了变化
在这里插入图片描述
握手响应:
在这里插入图片描述

【6】总结

  • HTTP协议有许多瓶颈——SPDY以会话层形式加入解决
  • Ajax和Comet通信可以提升网络速度,但无法解决Web瓶颈——WebSocket协议
  • WebSocket协议:基于HTTP建立连接后更换协议成WebSocket协议通信
  • HTTP的TCP通信是单工通信
  • WebSocket协议是全双工通信
发布了243 篇原创文章 · 获赞 116 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_44478378/article/details/105504607