[发明专利]可控分布式代理平台有效
申请号: | 201310157321.8 | 申请日: | 2013-04-28 |
公开(公告)号: | CN103237035A | 公开(公告)日: | 2013-08-07 |
发明(设计)人: | 何慧;张伟哲;张宏莉;李乔;张永胜;秦泓洋;王健;朱振广;王冬;范国涛 | 申请(专利权)人: | 哈尔滨工业大学 |
主分类号: | H04L29/06 | 分类号: | H04L29/06;H04L29/08 |
代理公司: | 哈尔滨市松花江专利商标事务所 23109 | 代理人: | 牟永林 |
地址: | 150001 黑龙*** | 国省代码: | 黑龙江;23 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 可控 分布式 代理 平台 | ||
1.可控分布式代理平台,其特征在于,它包括进程管理模块、配置文件管理模块、日志输出模块、事件管理模块、内存管理模块、I/O管理模块、代理模块和监控模块;
进程管理模块,用于创建、运行、维护和销毁配置文件管理模块、日志输出模块、事件管理模块、内存管理模块的进程以及线程;
配置文件管理模块,用于为所述代理平台的其他各模块提供配置文件的解析与加载;
日志输出模块,用于为所述代理平台的其他各个模块提供日志输出功能;
事件管理模块,用于处理来自外界的连接请求、来自I/O管理模块的I/O事件请求、代理模块的SOCKS4或SOCKS5代理请求和监控模块的监测请求;
内存管理模块,用于为进程管理模块、事件处理模块和I/O管理模块进行内存管理;
I/O管理模块,用于接收和发送网络数据;
代理模块,用于提供代理服务和提供分布式代理机群间协作功能,支持SOCKS4版本和SOCKS5版本的SOCKS协议;
监控模块,用于接收控制中心发送的命令,并根据所述命令执行相应的操作。
2.根据权利要求1所述的可控分布式代理平台,其特征在于,所述代理模块包括SOCKS4模块、SOCKS5模块、cluster模块和upserving模块;
SOCKS4模块,用于提供SOCKS代理服务;
SOCKS5模块,用于提供SOCKS代理服务;
cluster模块,用于处理集群之间配置信息同步,协调不同代理服务器之间的运行状态;
upserving模块,用于完成集群内部连接服务请求转移的功能。
3.根据权利要求2所述的可控分布式代理平台,其特征在于,SOCKS4模块包括如下函数模块:
ss5_socks_init_connection()、
ss5_socks_init_request()、
ss5_socks_handler()、
ss5_socks_parse_request_line()、
ss5_socks5_handler()、
ss5_socks4_handler()、
ss5_rule_check()、
ss5_4_parse_request()、
ss5_socks4_process_handler()、
ss5_4_process_request()、
ss5_4_connect_serving()、
ss5_4_bind_serving()、
ss5_4_nonblocking_connect_handler()、
ss5_socks_upserving()、
ss5_socks_prepare_connection()、
ss5_socks_prepare_data_queue()、
ss5_install_data_transfer_hanlders()和ss5_handle_read_event();
上述函数模块的调用流程如下:
函数ss5_socks_init_connection()实现初始化连接信息的功能,并在初始化之后调用函数ss5_socks_init_request(),
函数ss5_socks_init_request()实现判断是否超时,并填充相关结构,根据所述结构为发送客户请求的客户选择相应的代理服务器,并设置各种处理句柄的功能后,调用函数ss5_socks_handler(),
函数ss5_socks_handler()实现完整读取客户请求头部信息的功能,然后调用函数ss5_socks_parse_request_line(),
函数ss5_socks_parse_request_line()实现判断客户请求类型,设置句柄函数指针为相应的处理函数,并判断客户请求解析状态,如果是SOCKS4代理请求,则进入SOCKS4代理处理流程,调用函数ss5_socks4_handler();
函数ss5_socks4_handler()先调用函数ss5_4_parse_request()实现完整解析客户请求信息的功能,并根据解析的结果填充相关数据结构,再调用函数ss5_rule_check()实现判断IP地址或者域名是否在黑名单中,如果在,则关闭与发送客户请求的客户端的连接的功能;然后调用函数ss5_socks4_process_handler();
函数ss5_socks4_process_handler()实现调用函数ss5_4_process_request()处理客户请求,设置相应事件的处理函数的功能,
函数ss5_4_process_request()实现处理客户请求,根据SOCKS4协议处理相应的请求,获取客户所请求网站的真实地址列表,当客户请求为CONNECT请求时,调用函数ss5_4_connect_serving(),当客户请求为BIND请求时,调用函数ss5_4_bind_serving();
函数ss5_4_connect_serving()实现根据SOCKS4协议,向远端真实服务器发送请求,建立代理系统和远端真实服务器的TCP连接,然后根据TCP连接的建立情况,向发送客户请求的客户返回响应报文,指明是否成功建立转发连接;如果CONNECT连接被拒绝,则代理平台向发送客户请求的客户端发送响应报文后会关闭连接的功能,然后调用函数ss5_4_nonblocking_connect_handler();
函数ss5_4_bind_serving()实现根据SOCKS4协议,处理SOCKS4命令为BIND的情况,建立bind套接字,填充相关数据结构,设置相关句柄指针,向发送客户请求的客户端发送第一次BIND响应报文的功能,然后调用函数ss5_4_nonblocking_connect_handler();
函数ss5_4_nonblocking_connect_handler()实现当本地代理平台无法提供代理服务时,调用函数ss5_socks_upserving(),返回函数ss5_4_nonblocking_connect_handler(),当本地代理平台或其他SOCKS代理平台能提供代理服务时,填充相关数据结构,设置相关句柄,设置无阻塞连接,向发送客户请求的客户端发送第一次响应报文的功能,然后调用函数ss5_socks_prepare_connection();
函数ss5_socks_upserving()实现向其他SOCKS代理平台转发客户请求的功能;
函数ss5_socks_prepare_connection()实现填充相关数据结构,设置相关句柄的功能,然后调用函数ss5_socks_prepare_data_queue(),
函数ss5_socks_prepare_data_queue()实现申请发送缓冲区和接收缓冲区,填充相关数据结构,设置相关句柄的功能,然后调用函数ss5_install_data_transfer_hanlders();
函数ss5_install_data_transfer_hanlders()实现填充和读写相关的数据结构,设置相关句柄的功能,调用函数ss5_handle_read_event(),
函数ss5_handle_read_event()实现读取事件的功能。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于哈尔滨工业大学,未经哈尔滨工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310157321.8/1.html,转载请声明来源钻瓜专利网。