[发明专利]一种SPDY协议代理方法及代理系统有效
申请号: | 201410554733.X | 申请日: | 2014-10-17 |
公开(公告)号: | CN104253821B | 公开(公告)日: | 2018-04-17 |
发明(设计)人: | 周建斌 | 申请(专利权)人: | 北京太一星晨信息技术有限公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06 |
代理公司: | 北京安信方达知识产权代理有限公司11262 | 代理人: | 李红爽,栗若木 |
地址: | 100193 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 spdy 协议 代理 方法 系统 | ||
1.一种SPDY代理方法,包括:
预先建立SPDY到HTTP的服务器的连接池,所述连接池用于存储SPDY对应的HTTP连接;
从客户端接收SPDY请求,如果该SPDY请求为SYN_STREAM类型的控制帧,则解析该SYN_STREAM类型的控制帧,生成HTTP请求头,将从所述SYN_STREAM类型的控制帧中解析出的流ID和所生成的HTTP请求头相对应,检查SPDY到HTTP的服务器的连接池是否有空闲的TCP连接,如果没有且连接池中的连接数未超过预设阈值,则新建一条TCP连接加入所述连接池并标记为空闲后取出;如果有则取出一条空闲的TCP连接;如果该SPDY请求为数据帧,则解析该数据帧,生成HTTP请求体;将生成的HTTP请求头和请求体发给HTTP服务器;
当从所述HTTP服务器收到与SPDY请求相应的HTTP回应时,解析HTTP回应头,生成SYN_REPLY类型的控制帧;解析HTTP回应体,生成SPDY数据帧;将所生成的SYN_REPLY类型的控制帧和SPDY数据帧发回给客户端。
2.如权利要求1所述的方法,其特征在于,所述从客户端接收SPDY请求的步骤前还包括:
与所述客户端建立安全传输层协议TLS连接时,在协议协商NPN字符串中加入SPDY版本号;
当所述客户端的回应中携带SPDY版本号时,进行所述从客户端接收SPDY请求的步骤。
3.如权利要求1所述的方法,其特征在于,所述解析SYN_STREAM类型的控制帧,生成HTTP请求头的步骤后还包括:
解析SYN_STREAM类型的控制帧的3个优先级标记位,得到3个二进制数值组成的序列,将所生成的HTTP请求头和所述控制帧对应放入所述序列对应的优先级队列中;
所述将生成的HTTP请求头发给HTTP服务器的步骤中,按照从高优先级到低优先级的顺序从优先级队列中取出HTTP请求头和对应的控制帧发送给所述HTTP服务器。
4.如权利要求1到3中任一项所述的方法,其特征在于,所述解析SYN_STREAM类型的控制帧,生成HTTP请求头的步骤包括:
对于SYN_STREAM类型的控制帧,用zlib解压该控制帧的SPDY头域块,提取头域名字为“:method”、“:path”、“:version”的头域的值,拼接组成HTTP请求头的第一行;把提取的其它SPDY头域块中的头域,写成[头域名]:[头域值]的格式,作为HTTP头域,每行写一个头域,添加Connection:keep-alive头域。
5.如权利要求4所述的方法,其特征在于,
将生成的HTTP请求头发给HTTP服务器的步骤包括:
将所生成的HTTP请求头和对应的控制帧通过所取出的TCP连接发给HTTP服务器,将该HTTP请求头对应的流ID与该条TCP连接的编号对应保存;将该条TCP连接标记为非空闲;
将生成的HTTP请求体发给HTTP服务器的步骤包括:
根据从SPDY数据帧中解析出的流ID找到对应的TCP连接的编号;用该编号代表的TCP连接发送所生成的HTTP请求体给HTTP服务器。
6.如权利要求5所述的方法,其特征在于,所述解析HTTP回应头,生成SYN_REPLY类型的控制帧的步骤包括:
根据当前的TCP连接的编号得到对应的流ID;
将HTTP回应头中的第一行状态码作为“:status”头域;把HTTP回应头中每行HTTP头域的“:”去掉,“:”前后分别为头域的名字和头域的值;头域的名字前加入用4个字节表示的头域名字长度,在头域的值前加入用4个字节表示的头域的值长度;在最终的头域块前加上4个字节表示的头域块的数量,组成SYN_REPLY类型的控制帧SPDY头域块;
用zlib把生成的SPDY头域块进行压缩,然后拼接上8个字节的SPDY控制帧头和4个字节的所得到的流ID;所述SPDY控制帧头中,前4个字节为0x80、0x03、0x00、0x02;压缩后的SPDY头域块长度加4作为帧长度写入第6到8个字节,如果所述HTTP回应头后不包含回应体,那么第5个字节写入0x01表示回应结束。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京太一星晨信息技术有限公司,未经北京太一星晨信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410554733.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:自动闭塞继电器电路实验装置
- 下一篇:一种频域辅助教学仪电路