[發明專利]傳遞客戶端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.szxzyx.cn/pat/books/201210054358.3/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:IP地址溯源方法和裝置
- 下一篇:一種用ONVIF協議進行直存的方法





