如何理解 TCP/IP,SPDY,WebSocket 三者之间的关系

发布网友

我来回答

3个回答

懂视网

云计算时代,浏览器和移动APP成为云端资源的主要入口。 HTTP 1.1已经成为这个生态环境的瓶颈。 SPDY协议是Google开发的一种基于TCP的应用层协议,旨在替换当前的HTTP 1.1。 据说SPDY协议的性能比HTTP 1.1快1倍。 SPDY保留了HTTP 1.1的语义,但是在传输方式上

云计算时代,浏览器和移动APP成为云端资源的主要入口。

HTTP 1.1已经成为这个生态环境的瓶颈。

SPDY协议是Google开发的一种基于TCP的应用层协议,旨在替换当前的HTTP 1.1。

据说SPDY协议的性能比HTTP 1.1快1倍。

SPDY保留了HTTP 1.1的语义,但是在传输方式上与HTTP 1.1截然不同。就是说,现有的Web应用基本无需任何修改就可以从HTTP 1.1迁移到SPDY协议。

SPDY协议和HTTP 1.1一样都是基于TCP,但是它与HTTP 1.1的区别在于,HTTP 1.1与TCP是紧耦合的,HTTP 1.1的Message是直接通过TCP的packet发送的;而SPDY协议则在TCP之上定义了一个framing layer,也可以称之为HTTP Layer。

framing layer的连接叫做stream,区别于TCP的connection。每个connection对应多个stream。每个stream对应的是一个请求/响应。多个stream可以并行的进行发送/接受数据。

HTTP 2.0据说将在今年正式Release,SPDY协议可以说是HTTP 2.0标准的一个参考。


想知道SPDY协议具体解决了HTTP 1.1的哪些问题?请参考 http://www.slideshare.net/ihower/a-brief-introduction-to-spdy-http20

另外,如果你想了解SPDY协议的实现细节,请参考 http://www.chromium.org/spdy/spdy-protocol/spdy-protocol-draft3-1

热心网友

按照OSI网络分层模型,IP是网络层协议,TCP是传输层协议,而HTTP是应用层的协议。在这三者之间,SPDY和WebSocket都是与HTTP相关的协议,而TCP是HTTP底层的协议。
一、HTTP的不足
HTTP协议经过多年的使用,发现了一些不足,主要是性能方面的,包括:
HTTP的连接问题,HTTP客户端和服务器之间的交互是采用请求/应答模式,在客户端请求时,会建立一个HTTP连接,然后发送请求消息,服务端给出应答消息,然后连接就关闭了。(后来的HTTP1.1支持持久连接)
因为TCP连接的建立过程是有开销的,如果使用了SSL/TLS开销就更大。

在浏览器里,一个网页包含许多资源,包括HTML,CSS,JavaScript,图片等等,这样在加载一个网页时要同时打开连接到同一服务器的多个连接。

HTTP消息头问题,现在的客户端会发送大量的HTTP消息头,由于一个网页可能需要50-100个请求,就会有相当大的消息头的数据量。

HTTP通信方式问题,HTTP的请求/应答方式的会话都是客户端发起的,缺乏服务器通知客户端的机制,在需要通知的场景,如聊天室,游戏,客户端应用需要不断地轮询服务器。

而SPDY和WebSocket是从不同的角度来解决这些不足中的一部分。除了这两个技术,还有其他技术也在针对这些不足提出改进。
二、SPDY
SPDY的主要目的是减少50%以上的页面加载时间,但是呢不增加部署的复杂性,不影响客户端和服务端的Web应用,只需要浏览器和Web服务器支持SPDY。主要有以下几点:
多路复用,一个TCP连接上同时跑多个HTTP请求。请求可设定优先级。
去除不需要的HTTP头,压缩HTTP头,以减少需要的网络带宽。
使用了SSL作为传输协议提供数据安全。

