[发明专利]一种SPDY协议代理方法及代理系统有效
申请号: | 201410554733.X | 申请日: | 2014-10-17 |
公开(公告)号: | CN104253821B | 公开(公告)日: | 2018-04-17 |
发明(设计)人: | 周建斌 | 申请(专利权)人: | 北京太一星晨信息技术有限公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06 |
代理公司: | 北京安信方达知识产权代理有限公司11262 | 代理人: | 李红爽,栗若木 |
地址: | 100193 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 spdy 协议 代理 方法 系统 | ||
技术领域
本发明涉及网络领域,尤其涉及一种SPDY协议代理方法及代理系统。
背景技术
SPDY是谷歌开发的一种新的网络协议,SPDY并不是一种被设计用于替代HTTP(超文本传送)的协议,而是对HTTP协议的增强。SPDY增加了一个帧层用于包装HTTP协议。这个帧层为HTTP的请求响应流进行了优化,重新组织了HTTP协议的结构,并增加了一些机制,实现流复用、请求优先级、HTTP头压缩;能够提升网络速度,最小化网络延迟,优化用户的网络使用体验。
随着支持SPDY协议的客户端越来越普及,HTTP服务器迫切需要支持SPDY协议来提高页面的加载速度、改善用户体验。
目前要给HTTP服务器添加SPDY协议的支持,需要在服务器上安装相应的插件或者模块,比如Apache服务器需要安装mod_spdy插件,来支持SPDY协议;Nginx则需要在编译时加入SPDY模块,并重新打包。
当前的技术方案有以下缺陷:
一、需要在服务器上直接进行升级和配置的更改,步骤繁琐,专业性要求高。在升级的过程中会丢失部分功能,影响业务的正常运行。
二、可用的SPDY插件和模块只在一部分HTTP服务器软件的高版本上进行升级,老版本的HTTP服务器软件和非主流的HTTP服务器软件将无法通过升级插件的方式获得SPDY的支持。
三、在HTTP服务器上安装了SPDY插件后,所有SPDY的解析、压缩等等操作会在服务器上进行,占用了服务器的计算资源,影响了服务器正常业务的处理速度。
发明内容
本发明要解决的技术问题是如何在不改变HTTP服务器任何配置的情况下,为HTTP服务器增加支持SPDY协议的功能,并且不会降低HTTP服务器对正常业务的处理能力。
为了解决上述问题,本发明提供了一种SPDY代理方法,包括:
从客户端接收SPDY请求,如果该SPDY请求为SYN_STREAM类型的控制帧,则解析该SYN_STREAM类型的控制帧,生成HTTP请求头;如果该SPDY请求为数据帧,则解析该数据帧,生成HTTP请求体;将生成的HTTP请求头和请求体发给HTTP服务器;
当从所述HTTP服务器收到与SPDY请求相应的HTTP回应时,解析HTTP回应头,生成SYN_REPLY类型的控制帧;解析HTTP回应体,生成SPDY数据帧;将所生成的SYN_REPLY类型的控制帧和SPDY数据帧发回给客户端。
可选地,所述从客户端接收SPDY请求的步骤前还包括:
与所述客户端建立安全传输层协议TLS连接时,在协议协商NPN字符串中加入SPDY版本号;
当所述客户端的回应中携带SPDY版本号时,进行所述从客户端接收SPDY请求的步骤。
可选地,所述解析SYN_STREAM类型的控制帧,生成HTTP请求头的步骤后还包括:
解析SYN_STREAM类型的控制帧的3个优先级标记位,得到3个二进制数值组成的序列,将所生成的HTTP请求头和所述控制帧对应放入所述序列对应的优先级队列中;
所述将生成的HTTP请求头发给HTTP服务器的步骤中,按照从高优先级到低优先级的顺序从优先级队列中取出HTTP请求头和对应的控制帧发送给所述HTTP服务器。
可选地,所述解析SYN_STREAM类型的控制帧,生成HTTP请求头的步骤包括:
对于SYN_STREAM类型的控制帧,用zlib解压该控制帧的SPDY头域块,提取头域名字为“:method”、“:path”、“:version”的头域的值,拼接组成HTTP请求头的第一行;把提取的其它SPDY头域块中的头域,写成[头域名]:[头域值]的格式,作为HTTP头域,每行写一个头域,添加Connection:keep-alive头域。
可选地,生成HTTP请求头的步骤后,将生成的HTTP请求头发给HTTP服务器的步骤前还包括:
将从所述SYN_STREAM类型的控制帧中解析出的流ID和所生成的HTTP请求头相对应;
检查SPDY到HTTP的服务器的连接池是否有空闲的TCP连接,如果没有且连接池中的连接数未超过预设阈值,则新建一条TCP连接加入所述连接池并标记为空闲后取出;如果有则取出一条空闲的TCP连接;
将生成的HTTP请求头发给HTTP服务器的步骤包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京太一星晨信息技术有限公司,未经北京太一星晨信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410554733.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:自动闭塞继电器电路实验装置
- 下一篇:一种频域辅助教学仪电路