本發(fā)明涉及通信技術(shù)領(lǐng)域,特別涉及一種實現(xiàn)定向流量的方法及系統(tǒng)。
背景技術(shù):
定向流量是指限定了使用業(yè)務(wù)的2g/3g/4g移動網(wǎng)絡(luò)流量。有別于不限制使用業(yè)務(wù)的通用流量,定向流量往往限定只能用于某些具體的應(yīng)用或網(wǎng)站。例如某視頻app(application,應(yīng)用程序)定向流量包內(nèi)的流量只能在該app內(nèi)使用,且使用該app產(chǎn)生的流量費用,會在運營商的定向流量套餐中單獨計費,不計入通用流量套餐中;而在使用其他app時產(chǎn)生的流量則不會被計入該定向流量套餐中。定向流量是運營商為了培養(yǎng)用戶的流量使用習(xí)慣而推出的業(yè)務(wù),等額流量費用遠低于通用流量。
當前全球各大運營商均有開展定向流量業(yè)務(wù),且主要采用<ip地址,端口>識別技術(shù)來實現(xiàn)定向流量的分類計費。內(nèi)容提供商將定向服務(wù)使用的ip地址及端口號報備給運營商,運營商在移動網(wǎng)絡(luò)的網(wǎng)關(guān)出口處識別進出的ip報文頭部,如果源或目的<ip地址,端口>為已報備的定向服務(wù)使用的<ip地址,端口>,則該ip報文的流量被計入定向流量中。
當前各大運營商與內(nèi)容提供商合作,為了在android(安卓)手機終端上使用定向流量,通常是對具體的app進行改造,引導(dǎo)流量至已報備<ip地址,端口>的定向服務(wù)器,使運營商的移動網(wǎng)關(guān)能夠識別出這些特定流量,以區(qū)分計費套餐。
目前,采用vpn(virtualprivatenetwork,虛擬專用網(wǎng)絡(luò))導(dǎo)流技術(shù)可以實現(xiàn)android手機終端免root(超級用戶)進行全局定向流量。但對于android智能硬件(例如智能可穿戴設(shè)備),其中安裝的軟件通常都是專門定制的版本,精簡程度較高,難以通過vpn技術(shù)實現(xiàn)全局定向流量。即便可以實現(xiàn),其開發(fā)量也很大。
技術(shù)實現(xiàn)要素:
為了解決現(xiàn)有技術(shù)中的問題,本發(fā)明實施例提供了一種實現(xiàn)定向流量的方法及系統(tǒng)。所述技術(shù)方案如下:
第一方面,本發(fā)明實施例提供的一種實現(xiàn)定向流量的方法,包括:
加載自定義接口替換原生網(wǎng)絡(luò)套接字接口;
在生成請求數(shù)據(jù)包時,調(diào)用自定義接口將請求數(shù)據(jù)包中的原目的地址和端口替換為定向服務(wù)的報備ip地址和端口;
發(fā)送請求數(shù)據(jù)包。
可選地,加載自定義接口替換系統(tǒng)原生的網(wǎng)絡(luò)套接字接口,包括:
配置環(huán)境變量指向自定義接口庫;
導(dǎo)出所述環(huán)境變量;
根據(jù)環(huán)境變量加載自定義接口替換原生網(wǎng)絡(luò)套接字接口。
可選地,還包括:
從定向服務(wù)的管理服務(wù)節(jié)點獲取定向服務(wù)的報備ip地址和端口。
可選地,還包括:
調(diào)用自定義接口對請求數(shù)據(jù)包進行代理協(xié)議封裝,并發(fā)送請求數(shù)據(jù)包;
服務(wù)節(jié)點接收請求數(shù)據(jù)包,并根據(jù)請求數(shù)據(jù)包的代理協(xié)議封裝建立代理協(xié)議。
可選地,還包括:
調(diào)用自定義接口在請求數(shù)據(jù)包中添加鑒權(quán)信息,并發(fā)送請求數(shù)據(jù)包;
服務(wù)節(jié)點接收請求數(shù)據(jù)包,并根據(jù)鑒權(quán)信息對請求數(shù)據(jù)包進行判斷是否合法,當請求數(shù)據(jù)包合法時,根據(jù)請求數(shù)據(jù)包的代理協(xié)議封裝建立代理協(xié)議。
第二方面,本發(fā)明實施例還提供的一種實現(xiàn)定向流量的系統(tǒng),包括:
客戶端,用于加載自定義接口替換原生網(wǎng)絡(luò)套接字接口;用于在生成請求數(shù)據(jù)包時,調(diào)用自定義接口將請求數(shù)據(jù)包中的原目的地址和端口替換為定向服務(wù)的報備ip地址和端口;還用于發(fā)送請求數(shù)據(jù)包;
服務(wù)端,用于接收請求數(shù)據(jù)包,并根據(jù)請求數(shù)據(jù)包與客戶端建立代理協(xié)議。
可選地,還包括:
移動網(wǎng)關(guān),用于根據(jù)報備ip地址和端口對請求數(shù)據(jù)包進行定向流量判定。
可選地,客戶端,用于:
配置環(huán)境變量指向自定義接口庫;
導(dǎo)出環(huán)境變量;
根據(jù)環(huán)境變量加載自定義接口替換原生網(wǎng)絡(luò)套接字接口。
可選地,還包括:
管理服務(wù)端,用于向客戶端提供定向服務(wù)的報備ip地址和端口。
可選地,客戶端,用于調(diào)用自定義接口對請求數(shù)據(jù)包進行代理協(xié)議封裝,并發(fā)送請求數(shù)據(jù)包;
服務(wù)端,用于接收請求數(shù)據(jù)包,并根據(jù)請求數(shù)據(jù)包的代理協(xié)議封裝建立代理協(xié)議。
可選地,客戶端,還用于調(diào)用自定義接口在請求數(shù)據(jù)包中添加鑒權(quán)信息;
服務(wù)端,還用于根據(jù)鑒權(quán)信息對請求數(shù)據(jù)包進行判斷是否合法,當請求數(shù)據(jù)包合法時,根據(jù)請求數(shù)據(jù)包的代理協(xié)議封裝建立代理協(xié)議。
本發(fā)明實施例提供的技術(shù)方案帶來的有益效果是:
本發(fā)明實施例提供的實現(xiàn)定向流量的方法,通過加載自定義接口替換原生網(wǎng)絡(luò)套接字接口;在生成請求數(shù)據(jù)包時,調(diào)用自定義接口將請求數(shù)據(jù)包中的原目的地址和端口替換為定向服務(wù)的報備ip地址和端口;發(fā)送請求數(shù)據(jù)包。這樣,本方法實現(xiàn)了所有app在無需做任何修改的情況下即可使用定向流量,另外,本方法的開發(fā)量遠小于vpn技術(shù)。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)用戶來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實施例提供的一種定制定向流量的方法的流程圖;
圖2是圖1中定制開發(fā)androidrom系統(tǒng)的子流程圖;
圖3是本發(fā)明實施例提供的一種定向流量的方法的流程圖;
圖4是本發(fā)明實施例的步驟210的子流程圖;
圖5是本發(fā)明實施例提供的另一種實現(xiàn)定向流量的方法的流程圖;
圖6是本發(fā)明實施例提供的另一種實現(xiàn)定向流量的方法的流程圖;
圖7是本發(fā)明實施例提供的另一種實現(xiàn)定向流量的方法的流程圖;
圖8是本發(fā)明實施例提供的一種實現(xiàn)定向流量的系統(tǒng)的示意圖;
圖9是本發(fā)明實施例提供的另一種實現(xiàn)定向流量的系統(tǒng)的示意圖;
圖10是本發(fā)明實施例提供的另一種實現(xiàn)定向流量的系統(tǒng)的示意圖。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地詳細描述。
本發(fā)明實施例提供了一種實現(xiàn)定向流量的方法,該方法的執(zhí)行主體在客戶端可以是一個智能硬件設(shè)備,例如手機和平板電腦等,通過對rom(read-onlymemory,只讀存儲)的少量定制性開發(fā),實現(xiàn)在智能硬件設(shè)備上,所有app在無需做任何修改的情況下即可使用定向流量,本發(fā)明實施例通過android系統(tǒng)進行舉例。另外,該方法涉及到代理服務(wù)端,在代理服務(wù)端可以是代理服務(wù)器。圖1為本發(fā)明實施例定制定向流量的方法的流程圖,本實施例通過定制開發(fā)androidrom系統(tǒng),并將androidrom系統(tǒng)刷入android硬件設(shè)備(客戶端)中,完成設(shè)備及系統(tǒng)的支持;之后,通過啟動該android硬件設(shè)備,并啟動app,從而實現(xiàn)app訪問的定向?qū)Я鳌?/p>
參見圖2,在定制開發(fā)androidrom系統(tǒng)的子流程中,主要包括:
s101,實現(xiàn)網(wǎng)絡(luò)套接字自定義接口庫,該自定義接口庫以動態(tài)鏈接庫的形式呈現(xiàn),其中,包含connect()、send()、sendto()、sendmsg()、recv()、recvfrom()、recvmsg()等自定義接口;
s102,將自定義接口庫放置于androidrom系統(tǒng)特定目錄下,以隨androidrom系統(tǒng)一起發(fā)布。
s103,定制開發(fā)系統(tǒng)的啟動流程,使在系統(tǒng)啟動時導(dǎo)出ld_preload環(huán)境變量;該環(huán)境變量的值包含自定義接口庫的文件路徑,實現(xiàn)該環(huán)境變量與自定義接口庫的匹配。
s104,定制開發(fā)系統(tǒng)的啟動流程,使在系統(tǒng)啟動時啟動定向服務(wù)配置管理進程;該進程負責(zé)從定向服務(wù)的管理服務(wù)器中獲取定向服務(wù)配置信息至本地并作定期更新,該配置信息包含已向運營商報備的定向服務(wù)的報備ip地址及端口等。
將定制開發(fā)androidrom系統(tǒng)刷入android硬件設(shè)備后,從而完成設(shè)備及系統(tǒng)的支持。
之后,啟動android硬件設(shè)備,并啟動app。下面將結(jié)合具體實施方式,對圖3-圖7所示的處理流程對本發(fā)明實施例提供的實現(xiàn)定向流量的方法進行詳細的說明,內(nèi)容可以如下:
參見圖3,本發(fā)明實施例提供的一種實現(xiàn)定向流量的方法,包括:
s210,加載自定義接口替換原生網(wǎng)絡(luò)套接字接口。
在本實施例中,通過上述刷入android硬件設(shè)備的androidrom系統(tǒng),將自定義接口替換原原生網(wǎng)絡(luò)套接字接口,即將connect()、send()、sendto()、sendmsg()、recv()、recvfrom()、recvmsg()等自定義接口替換android系統(tǒng)的原生網(wǎng)絡(luò)套接字接口。
可選地,參見圖4,s210,加載自定義接口替換系統(tǒng)原生的網(wǎng)絡(luò)套接字接口,包括:
s211,配置環(huán)境變量指向自定義接口庫;
其中,在定制androidrom系統(tǒng)時,可以通過修改啟動初始化腳本,使android硬件設(shè)備在啟動后,系統(tǒng)自動導(dǎo)出環(huán)境變量,并指向自定義接口庫,其中,環(huán)境變量的值包含自定義接口庫的文件路徑,例如導(dǎo)出的ld_preload環(huán)境變量包含自定義接口庫libflux.so的文件路徑/system/lib/libflux.so,在定制androidrom系統(tǒng)實現(xiàn)環(huán)境變量與自定義接口庫進行預(yù)先匹配,根據(jù)環(huán)境變量可以指向自定義接口庫。。
s212,導(dǎo)出所述環(huán)境變量;
s213,根據(jù)環(huán)境變量加載自定義接口替換原生網(wǎng)絡(luò)套接字接口;
在本實施例中,根據(jù)環(huán)境變量指向自定義接口庫,通過自定義接口庫中的自定義接口覆蓋原生網(wǎng)絡(luò)套接字接口,實現(xiàn)自定義接口替換原生網(wǎng)絡(luò)套接字接口,其中,自定義接口庫中包含connect()、send()、sendto()、sendmsg()、recv()、recvfrom()、recvmsg()等自定義接口。
s220,在生成請求數(shù)據(jù)包時,調(diào)用自定義接口將請求數(shù)據(jù)包中的原目的地址和端口替換為定向服務(wù)的報備ip地址和端口。
本實施例中,對app進行操作,在生成請求數(shù)據(jù)包時,在系統(tǒng)調(diào)用自定義接口時,將獲得的定向服務(wù)的報備ip地址和端口替換掉原目的地址和端口,從而使得請求數(shù)據(jù)包在經(jīng)過移動網(wǎng)關(guān)時,移動網(wǎng)關(guān)根據(jù)報備ip地址和端口對請求數(shù)據(jù)包進行定向流量判定,將該請求數(shù)據(jù)包判定為定向流量將其計入定向流量套餐中。
參見圖5,可選地,還包括:
s221,從定向服務(wù)的管理服務(wù)節(jié)點獲取定向服務(wù)的報備ip地址和端口。
其中,獲得定向服務(wù)的報備ip地址和端口的方式可以是在啟動app之后向定向服務(wù)的管理服務(wù)節(jié)點獲取,也可以是在android硬件設(shè)備啟動后向定向服務(wù)的管理服務(wù)節(jié)點獲取,還可以是定期向定向服務(wù)的管理服務(wù)節(jié)點獲取,之后存儲在本地,并定期更新。例如,定期向定向服務(wù)的管理服務(wù)節(jié)點獲取報備ip地址和端口<111.111.111.111,8080>或<222.222.222.222,8080>。
s230,發(fā)送請求數(shù)據(jù)包。
本實施例中,請求數(shù)據(jù)包發(fā)出后,經(jīng)過移動網(wǎng)關(guān)時,移動網(wǎng)關(guān)根據(jù)報備ip地址和端口對請求數(shù)據(jù)包進行定向流量判定。例如,移動網(wǎng)關(guān)從請求數(shù)據(jù)包中匹配報備ip地址和端口<111.111.111.111,8080>或<222.222.222.222,8080>,從而判定其為定向流量,并將其計入定向流量套餐中。
參見圖6,可選地,還包括:
s222,調(diào)用自定義接口對請求數(shù)據(jù)包進行代理協(xié)議封裝,并發(fā)送請求數(shù)據(jù)包;
本實施例中,在生成請求數(shù)據(jù)包時,可以對請求數(shù)據(jù)包中的發(fā)送內(nèi)容進行代理協(xié)議封裝,用于與代理服務(wù)器建立代理協(xié)議。
其中,可以通過調(diào)用send()、sendto()、sendmsg()等自定義接口對請求數(shù)據(jù)包進行代理協(xié)議封裝。
s240,服務(wù)節(jié)點接收請求數(shù)據(jù)包,并根據(jù)請求數(shù)據(jù)包的代理協(xié)議封裝建立代理協(xié)議。
本實施例中,根據(jù)請求數(shù)據(jù)包的代理協(xié)議封裝建立代理協(xié)議,實現(xiàn)了在客戶端與服務(wù)節(jié)點之間建立代理服務(wù),具體為:
服務(wù)節(jié)點對請求數(shù)據(jù)包中的代理協(xié)議封裝進行解封;
服務(wù)節(jié)點向客戶端發(fā)送反饋請求數(shù)據(jù)包,并對反饋請求數(shù)據(jù)包進行代理協(xié)議封裝;
客戶端接收反饋請求數(shù)據(jù)包,并對其進行解封,返回有效數(shù)據(jù)。
其中,可以調(diào)用recv()、recvfrom()、recvmsg()等自定義接口對反饋請求數(shù)據(jù)包行解封;服務(wù)節(jié)點可以是上述的代理服務(wù)器。
參見圖7,可選地,還包括:
s223,調(diào)用自定義接口在請求數(shù)據(jù)包中添加鑒權(quán)信息,并發(fā)送請求數(shù)據(jù)包;
其中,在生成請求數(shù)據(jù)包時,可以通過調(diào)用send()、sendto()、sendmsg()等自定義接口在請求數(shù)據(jù)包中添加鑒權(quán)信息。
s241,服務(wù)節(jié)點接收請求數(shù)據(jù)包,并根據(jù)鑒權(quán)信息對請求數(shù)據(jù)包進行判斷是否合法,當請求數(shù)據(jù)包合法時,根據(jù)請求數(shù)據(jù)包的代理協(xié)議封裝建立代理協(xié)議。
當請求數(shù)據(jù)包不合法時,服務(wù)節(jié)點拒絕所述請求數(shù)據(jù)包的訪問。
需要說明的是,在本實施例中,步驟s220、s222和s223均可獨立進行,可以沒有優(yōu)先性,無時間順序關(guān)系。
本發(fā)明實施例提供的實現(xiàn)定向流量的方法,通過加載自定義接口替換原生網(wǎng)絡(luò)套接字接口;在生成請求數(shù)據(jù)包時,調(diào)用自定義接口將請求數(shù)據(jù)包中的原目的地址和端口替換為定向服務(wù)的報備ip地址和端口;發(fā)送請求數(shù)據(jù)包。這樣,本方法的開發(fā)量遠小于常見的vpn技術(shù),僅需對androidrom做少量定制即可實現(xiàn)app無需做任何修改即可使用定向流量;同時,對發(fā)布后新安裝的app同樣有效。另外,本方法更適用于經(jīng)過大量裁剪,無法支持vpn功能的精簡版android系統(tǒng),對智能硬件的適用程度更高。
基于相同的技術(shù)構(gòu)思,參見圖8,本發(fā)明實施例還提供的一種實現(xiàn)定向流量的系統(tǒng),包括:
客戶端10,用于加載自定義接口替換原生網(wǎng)絡(luò)套接字接口;用于在生成請求數(shù)據(jù)包時,調(diào)用自定義接口將請求數(shù)據(jù)包中的原目的地址和端口替換為定向服務(wù)的報備ip地址和端口;還用于發(fā)送請求數(shù)據(jù)包;
服務(wù)端20,用于接收請求數(shù)據(jù)包,并根據(jù)請求數(shù)據(jù)包與客戶端10建立代理協(xié)議。
參見圖9,可選地,還包括:
移動網(wǎng)關(guān)30,用于根據(jù)報備ip地址和端口對請求數(shù)據(jù)包進行定向流量判定。
可選地,客戶端,用于:
配置環(huán)境變量指向自定義接口庫;
導(dǎo)出環(huán)境變量;
根據(jù)環(huán)境變量加載自定義接口替換原生網(wǎng)絡(luò)套接字接口。
參見圖10,可選地,還包括:
管理服務(wù)端40,用于向客戶端10提供定向服務(wù)的報備ip地址和端口。
其中,管理服務(wù)端40與客戶端10之間通過移動網(wǎng)關(guān)30進行通訊連接。
可選地,客戶端,用于調(diào)用自定義接口對請求數(shù)據(jù)包進行代理協(xié)議封裝,并發(fā)送請求數(shù)據(jù)包;
服務(wù)端,用于接收請求數(shù)據(jù)包,并根據(jù)請求數(shù)據(jù)包的代理協(xié)議封裝建立代理協(xié)議。
可選地,客戶端10,還用于調(diào)用自定義接口在請求數(shù)據(jù)包中添加鑒權(quán)信息;
服務(wù)端20,還用于根據(jù)鑒權(quán)信息對請求數(shù)據(jù)包進行判斷是否合法,當請求數(shù)據(jù)包合法時,根據(jù)請求數(shù)據(jù)包的代理協(xié)議封裝建立代理協(xié)議。
本發(fā)明實施例提供的實現(xiàn)定向流量的系統(tǒng),通過客戶端10,用于加載自定義接口替換原生網(wǎng)絡(luò)套接字接口;用于在生成請求數(shù)據(jù)包時,調(diào)用自定義接口將請求數(shù)據(jù)包中的原目的地址和端口替換為定向服務(wù)的報備ip地址和端口,并進行代理協(xié)議封裝;還用于發(fā)送請求數(shù)據(jù)包;服務(wù)端20,用于接收請求數(shù)據(jù)包,并根據(jù)請求數(shù)據(jù)包的代理協(xié)議封裝與客戶端10建立代理協(xié)議。這樣,本方法的開發(fā)量遠小于常見的vpn技術(shù),僅需對androidrom做少量定制即可實現(xiàn)app無需做任何修改即可使用定向流量;同時,對發(fā)布后新安裝的app同樣有效。另外,本方法更適用于經(jīng)過大量裁剪,無法支持vpn功能的精簡版android系統(tǒng),對智能硬件的適用程度更高。
以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性的勞動的情況下,即可以理解并實施。
通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實施方式可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件?;谶@樣的理解,上述技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品可以存儲在計算機可讀存儲介質(zhì)中,如rom/ram、磁碟、光盤等,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個實施例或者實施例的某些部分所述的方法。
還需要說明的是,術(shù)語“包括”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的商品或者系統(tǒng)不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種商品或者系統(tǒng)所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的商品或者系統(tǒng)中還存在另外的相同要素。
上述說明示出并描述了本發(fā)明的若干優(yōu)選實施例,但如前所述,應(yīng)當理解本發(fā)明并非局限于本文所披露的形式,不應(yīng)看作是對其他實施例的排除,而可用于各種其他組合、修改和環(huán)境,并能夠在本文所述發(fā)明構(gòu)想范圍內(nèi),通過上述教導(dǎo)或相關(guān)領(lǐng)域的技術(shù)或知識進行改動。而本領(lǐng)域人員所進行的改動和變化不脫離本發(fā)明的精神和范圍,則都應(yīng)在本發(fā)明所附權(quán)利要求的保護范圍內(nèi)。