新四季網

並發傳輸文件的方法及系統的製作方法

2023-12-03 23:39:36

並發傳輸文件的方法及系統的製作方法
【專利摘要】本發明公開了一種並發傳輸文件的系統和方法,該系統包括手機和伺服器,其特徵在於:手機的3G與WiFi數據連接功能同時打開,實現3G與WiFi雙待;在手機與伺服器之間建立IPIP隧道;手機使用3G上行發起網絡業務訪問請求,伺服器接收並處理請求,將數據包發送至3G與wifi兩個通道上,手機在3G接口和WiFi接口上收到數據包。
【專利說明】並發傳輸文件的方法及系統
【技術領域】
[0001]本發明涉及並發傳輸方法及系統,可以應用於手機聯合伺服器的並發傳輸中,特別是android手機聯合Linux伺服器並發傳輸文件。
【背景技術】
[0002]隨著網際網路的應用發展,手機用戶對帶寬的需求日益增大。同時,伴隨著3GPP與非3GPP接入技術的發展,WiFi技術得到了極大普及,多種通信技術3GPP、WLAN並存於很多地區。
[0003]目前的智慧型手機如android手機均支持雙網卡功能,但android手機作業系統默認同時只允許一種數據連接進行業務訪問,即WiFi連接時,無法打開3G ;3G連接時,WiFi無法啟用。在多種通信技術富餘的區域,造成了資源浪費。當用戶進行下載文件等高帶寬業務時,任一種連接單獨工作也無法滿足高速度要求。
[0004]由於手機只支持單連接,因此目前手機上沒有完整成熟的並發傳輸方案,現有的並發傳輸方法多面向與具有多網絡接口的PC設備。如IETF提出的多路徑傳輸控制協議MPTCP可實現TCP的多路傳輸,提高了鏈路利用率。但此方法即使能成功轉移至android手機,通信雙方協議棧都添加該協議的支持,但在應用層與傳輸層添加MPTCP層的做法增加了手機處理數據包的複雜度,加大開銷。
[0005]作為一種在TCP、UDP基礎上發展起來的傳輸層控制協議SCTP,其眾多特點之一的多宿主機可支持多路徑傳輸,只有在主路徑失效的情況下,才會啟用備用路徑傳輸數據,提高了會話的可靠性。但僅在單一路徑上進行數據傳輸,仍無法充分利用多條路徑的網絡帶寬資源,也無法很好提高端到端通信的吞吐量。
[0006]通過對標準SCTP協議中的主備路徑機制的修改,可使多條路徑同時用於數據傳輸,可看到近期在具有雙乙太網卡的PC客戶端與具有單(或雙)網卡的服務端成功並發傳輸的實例。但該方法若轉移至android手機,原單一網絡環境改變為3G與Wlan,兩條路徑存在於不同網絡中其傳輸時延不同(Wlan較低,3G較高),會導致數據包亂序達到接收端,在延遲差別較大時,可能導致接收端向發送端發出多次間隔報告,使發送端認為發生丟包而進行不必要的重傳。標準SCTP協議的數據包排序工作僅支持多流連接,對於修改過後sctp協議的主備路徑機制實例,需要在應用層對接收到的亂序數據包進行重排序,增加了複雜性。

【發明內容】

