[发明专利]传递客户端IPv4地址及端口至后端服务器的方法及装置有效
申请号: | 201210054358.3 | 申请日: | 2012-03-02 |
公开(公告)号: | CN103297552A | 公开(公告)日: | 2013-09-11 |
发明(设计)人: | 刘晓光;姜丽娜;刘涛;吴教仁;刘宁;张诚 | 申请(专利权)人: | 百度在线网络技术(北京)有限公司 |
主分类号: | H04L29/12 | 分类号: | H04L29/12;H04L29/08 |
代理公司: | 北京清亦华知识产权代理事务所(普通合伙) 11201 | 代理人: | 宋合成 |
地址: | 100085 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 传递 客户端 ipv4 地址 端口 后端 服务器 方法 装置 | ||
1.一种从IPv4负载均衡设备传递客户端的原始IPv4地址及端口至后端服务器的方法,其特征在于,包括以下步骤:
(A)所述客户端向所述IPv4负载均衡设备发送数据包;
(B)所述IPv4负载均衡设备对所述客户端的原始IPv4地址及端口进行地址转换,将所述客户端的原始IPv4地址及端口存储在TCP选项字段中并发送带有所述TCP选项字段的数据包;
(C)所述服务器的Linux内核层截获syn_recv_sock钩子,挂载tcp_v4_syn_recv_sock_ttm钩子函数,以得到所述TCP选项字段中的所述客户端的原始IPv4地址及端口并存储;
(D)所述服务器的Linux内核层截获getname钩子,挂载inet_getname_ttm钩子函数,以提取所述客户端的原始IPv4地址及端口供所述服务器的Linux应用层使用。
2.根据权利要求1所述的方法,其特征在于,进一步包括步骤:
(E)将所述TCP选项字段的kind号写入作为TCPOPT_TTM并将所述TCP选项字段的总长度写入作为TCPOLEN_TTM。
3.根据权利要求2所述的方法,其特征在于,所述步骤(C)包括:
所述服务器的Linux内核层调用linux内核原生的tcp_v4_yn_recv_sock函数;
判断所述TCP选项字段的kind号是否为TCPOPT_TTM并判断所述TCP选项字段的总长度是否为TCPOLEN_TTM;
如果是,则获取存储在所述TCP选项字段中的所述客户端的原始IPv4地址及端口;以及
建立具有sk_user_data指针的sock结构体并将所述客户端的原始IPv4地址及端口拷贝到存储所述sk_user_data指针变量的内存区域。
4.根据权利要求3所述的方法,其特征在于,进一步包括:
如果判断不存在kind号为TCPOPT_TTM且长度为TCPOLEN_TTM的所述TCP选项字段,则返回。
5.根据权利要求1或2所述的方法,其特征在于,所述步骤(D)包括:
调用linux内核原生的inet_getname函数;
判断存储所述sk_user_data指针变量的内存区域是否为空;
如果否,则判断存储所述sk_user_data指针变量的内存区域中是否存储有所述客户端的原始IPv4地址及端口;以及
如果存储所述sk_user_data指针变量的内存区域中存储有所述客户端的原始IPv4地址及端口,则将存储所述sk_user_data指针变量的内存区域中存储的所述客户端的原始IPv4地址及端口赋值到uaddr的sin_addr和sin_port。
6.根据权利要求5所述的方法,其特征在于,进一步包括步骤:
如果判断存储所述sk_user_data指针变量的内存区域为空,则返回。
7.根据权利要求5所述的方法,其特征在于,进一步包括步骤:
如果判断存储所述sk_user_data指针变的内存区域中没有存储所述客户端的原始IPv4地址及端口,则返回。
8.一种从IPv4负载均衡设备传递客户端的原始IPv4地址及端口至后端服务器的装置,其特征在于,所述客户端向所述IPv4负载均衡设备发送数据包,所述IPv4负载均衡设备对所述客户端的原始IPv4地址及端口进行地址转换,将所述客户端的原始IPv4地址及端口存储在TCP选项字段中并发送带有所述TCP选项字段的数据包,所述装置包括:
第一截获模块,所述第一截获模块用于截获syn_recv_sock钩子,挂载tcp_v4_syn_recv_sock_ttm钩子函数,以得到所述TCP选项字段中的所述客户端的原始IPv4地址及端口并存储;以及
第二截获模块,所述第二截获模块用于截获getname钩子,挂载inet_getname_ttm钩子函数,以提取所述客户端的原始IPv4地址及端口供所述服务器的Linux应用层使用。
9.根据权利要求8所述的装置,其特征在于,进一步包括:
写入模块,所述写入模块用于将所述TCP选项字段的kind号写入作为TCPOPT_TTM并将所述TCP选项字段的总长度写入作为TCPOLEN_TTM。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于百度在线网络技术(北京)有限公司,未经百度在线网络技术(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210054358.3/1.html,转载请声明来源钻瓜专利网。
- 上一篇:IP地址溯源方法和装置
- 下一篇:一种用ONVIF协议进行直存的方法