`
kavy
  • 浏览: 888462 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SPDY协议简介及如何编译含有SPDY的nginx

 
阅读更多

SPDY是Google开发的基于传输控制协议(TCP)的应用层协议 (发音同“speedy”),以最小化网络延迟,提升网络速度,优化用户的网络使用体验。SPDY并不是一种用于替代HTTP的协议,而是对HTTP协议的增强。新协议的功能包括数据流的多路复用、请求优先级,以及HTTP包头压缩。谷歌表示,引入SPDY协议后,在实验室测试中页面加载速度比原先快64%。

目前主流浏览器Google Chrome Mozilla Firefox Opera Internet Explorer都已经支持了SPDY,主流web服务器Apache、Nginx、Netty、Jetty、node.js等都已经开始初步的支持SPDY基本已经支持SPDY,SPDY当前并不是一个标准协议,但SPDY的开发组已经开始推动SPDY成为正式标准。

本文主要了解SPDY的基本概念,以及如何编译一个含有SPDY的nginx。

HTTP协议存性能上的一些问题

一个连接一个请求。浏览器和web server之间都是以短连接方式交互,一个连接只服务一次请求,对于一个需要加载多个资源的页面来说,将会带来很高的延迟。

只能由客户端发起请求。服务器不能主动的将一些必须的资源推送给客户端。

HTTP协议只能对body进行压缩处理,不能压缩header。在一个cookie较多的站点,将对带宽造成严重的浪费。

冗余的头部。一些头部在同一个通道中通过请求在重复的发送。像User-Agent Host Accept* 常常是固定不变的,所以不需要重复发送

可选的压缩。HTTP 使用可选的压缩编码。但是内容应该总是使用压缩格式。

SPDY的目标

1.SPDY为WEB定义和实现了一个应用层的协议来大大降低延迟。SPDY的高层次目标是:

2.减少50%的网页加载时间。我们的成果已经初步接近这个目标(见下面解释)。

3.最小化部署复杂性。SPDY使用TCP作为相关的传输层,所以现存的网络基础设施,不需要改变。

4.避免网站开发者需要对网站作出任何改变。支持SPDY唯一需要的改变在用户user agent和web server。

 

5.聚集有兴趣探索协议来解决延迟问题的志同道合的开发者。我们希望和开源社区 行业专家一起来开发这个新的协议。

 

一些具体的技术目标:

1.单个tcp连接支持并发的HTTP请求

2.压缩头部和去掉不必要的头部,来减少当前HTTP使用的带宽

3.定义一个容易实现,在服务器端高效率的协议。我们希望通过减少边缘情况 定义易解析的消息格式来减少HTTP的复杂性

4.让SSL协议在现存的网络基础设施下有更好的安全性和兼容性。虽然SSL确实引入了延迟,我们认为网络的长远发展依赖一个安全的网络连接。另外,使用SSL来确保整个通信不中断是必要的。

SPDY设计和特征

在SSL层上加了一个SPDY session层,来实现并发和stream机制。

通常的HTTP GET和POST格式仍然是一样的;然而SPDY为编码和传输设计了一个新的帧格式。

基本特征

复用流 SPDY允许在一个连接上无限制的并发流。因为请求在一个通道上,TCP效率更高:更少的网络连接,更少更密集的数据包被发出

请求优先级 虽然无数的并行数据流解决了序列化问题,但他们引入了另外的问题

HTTP头部压缩

高级特征

此外,SPDY提供了高级特征,服务器启动流。服务器启动流能用来分发内容到客户端,而不需要客户端请求它。这个选项可以由web开发人员通过如下两种方法配置:

Server push SPDY通过X-Associated-Content头试验了服务器推送数据给客户端的选项。这个头告诉客户端服务器将在客户端请求资源之前,推送资源给它。对于初始页面下载(例如用户初次访问这个网站),这样能大大提升用户体验

Server hint 相对于自动的推送资源到客户端,服务器使用X-Subresources头去建议客户端,来请求特殊的资源,这是在服务器事先知道客户的这些资源将被需要的情况下。但是,服务器仍然在发送内容前等待客户请求。通过慢速链接,这个选项能减少一个客户端发现它需要的资源数百毫秒的时间,并可能对非初始页面加载会更好。

SPDY实现

下面是已经实现的:

一个能同时提供HTTP SPDY服务的高速 全内存的服务程序。我们将在不久的将来开源这些代码

一个能使用HTTP或者SPDY的chrome浏览器。

一个测试和基准设施,来确保页面是不变的。

NGINX SPDY编译

http://nginx.org/patches/attic/spdy/README.txt

Nginx 支持 SPDY draft 2

Nginx 从1.3.15开始支持

需要OpenSSL 1.01+

目前已知的问题和限制:

不支持server push

不支持SPDY连接速率限制

如何编译含SPDY的nginx?

1.安装OpenSSL 1.0.1+

2.下载nginx 1.3.x 以上的版本

3.解压nginx

4.下载应用SPDY module patch

wget http://nginx.org/patches/spdy/patch.spdy.txt

patch -p1 < patch.spdy.txt

5.配置

./configure --with-http_ssl_module --with-http_spdy_module

6.编译

Make

配置

server {

listen 443 ssl spdy default_server;

ssl_certificate server.crt;

ssl_certificate_key server.key;

...

}

下一步会主要学习SPDY草案的内容,以及阅读代码。

 

原文链接:http://blog.csdn.net/liujiyong7/article/details/17953979

分享到:
评论

相关推荐

    为Nginx添加SPDY功能

    为了深入了解如何为Nginx添加SPDY功能,我们首先需要掌握Nginx的安装、配置以及SPDY协议的基础知识。SPDY是一种由Google主导的网络传输协议,旨在加快网页加载速度和提升网络传输效率。它是基于TCP的应用层协议,并...

    Nginx(Tengine)启用 SPDY 支持的配置方法

    **SPDY协议简介** SPDY(Speedy)是由Google提出的一种网络传输协议,旨在解决HTTP协议的性能瓶颈问题,特别是为了提升网页加载速度。HTTP协议的局限性在于它不支持多路复用,每次请求和响应都需要建立新的TCP连接...

    NGINX如何进行伪装-通过LNMP安装

    - 编译时可以指定一系列参数以增加Nginx的功能模块,如`http_stub_status_module`、`http_gzip_static_module`、`http_sub_module`、`http_ssl_module`和`http_spdy_module`等。 - 编译命令通常包含`./configure`、`...

    前端开源库-spdy-push

    SPDY(发音为 "speedy")是Google提出的一种网络传输协议,设计目标是优化网页加载速度,减少页面渲染时间。SPDY在HTTP/1.1的基础上进行了改进,引入了多路复用、优先级排序、头部压缩等特性,其中SPDY Push技术是其...

    CentOS 6.5 安装 Nginx 1.7.8 教程

    3. **编译安装**:通过源码编译的方式安装 Nginx,并根据需要启用特定模块。 4. **启动与管理**:启动 Nginx 服务以及如何进行重启和关闭操作。 5. **防火墙配置**:为 Nginx 开放 HTTP 端口(通常是 80 端口),...

    nginx官方文档中文版

    Nginx 官方文档中文版知识点总结 Nginx 是一个开源的 Web 服务器软件,可以作为 Web 服务器、反向代理服务器、缓存服务器、负载均衡器和媒体流服务器等。下面是 Nginx 官方文档中文版的知识点总结: 安装和配置 *...

    linux 下安装nginx步骤及命令

    Linux 下安装 Nginx 步骤及命令 Linux 操作系统中安装 Nginx 服务器的步骤和命令详解。该文档将指导用户从头开始安装 Nginx,包括安装 OpenSSL、GCC、PCRE 和 Zlib 库,并最终安装 Nginx 服务器。 安装 OpenSSL --...

    堆溢出攻击教程(heap overflow attack)

    - 在编译时分配固定大小的内存空间,如`char buffer[256];`。 - 缓冲区大小固定,不能改变。 **动态变量**: - 通过`malloc()`或`new()`等函数在运行时动态分配内存空间,如`char *buffer = malloc(256);`。 - 缓冲...

    Linux下nginx编译安装教程和编译参数详解

    本教程将详细讲解如何在Linux系统下编译安装Nginx,以及在编译过程中如何配置编译参数。 首先,进行必要的软件准备工作。为了使Nginx具备更强大的功能,需要安装以下几个依赖库: 1. **PCRE (Perl Compatible ...

    Linux 6下安装编译安装Nginx的步骤

    #### 四、编译及安装 Nginx 1. **下载源码包** 首先需要下载 Nginx 的源码包,例如 `nginx-1.8.0.tar.gz`。 2. **解压并进入源码目录** ```bash # cd /tmp/ # tar -xvf nginx-1.8.0.tar.gz # cd nginx-...

    Nginx v1.6.0 稳定版.zip

    Nginx 1.6.0 稳定版发布,该版本包含很多来自 1.5.x 的新特性,包括各种 SSL 的提升、SPDY 3.1 支持、根据请求条件对缓存重新验证、认证请求模块等等。 SEnginx主线版本1.6.0发布,主要变更如下: Changes with ...

    nginx-proxy:通过Docker实施SPDY代理NGINX和Ansible配方以部署Apache2网站

    Nginx,反向代理,SPDY等... 很多时候,您面临着另一个时代的Web服务器(Apache更不用说了)。 我建议您向您介绍 , 和NGINX:我们将在容器中设置Nginx反向代理,该代理将负责代理将在部署的Apache上运行的站点。 ...

    Nginx+Lua编程手册.pdf

    手册提到了该模块的一些关键特点和使用场景,例如,它支持在Nginx worker进程间共享数据、支持Lua/LuaJIT字节码、系统环境变量的支持、HTTP1.0的协议支持等。同时,手册还指出了在使用过程中可能会遇到的已知问题,...

    Nginx/Openresty中启用http2支持的方法教程

    当下很多著名的互联网公司,例如百度、淘宝、UPYUN 都在自己的网站或 APP 中采用了 SPDY 系列协议(当前最新版本是 SPDY/3.1),因为它对性能的提升是显而易见的。主流的浏览器(谷歌、火狐、Opera)也都早已经支持 ...

    阿里巴巴HTTP 2.0实践及无线通信协议的演进之路

    其中特别提到了SPDY协议中可协商的Huffman动态表,以及HTTP/2在实现过程中通过HPACK动态表大小的优化策略,以及如何在压缩率优先和内存优先的场景中进行适配。 整体而言,阿里巴巴通过这一演讲展示了HTTP/2协议在...

    nginx安装(1) ttlsa教程系列之nginx

    PCRE库是实现Nginx的rewrite规则所必需的,而OpenSSL则为Nginx提供SSL和SPDY协议的支持。 1. 安装PCRE库: 若要启用Nginx的rewrite模块,需要先安装PCRE库。在大多数Linux发行版中,可以通过包管理器轻松安装。...

    基于Nginx的衍生版服务器Tengine简介

    Tengine可以自动检测同一端口上的SPDY请求和HTTP请求,这增加了其对协议的兼容性。 Tengine具备更强大的负载均衡能力,例如一致性hash模块和会话保持模块。它还可以主动对后端服务器进行健康检查,根据服务器的状态...

Global site tag (gtag.js) - Google Analytics