[0007]本發明要解決的一個技術問題是提供一種智慧型手機如android手機聯合伺服器如Linux伺服器並發傳輸文件的方法,其特徵在於,修改手機系統原始碼支持3G、WiFi接口雙待,手機通過一個TCP連接從伺服器獲取文件,手機通過3G單行成功與伺服器三次握手後,伺服器在內核截取要發送的文件數據包,對數據包進行修改封裝後,從原來返回至手機3G單一接口,改變為發送至手機WiF1、3G兩個接口上。其中,設定一定的數據包分流規則,按照隧道包頭封裝規則,對部分數據包進行新的數據包封裝,使其通過Wlan鏈路(即隧道)返回至手機;伺服器響應手機的其餘數據包不做改動,仍舊通過3G返回至手機。隧道一端建立在伺服器乙太網接口上,另一端建立在手機Wlan接口上,這樣文件數據就會從WiF1、3G兩個通道返回至手機,實現下行的並發傳輸。
[0008]文件傳輸前後不改動原有包括手機3G IP位址在內的TCP連接的五元組標識,本質上這仍屬於一個在3G網絡內發起的TCP連接,儘管部分數據包是通過在Wlan網絡內隧道傳輸,但從TCP層看下層實現透明。針對MPTCP方法,實現多路徑傳輸需添加新的協議層支持,本發明不對手機原有TCP/IP協議棧做任何改動,極大簡化了實現方法。
[0009]由於傳輸過程通過同一個TCP連接完成,手機兩網絡接口收到的數據包經處理後均投遞至TCP層,該層數據包中的序號以及確認號會自主對未按照順序收到的包進行排序,修改的SCTP協議主備路徑機制實例的排序工作在應用層完成,本發明可免去複雜的排序工作,減少了在應用層的工作量,增加了發明的靈活性。
[0010]根據不同網絡當時的負載情況,可調整伺服器側數據包分流比例,可最大利用不同的網絡的帶寬資源,使下載文件的連接速度達到最大化,改善用戶體驗。為實現本發明之目的,採用以下技術方案予以實現:
[0011]一種並發傳輸文件的方法,其特徵在於:包括如下步驟:
[0012]步驟(I ),使手機3G與WiFi數據連接功能同時打開,實現3G與WiFi雙待;
[0013]步驟(2),在手機與伺服器之間建立IPIP隧道;
[0014]步驟(3 ),使用3G上行發起socket連接,發送文件下載請求;
[0015]步驟(4),伺服器接收並處理文件下載請求,將數據包發送至3G與wifi兩個通道上,手機在3G接口和WiFi接口上收到數據包。
[0016]如上所述的並發傳輸文件的方法,其特徵在於上述步驟(I)包括如下步驟:
[0017](1.1)修改手機作業系統framework原始碼,依照現有網絡類型,添加一種新的網絡連接類型 TYPE_WIFI_0FFL0AD ;
[0018](1.2)在 ConnectivityService 構造函數中,添加 TYPE_WIFI_0FFL0AD 類型網絡跟蹤器,之後對該網絡類型的操作都通過相應跟蹤器執行。
[0019](1.3) ConnectivityService.handleConnectivityChange 添加對 TYPE_WIFI_OFFLOAD的特殊處理,刪除屬於WiFi的默認路由,以保證只存在即3G數據連接的默認路由,實現只使用3G發送上行數據;
[0020](1.4)系統默認優先網絡為WiFi,為防止初始時WiFi鏈路導致3G鏈路連接不上,在 ConnectivityService 中新增方法 SetNetworkPreferenceEx,將優先網絡改為 3G ;
[0021](1.5) WifiManager、WifiService 和 NetworkInfo 新增方法:setType,用於修改 NetworkStateTracker.mNetworklnf0.mNetworkType,以保證後續對於 TYPE_WIFI_OFFLOAD 類型的數據連接,3G 連接時,啟動 WiFi, ConnectivityService.handleConnect 不再進入teardown流程,從而實現雙待。
[0022]如上所述的並發傳輸文件的方法,其特徵在於上述步驟(2)包括如下步驟:添加手機隧道功能支持,在手機WiFi接口與伺服器乙太網卡之間配置建立IPIP隧道。
[0023]如上所述的並發傳輸文件的方法,其特徵在於上述步驟(3)包括如下步驟:運行文件傳輸服務端、客戶端程序,手機客戶端程序,通過綁定的源IP位址、源埠向伺服器指定的目的IP位址、目的埠使用3G上行發起socket連接,發送文件下載請求。
[0024]如上所述的並發傳輸文件的方法,其特徵在於上述步驟(4)包括如下步驟:伺服器加載內核模塊,接收並處理文件下載請求,模塊功能包括:截取返回至手機的數據包,進行分流、修改、封裝等操作,將數據包發送至兩個通道上;內核模塊實現具體包括如下部分:
[0025](4.1),使用netfilter在內核NF_IP_L0CAL_0UT處註冊鉤子函數,使得每個來自本機進程的數據包在離開本地主機之前都經過該鉤子函數過濾、處理。
[0026](4.2),在鉤子函數中添加過濾條件,包括:源IP位址、IP包所封裝傳輸層協議、源埠信息,丟棄不滿足過濾條件的數據包,截取伺服器響應手機的數據包。
[0027](4.3),放行用於TCP連接的三次握手、四次揮手TCP控制報文,仍舊通過3G鏈路返回。
[0028](4.4),設定一定的分流比例,對於需要發送到3G鏈路上的數據包,放行數據包,數據包繼續正常的報文處理並通過3G鏈路返回,手機在3G接口上收到數據包;
[0029](4.5),根據分流比例,對於需要發送到Wlan鏈路上的數據包,修改目的IP位址、目的埠為手機進行文件下載客戶端所綁定的手機3G接口 IP位址、埠 ;
[0030](4.6),對於修改過的數據包,需分別重新計算校驗和,包括TCP payload校驗和、IP頭部檢驗和以及整個IP payload校驗和;
[0031](4.7),內層數據包修改完畢後,將數據包發送至虛擬網卡設備tun,該設備會對數據包封裝外層IPIP頭,根據配置隧道命令中的信息填充IPIP頭目的、源IP位址,數據包通過Wlan鏈路路由返回至手機WiFi接口。
[0032]—種並發傳輸文件的系統,包括手機和伺服器,其特徵在於:
[0033]手機的3G與WiFi數據連接功能同時打開,實現3G與WiFi雙待;
[0034]在手機與伺服器之間建立IPIP隧道;
[0035]手機使用3G上行發起socket連接,發送文件下載請求;
[0036]伺服器接收並處理文件下載請求,將數據包發送至3G與wifi兩個通道上,手機在3G接口和WiFi接口上收到數據包。
[0037]如上所述的並發傳輸文件的系統,其特徵在於:
[0038](1.1)修改手機作業系統原始碼,依照現有網絡類型,添加一種新的網絡連接類型TYPE_WIFI_0FFL0AD ;
[0039](1.2)在 ConnectivityService 構造函數中,添加 TYPE_WIFI_0FFL0AD 類型網絡跟蹤器,之後對該網絡類型的操作都通過相應跟蹤器執行;
[0040](1.3) ConnectivityService.handleConnectivityChange 添加對 TYPE_WIFI_OFFLOAD的特殊處理,刪除屬於WiFi的默認路由,以保證只存在即3G數據連接的默認路由,實現只使用3G發送上行數據;
[0041](1.4)系統默認優先網絡為WiFi,為防止初始時WiFi鏈路導致3G鏈路連接不上,在 ConnectivityService 中新增方法 SetNetworkPreferenceEx,將優先網絡改為 3G ;
[0042](1.5) WifiManager、WifiService 和 NetworkInfo 新增方法:setType,用於修改 NetworkStateTracker.mNetworklnf0.mNetworkType,以保證後續對於 TYPE_WIFI_OFFLOAD 類型的數據連接,3G 連接時,啟動 WiFi, ConnectivityService.handleConnect 不再進入teardown流程,從而實現雙待。
[0043]如上所述的並發傳輸文件的系統,其特徵在於:添加手機隧道功能支持,在手機WiFi接口與伺服器乙太網卡之間配置建立IPIP隧道。
[0044]如上所述的並發傳輸文件的系統,其特徵在於:運行文件傳輸服務端、客戶端程序,手機客戶端程序,通過綁定的源IP位址、源埠向伺服器指定的目的IP位址、目的埠使用3G上行發起socket連接,發送文件下載請求。
[0045]如上所述的並發傳輸文件的系統,其特徵在於:伺服器加載內核模塊,接收並處理文件下載請求,模塊功能包括:截取返回至手機的數據包,進行分流、修改、封裝等操作,將數據包發送至兩個通道上;內核模塊實現具體包括如下部分:
[0046](4.1),使用netfilter在內核NF_IP_L0CAL_0UT處註冊鉤子函數,使得每個來自本機進程的數據包在離開本地主機之前都經過該鉤子函數過濾、處理。
[0047](4.2),在鉤子函數中添加過濾條件,包括:源IP位址、IP包所封裝傳輸層協議、源埠信息,丟棄不滿足過濾條件的數據包,截取伺服器響應手機的數據包。
[0048](4.3),放行用於TCP連接的三次握手、四次揮手TCP控制報文,仍舊通過3G鏈路返回。
[0049](4.4),設定一定的分流比例,對於需要發送到3G鏈路上的數據包,放行數據包,數據包繼續正常的報文處理並通過3G鏈路返回,手機在3G接口上收到數據包;
[0050](4.5),根據分流比例,對於需要發送到Wlan鏈路上的數據包,修改目的IP位址、目的埠為手機進行文件下載客戶端所綁定的手機3G接口 IP位址、埠 ;
[0051](4.6),對於修改過的數據包,需分別重新計算校驗和,包括TCP payload校驗和、IP頭部檢驗和以及整個IP payload校驗和;
[0052](4.7),內層數據包修改完畢後,將數據包發送至虛擬網卡設備tun,該設備會對數據包封裝外層IPIP頭,根據配置隧道命令中的信息填充IPIP頭目的、源IP位址,數據包通過Wlan鏈路路由返回至手機WiFi接口。
【專利附圖】