对传输的数据使用gzip进行压缩
提供服务方发起通信,并向客户端推送数据的机制。
实质上,SPDY就是想不影响HTTP语义的情况下,替换HTTP底层传输的协议来加快页面加载时间。
SPDY的解决办法就是设计了一个会话层协议--帧协议,解决多路复用,优先级等问题,然后在其上实现了HTTP的语义。
三、WebSocket
WebSocket则提供使用一个TCP连接进行双向通讯的机制,包括网络协议和API,以取代网页和服务器采用HTTP轮询进行双向通讯的机制。
本质上来说,WebSocket是不限于HTTP协议的,但是由于现存大量的HTTP基础设施,代理,过滤,身份认证等等,WebSocket借用HTTP和HTTPS的端口。
由于使用HTTP的端口,因此TCP连接建立后的握手消息是基于HTTP的,由服务器判断这是一个HTTP协议,还是WebSocket协议。 WebSocket连接除了建立和关闭时的握手,数据传输和HTTP没丁点关系了。
WebSocket也有自己一套帧协议。
四、SPDY和WebSocket的关系
SPDY和WebSocket的关系比较复杂。
补充关系,二者侧重点不同。SPDY更侧重于给Web页面的加载提速,而WebSocket更强调为Web应用提供一种双向的通讯机制以及API。
竞争关系,二者解决的问题有交集,比如在服务器推送上SPDY和WebSocket都提供了方案。
承载关系,试想,如果SPDY的标准化早于WebSocket,WebSocket完全可以侧重于API,利用SPDY的帧机制和多路复用机制实现该API。 Google提出草案,说WebSocket可以跑在SPDY之上。WebSocket的连接建立在SPDY的流之上,将WebSocket的帧映射到SPDY的帧上。
融合关系,如微软在HTTP Speed+Mobility中所做的。
五、题外话
1. HTTP Speed+Mobility
还有一个有趣的技术叫做HTTP Speed+Mobility,和SPDY一样都是HTTP 2.0标准的竞争者,HTTP Speed+Mobility来自微软。HTTP SM借鉴了SPDY和WebSocket的协议,将二者揉为一体,又有所取舍。
HTTP SM的设计原则包括:
保留HTTP的语义,这一点和SPDY一致,但也正应如此,抛弃了SPDY里的ServerPush。
遵守分层的网络架构,TCP能做的,HTTP SM不做,因此去除了SPDY的流控。
使用现有标准,因此使用HTTP/1.1 Upgrade header机制,借用了WebSocket的握手机制和帧格式(RFC55)。
客户端掌握内容的控制,因此不强制使用压缩和SSL/TLS。
考虑到网络的费用和电力,这点考虑到了移动设备以及物联网,提供了Credit Control机制。
HTTP SM分以下几层:
会话层和帧协议,这部分取自WebSocket协议。包括握手机制,以及帧格式。
流层(包括多路复用),这部分主要借鉴SPDY,包括多路复用,流优先级,但增加了Credit Control。这部分作为 WebSocket协议的扩展。
HTTP层,在流层上实现HTTP语义,这部分也借鉴自SPDY。
2. Network-Friendly HTTP
NF是HTTP 2.0候选方案之一,主要提出以下改进:
对HTTP头的名称进行二进制编码
对通用HTTP头进行分组
请求/应答的多路复用
分层模型
NF同样定义了帧和流,
3. WAKA
WAKA也是HTTP 2.0候选方案之一,是HTTP协议原作者Roy Fielding提出的一个提案。
WAKA支持多路复用,支持优先级。WAKA提出了两个新的HTTP方法,RENDER和MONITOR。

热心网友

按照OSI网络分层模型,IP是网络层协议,TCP是传输层协议,而HTTP是应用层的协议。在这三者之间,SPDY和WebSocket都是与HTTP相关的协议,而TCP是HTTP底层的协议。

一、HTTP的不足

HTTP协议经过多年的运用,发现了一些不足,次要是功能方面的,包括:

HTTP的连接成绩,HTTP客户端和服务器之间的交互是采用请求/应对模式,在客户端请求时,会建立一个HTTP连接,然后发送请求音讯,服务端给出应对音讯,然后连接就关闭了。(后来的HTTP1.1支持持久连接)

由于TCP连接的建立过程是有开销的,如果运用了SSL/TLS开销就更大。

二、SPDY

SPDY的次要目的是减少50%以上的页面加载工夫,但是呢不添加部署的复杂性,不影响客户端和服务端的Web运用,只需求浏览器和Web服务器支持SPDY。次要有以下几点:

多路复用,一个TCP连接上同时跑多个HTTP请求。请求可设定优先级。

去除不需求的HTTP头,紧缩HTTP头,以减少需求的网络带宽。

本质上,SPDY就是想不影响HTTP语义的情况下,交换HTTP底层传输的协议来加快页面加载工夫。

SPDY的处理办法就是design了一个会话层协议--帧协议,处理多路复用,优先级等成绩,然后在其上完成了HTTP的语义。

三、WebSocket

WebSocket则提供运用一个TCP连接进行双向通讯的机制,包括网络协议和API,以取代网页和服务器采用HTTP轮询进行双向通讯的机制。

本质下去说,WebSocket是不限于HTTP协议的,但是由于现存大量的HTTP基础设备,代理,过滤,身份认证等等,WebSocket借用HTTP和HTTPS的端口。

由于运用HTTP的端口,因此TCP连接建立后的握手音讯是基于HTTP的,由服务器判断这是一个HTTP协议,还是WebSocket协议。 WebSocket连接除了建立和关闭时的握手,数据传输和HTTP没丁点关系了。

WebSocket也有本人一套帧协议。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com