【附圖說明】
[0053]圖1為本發明網絡拓撲圖;
[0054]圖2為本發明隧道包結構圖;
[0055]圖3為本發明伺服器數據包處理流程圖;
[0056]圖4為本發明數據包分流原理圖。
【具體實施方式】
[0057]以下將對本發明的優選實施例進行詳細的描述。
[0058]本實施例的智慧型手機聯合伺服器並發傳輸方法在如圖1的網絡環境中展開。下面對圖1網絡拓撲作簡要的描述(其中手機以android手機為例,伺服器以Linux伺服器為例)。
[0059]經修改後的Android手機可同時通過兩種方式接入Internet網絡:3G、WiFi。接入網絡後,3G基站通過DHCP動態分配一個私有IP位址給3G接口 rmnetO,此處rmnetO地址假定為10.65.34.1ll ;WiFi接口 ethO通過靜態指定IP位址與無線路由器建立Wlan連接,此處ethO地址設為192.168.1.102。伺服器配置靜態地址為192.168.1.105,與手機WiFi設備處於同一個區域網中。為使手機3G接口能通過Internet訪問到伺服器,在路由器上設置區域網內具有192.168.1.105地址的伺服器為DMZ主機,手機使用3G上行通過目的地址為無線路由器外網wlan地址202.120.222.69的請求來訪問伺服器,伺服器收到手機業務請求後作出響應,經模塊分流、修改、封裝、發送處理後,部分數據包投遞至3G鏈路,其餘投遞至wlan鏈路,手機rmnetO、ethO接口陸續收集到數據包投遞至同一個TCP/IP協議棧處理後保存為完整的文件,從而完成下行方向並發傳輸的完整過程。
[0060]下面介紹本發明手機聯合伺服器並發傳輸方法的實施例在圖1網絡環境中具體實現過程。
[0061]步驟(1),使手機3G與WiFi數據連接功能同時打開,實現3G與WiFi雙待;修改android手機作業系統framework層原始碼如下:
[0062](1.1),依照現有網絡類型,ConnectivityManager添加一種新的網絡連接類型TYPE_WIFI_0FFL0AD ;
[0063](1.2),在 ConnectivityService 構造函數中,添加 TYPE_WIFI_0FFL0AD 類型網絡跟蹤器,之後對該網絡類型的操作都通過相應跟蹤器執行。
[0064](1.3), ConnectivityService.handleConnectivityChange 添加對 TYPE_WIFI_OFFLOAD的特殊處理,刪除屬於WiFi的默認路由,以保證只存在Mobile (即3G)數據連接的默認路由,實現只使用3G發送上行數據;
[0065](1.4),系統默認優先網絡為WiFi,為防止初始時WiFi鏈路導致3G鏈路連接不上,在 ConnectivityService 中新增方法 SetNetworkPreferenceEx,將優先網絡改為 3G ;
[0066](1.5), WifiManager、WifiService 和 NetworkInfo 新增方法:setType,用於修改 NetworkStateTracker.mNetworklnf0.mNetworkType,以保證後續對於 TYPE_WIFI_OFFLOAD 類型的數據連接,3G 連接時,啟動 WiFi, ConnectivityService.handleConnect 不再進入teardown流程,從而實現雙待;
[0067]源碼修改後,進行編譯刷機成功後,設置網絡類型為TYPE_WIFI_0FFL0AD,先後打開手機3G數據連接、WiFi數據連接開關,可看到手機界面兩網絡圖標依次點亮,實現雙待。將手機通過USB線連接至PC,使用adb shell工具進入手機調試模式,輸入ip route命令查看路由表為:
[0068]10.65.34.97dev rmnetO
[0069]10.65.34.96/27dev rmnetOsrcl0.65.34.1ll
[0070]192.168.1.0/24dev eth0srcl92.168.1.102
[0071]default vial0.65.34.97dev rmnetO
[0072]可推斷:目的網絡地址為10.65.34.96/27的數據包發送到源地址為
10.65.34.111的設備,即通過rmnetO設備發送出去;目的網絡地址為192.168.1.0/24的數據包發送到源地址為192.168.1.102的設備,即通過ethO設備發送出去;目的網絡地址均不在上述範圍的數據包,則通過默認路由指定的rmnetO設備發送,如目的地址為無線路由器外網地址202.120.222.69的數據包通過默認路由指定的rmnetO設備發送,即實現了使用3G單上行發起文件下載請求。
[0073]並使用命令「ping-1 eth0202.120.222.69」 或 「ping-1 rmnet0202.120.222.69」來確認手機兩個網絡接口工作正常以及到達伺服器通路的暢通性。
[0074]步驟(2),添加android手機隧道功能支持,在手機WiFi接口與伺服器乙太網卡之間配置建立IPIP隧道;Android手機本身不支持隧道,需在源碼kernel文件夾根目錄下的.config配置文件由#C0NFIG_TUN is not set改為C0NFIG_TUN=m,然後通過命令make modules編譯模塊得到tun.ko隧道模塊,編譯源碼得到rom,刷機後手動將kernel/drivers/net/tun.ko複製到手機system/lib/modules下並配置權限,就打開了隧道功能。
[0075]使用adb在手機上配置隧道:
[0076]ip tunnel add tunOmode ipip local192.168.1.102remotel92.168.1.105
[0077]busybox ifconfig tunOl0.1.1.1
[0078]在伺服器上使用超級用戶配置隧道:
[0079]ip tunnel add tunOmode ipip local192.168.1.105remotel92.168.1.102
[0080]ifconf ig tunOl0.1.1.2
[0081]含有3G私有IP位址的數據包無法直接在Wlan網絡內傳輸,隧道的實質為利用公網傳輸私網數據包,即將3G ip分組封裝在wifi ip分組中,具有WiFi IP的分組可在Wlan網絡內尋址,故可利用已有的Wlan網絡進行傳輸3G私有報文,如圖2所示為經過封裝後的隧道數據包結構。此處選擇IPIP隧道,由於它是對IP數據包進行封裝的簡單協議,該協議只能將IP數據包作為載荷,無需加密,簡化實現方式,提高處理效率。使用ifconfig命令給新建的虛擬網卡設備tunO賦予任意IP位址,作為隧道埠地址,使用此命令的主要目的為啟動tunO。
[0082]步驟(3),運行文件傳輸服務端、客戶端程序,手機客戶端程序通過綁定的源IP位址、源埠向服務端程序指定的目的IP位址、目的埠使用3G上行發起socket連接,發送文件下載請求;
[0083]客戶端程序主要實現:
[0084]通過調用新建Socket對象s的bind方法,使套接字s綁定到3GIP位址
10.65.34.111以及指定埠號55555中,使用此埠號來識別數據包屬於手機客戶端程序,調用connect方法就可以向IP位址為202.120.222.69的伺服器、埠號為3000的服務端程序發起連接請求,將方法getlnputStream讀取的流內容保存到新建的BufferedInputStream對象bis,並調用對象bis的read方法將流內容寫入到文件中,並保存為完整文件。
[0085]服務端程序主要實現:
[0086]新建在AF_INET域的S0CK_STREAM類型的套接字sockfd,定義structsockaddr類型的地址結構變量my_addr,填充其域值為AF_INET、埠號為3000、地址為192.168.1.105,則將套接字sockfd綁定到該地址結構上,就可以在192.168.1.105地址的3000埠上監聽連接請求了,當客戶發起請求連接時,函數accept返回一個連接套接字new_fd,將要發送的文件內容讀取到緩衝區buffer中,就可以通過send函數將buffer中的內容通過new_f d發送出去。
[0087]步驟(4),Linux伺服器加載內核模塊,接收並處理文件下載請求。模塊功能包括:截取返回至手機的數據包,進行分流、修改、封裝等操作,將數據包發送至兩個通道上。內核模塊實現具體包括如下部分:具體處理流程如圖3:[0088](4.1),使用netfilter在內核NF_IP_L0CAL_0UT處註冊鉤子函數,使得每個來自本機進程的數據包在離開本地主機路由之前都經過該鉤子函數過濾、處理。
[0089](4.2),在鉤子函數中添加過濾條件,包括:源IP位址192.168.1.105、IP包所封裝傳輸層協議TCP、源埠號信息3000,丟棄不滿足過濾條件的數據包,截取伺服器響應手機的數據包。
[0090](4.3),放行用於TCP報文選項syn+ack、fin+ack同時置位的報文,仍舊通過3G鏈路返回。
[0091]在TCP/IP協議中,TCP協議提供可靠的連接服務,採用三次握手建立一個連接,包括客戶端發送syn包,服務端發送syn+ack包表示確認,客戶端再次發送ack包表示對確認的響應。此處的服務端作為TCP連接的被動連接端,收到syn包後若將syn+ack包通過Wlan鏈路返回給手機,手機收到syn+ack包後依舊通過3G鏈路上行發送ack包,由於3G網絡會跟蹤記錄一次完整TCP連接過程,syn+ack包通過Wlan鏈路傳輸,沒有在3G網絡裡留下記錄,3G網絡裡集成的firewall對這種數據包只有syn和ack的情況,會認為這是一種網絡攻擊,故ack被丟棄,三次握手不成功TCP連接無法建立,文件數據無法傳輸。故放行syn+ack報文,使TCP三次握手在3G網絡內完成,可保證文件數據的正常的傳遞。
[0092](4.4),設定一定的分流比例,對於需要發送到3G鏈路上的數據包,放行數據包,數據包繼續正常的報文處理並通過3G鏈路返回,手機在3G接口上收到數據包;
[0093]如圖4所示,處理完TCP連接控制包後,使用計數器i對數據包進行計數,每流過一個數據包i的值加一,當需要將整體數據包數量的20%的使用3G鏈路返回,則設置「分流比例」為5,將計數器i與分流比例「5」求餘,若結果為O則放行數據包,使用3G鏈路返回;若結果不為0,則對數據包進行修改封裝後,使用Wlan鏈路返回。可了解,3G網絡經發展普及應用後,較2G網絡帶寬已有很大提高,但針對這種適用於行動裝置這種特殊高要求的終端,3G網絡帶寬仍與Wlan網絡有較大差距。圖4中可看到,原來傳輸5個數據包需要5個3G網絡單位時間,使用雙連接後,傳輸5個數據包需要4個Wlan網絡單位時間與I個3G網絡單位時間,在分流比例為20%的情況下,提高了 4* (Wlan網絡單位時間-3G網絡單位時間)。分流比例可根據實際網絡負載情況作調整,如當3G網絡負載空閒、Wlan網絡負載較高時,提高分流比例,使更多的數據包使用3G網絡傳輸;當3G網絡負載較高、Wlan網絡負載空閒時,降低分流比例,使數據包經Wlan網絡傳輸。雙連接加快了數據包傳輸速度,提高了網絡利用率。
[0094](4.5),根據分流比例,對於需要發送到Wlan鏈路上的數據包,修改目的IP位址為手機3G私有地址10.65.34.111、目的埠為3000,即手機進行文件下載客戶端所綁定的手機3G接口 IP位址、埠;當TCP連接成功建立後,手機TCP/IP協議棧會根據五元組標識(源IP 地址 10.65.34.111、目的 IP 地址 202.120.222.69、源埠號 55555、目的埠號 3000、傳輸層協議號TCP)維護該TCP連接,即手機收到包括該五元組某元的數據包會將這些數據包投遞至協議棧處理。TCP連接請求數據包自手機發出需經過幾次路由器路由轉發到達伺服器,經過多次路由器NAT地址映射以及埠映射作用,數據包源IP位址、源埠號發生改變,必須修改伺服器響應終端數據包的目的IP位址、目的埠號為原手機發起TCP連接的應用程式綁定的地址埠信息,數據包經過Wlan網絡的隧道傳輸直接到達手機後,手機才會根據IP位址將數據包投遞至對應協議棧,再根據埠號投遞至上層應用程式。[0095](4.6),對於修改過的數據包,需分別重新計算校驗和,包括TCP payload校驗和、IP頭部檢驗和以及整個IP payload校驗和;
[0096](4.7),內層數據包修改完畢後,將數據包發送至虛擬網卡設備tun,該設備會對數據包封裝外層IPIP頭,根據配置隧道命令中的信息填充IPIP頭目的、源IP位址,數據包通過Wlan鏈路路由返回至手機WiFi接口。
[0097]數據包通過源、目的IP位址在網絡中完成尋址路由轉發工作。則若要使得數據包能在Wlan網絡中傳輸,則該數據包需要擁有能夠在Wlan網絡中識別的源、目的IP位址。手機的Wlan設備與伺服器均在同一區域網中,則將包括有手機3G IP位址的數據包作為新數據包的載荷,外層封裝上新的IP頭,包括能在區域網中識別的Wlan地址,即目的IP設為192.168.1.102,源IP設為192.168.1.105。這也是隧道中使用公網傳輸私有數據包實現原理。
【權利要求】
1.一種並發傳輸文件的方法,其特徵在於:包括如下步驟: 步驟(1),使手機3G與WiFi數據連接功能同時打開,實現3G與WiFi雙待; 步驟(2),在手機與伺服器之間建立IPIP隧道; 步驟(3 ),使用3G上行發起socket連接,發送文件下載請求; 步驟(4),伺服器接收並處理文件下載請求,將數據包發送至3G與WiFi兩個通道上,手機在3G接口和WiFi接口上收到數據包。
2.如權利要求1所述的並發傳輸文件的方法,其特徵在於上述步驟(I)包括如下步驟: (1.0修改手機作業系統原始碼,依照現有網絡類型,添加一種新的網絡連接類型TYPE_WIFI_OFFLOAD ; (1.2)在ConnectivityService構造函數中,添加TYPE_WIFI_OFFLOAD類型網絡跟蹤器,之後對該網絡類型的操作都通過相應跟蹤器執行。 (1.3)添加對TYPE_WIFI_OFFLOAD的特殊處理,刪除屬於WiFi的默認路由,以保證只存在即3G數據連接的默認路由,實現只使用3G發送上行數據; (1.4)系統默認優先網絡為WiFi,為防止初始時WiFi鏈路導致3G鏈路連接不上,在ConnectivityService 中新增方法 SetNetworkPreferenceEx,將優先網絡改為 3G ;· (1.5)新增方法:setType,用於修改NetworkStateTracker.mNetworklnf0.mNetworkType,以保證後續對於TYPE_WIFI_OFFLOAD類型的數據連接,3G連接時,啟動WiFi, ConnectivityService.handleConnect 不再進入 teardown 流程,從而實現雙待。
3.如權利要求1或2所述的並發傳輸文件的方法,其特徵在於上述步驟(2)包括如下步驟:添加手機隧道功能支持,在手機WiFi接口與伺服器乙太網卡之間配置建立IPIP隧道。
4.如權利要求1或2所述的並發傳輸文件的方法,其特徵在於上述步驟(3)包括如下步驟:運行文件傳輸服務端、客戶端程序,手機客戶端程序,通過綁定的源IP位址、源埠向伺服器指定的目的IP位址、目的埠使用3G上行發起socket連接,發送文件下載請求。
5.如權利要求1或2所述的並發傳輸文件的方法,其特徵在於上述步驟(4)包括如下步驟:伺服器加載內核模塊,接收並處理文件下載請求,模塊功能包括:截取返回至手機的數據包,進行分流、修改、封裝等操作,將數據包發送至兩個通道上;內核模塊實現具體包括如下部分: (4.1),使用netfilter在內核NF_IP_L0CAL_0UT處註冊鉤子函數,使得每個來自本機進程的數據包在離開本地主機之前都經過該鉤子函數過濾、處理。 (4.2),在鉤子函數中添加過濾條件,包括:源IP位址、IP包所封裝傳輸層協議、源埠信息,丟棄不滿足過濾條件的數據包,截取伺服器響應手機的數據包。 (4.3 ),放行用於TCP連接的三次握手、四次揮手TCP控制報文,仍舊通過3G鏈路返回。 (4.4),設定一定的分流比例,對於需要發送到3G鏈路上的數據包,放行數據包,數據包繼續正常的報文處理並通過3G鏈路返回,手機在3G接口上收到數據包; (4.5),根據分流比例,對於需要發送到Wlan鏈路上的數據包,修改目的IP位址、目的埠為手機進行文件下載客戶端所綁定的手機3G接口 IP位址、埠 ; (4.6),對於修改過的數據包,需分別重新計算校驗和,包括TCP payload校驗和、IP頭部檢驗和以及整個IP payload校驗和; (4.7 ),內層數據包修改完畢後,將數據包發送至虛擬網卡設備tun,該設備會對數據包封裝外層IPIP頭,根據配置隧道命令中的信息填充IPIP頭目的、源IP位址,數據包通過Wlan鏈路路由返回至手機WiFi接口。
6.一種並發傳輸文件的系統,包括手機和伺服器,其特徵在於: 手機的3G與WiFi數據連接功能同時打開,實現3G與WiFi雙待; 在手機與伺服器之間建立IPIP隧道; 手機使用3G上行發起socket連接,發送文件下載請求; 伺服器接收並處理文件下載請求,將數據包發送至3G與WiFi兩個通道上,手機在3G接口和WiFi接口上收到數據包。
7.如權利要求6所述的並發傳輸文件的系統,其特徵在於: (1.0修改手機作業系統原始碼,依照現有網絡類型,添加一種新的網絡連接類型TYPE_WIFI_OFFLOAD ; (1.2)在ConnectivityService構造函數中,添加TYPE_WIFI_OFFLOAD類型網絡跟蹤器,之後對該網絡類型的操作都通過相應跟蹤器執行。 (1.3)添加對TYPE_WIFI_OFFLOAD的特殊處理,刪除屬於WiFi的默認路由,以保證只存在即3G數據連接的默認路由,實現只使用3G發送上行數據; (1.4)系統默認優先網絡為WiFi,為防止初始時WiFi鏈路導致3G鏈路連接不上,在ConnectivityService 中新增方法 SetNetworkPreferenceEx,將優先網絡改為 3G ; (1.5)新增方法:setType,用於修改NetworkStateTracker.mNetworklnf0.mNetworkType,以保證後續對於TYPE_WIFI_OFFLOAD類型的數據連接,3G連接時,啟動WiFi, ConnectivityService.handleConnect 不再進入 teardown 流程,從而實現雙待。
8.如權利要求6或7所述的並發傳輸文件的系統,其特徵在於:添加手機隧道功能支持,在手機WiFi接口與伺服器乙太網卡之間配置建立IPIP隧道。
9.如權利要求6或7所述的並發傳輸文件的系統,其特徵在於:運行文件傳輸服務端、客戶端程序,手機客戶端程序,通過綁定的源IP位址、源埠向伺服器指定的目的IP位址、目的埠使用3G上行發起socket連接,發送文件下載請求。
10.如權利要求6或7所述的並發傳輸文件的系統,其特徵在於:伺服器加載內核模塊,接收並處理文件下載請求,模塊功能包括:截取返回至手機的數據包,進行分流、修改、封裝等操作,將數據包發送至兩個通道上;內核模塊實現具體包括如下部分: (4.1),使用netfilter在內核NF_IP_L0CAL_0UT處註冊鉤子函數,使得每個來自本機進程的數據包在離開本地主機之前都經過該鉤子函數過濾、處理。 (4.2),在鉤子函數中添加過濾條件,包括:源IP位址、IP包所封裝傳輸層協議、源埠信息,丟棄不滿足過濾條件的數據包,截取伺服器響應手機的數據包。 (4.3 ),放行用於TCP連接的三次握手、四次揮手TCP控制報文,仍舊通過3G鏈路返回。 (4.4),設定一定的分流比例,對於需要發送到3G鏈路上的數據包,放行數據包,數據包繼續正常的報文處理並通過3G鏈路返回,手機在3G接口上收到數據包; (4.5),根據分流比例,對於需要發送到Wlan鏈路上的數據包,修改目的IP位址、目的埠為手機進行文件下載客戶端所綁定的手機3G接口 IP位址、埠 ;(4.6),對於修改過的數據包,需分別重新計算校驗和,包括TCP payload校驗和、IP頭部檢驗和以及整個IP payload校驗和; (4.7 ),內層數據包修改完畢後,將數據包發送至虛擬網卡設備tun,該設備會對數據包封裝外層IPIP頭,根據配置隧道命令中的信息填充IPIP頭目的、源IP位址,數據包通過Wlan鏈路路由返回至手機WiF.i接口。
【文檔編號】H04L29/08GK103441996SQ201310360464
【公開日】2013年12月11日 申請日期:2013年8月16日 優先權日:2013年8月16日
【發明者】劉文斌, 李燁, 劉兆坤 申請人:上海理工大學

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