歡迎光臨錦工風(fēng)機(jī)官方網(wǎng)站。提供優(yōu)質(zhì)羅茨鼓風(fēng)機(jī),羅茨風(fēng)機(jī),回轉(zhuǎn)式鼓風(fēng)機(jī),星型供料器,氣力輸送設(shè)備等產(chǎn)品
本發(fā)明屬于數(shù)據(jù)交換,尤其涉及一種基于網(wǎng)閘的文件交換的方法及系統(tǒng)。
背景技術(shù):
網(wǎng)閘技術(shù)的需求來自內(nèi)網(wǎng)與外網(wǎng)數(shù)據(jù)互通的要求,比如政府的電子政務(wù)是對公眾服務(wù),與互聯(lián)網(wǎng)連通,而內(nèi)網(wǎng)的政府辦公網(wǎng)絡(luò),由于保密的要求,內(nèi)網(wǎng)若與外網(wǎng)連通,則面臨來自公網(wǎng)的各種威脅。安全專家給出的建議是:由于目前的安全技術(shù),無論防火墻、UTM等防護(hù)系統(tǒng)都不能保證攻擊的一定阻斷,入侵檢測等監(jiān)控系統(tǒng)也不能保證入侵行為完全捕獲,所以最安全的方式就是物理的分開,所以在公安部的技術(shù)要求中,要求電子政務(wù)的內(nèi)、外網(wǎng)絡(luò)之間“物理隔離”。沒有連接,來自外網(wǎng)對內(nèi)網(wǎng)的攻擊就無從談起。
但是,網(wǎng)絡(luò)的物理隔離,給數(shù)據(jù)的通訊帶來很多不便,比如工作人員出差只能接入互聯(lián)網(wǎng),要取得內(nèi)網(wǎng)的文件就沒有辦法,只能讓辦公室的人把文件放在外網(wǎng)上。另外,內(nèi)網(wǎng)辦公系統(tǒng)需要從外網(wǎng)提供的統(tǒng)計數(shù)據(jù),由于服務(wù)隔離,數(shù)據(jù)的獲取也很困難。因此,隨著網(wǎng)絡(luò)業(yè)務(wù)的日益成熟,數(shù)據(jù)交換的需求提議強(qiáng)烈。
綜上所述,現(xiàn)有技術(shù)存在的問題是:
網(wǎng)閘和應(yīng)用系統(tǒng)之間不能通過TCP進(jìn)行交流,只能將數(shù)據(jù)落地成文件,應(yīng)用系統(tǒng)直接和網(wǎng)閘打交道會很不方便。
而如果內(nèi)網(wǎng)辦公系統(tǒng)需要向外網(wǎng)提供統(tǒng)計數(shù)據(jù)等服務(wù),由于協(xié)議的不支持,服務(wù)被隔離,數(shù)據(jù)的獲取很困難。而且,現(xiàn)有技術(shù)中,沒有通過與發(fā)送節(jié)點(diǎn)和接收節(jié)點(diǎn)連接,實(shí)現(xiàn)TCP協(xié)議跨網(wǎng)閘的數(shù)據(jù)傳輸。
本發(fā)明通過發(fā)送節(jié)點(diǎn)和接收節(jié)點(diǎn)處理與網(wǎng)閘之間的數(shù)據(jù)交換的工作,并對外開放使用TCP進(jìn)行數(shù)據(jù)傳輸,使的應(yīng)用系統(tǒng)可以方便的處理自己的業(yè)務(wù)邏輯而不用考慮網(wǎng)閘的數(shù)據(jù)交換的問題。同時在TCP基礎(chǔ)上可以實(shí)現(xiàn)支持HTTP等協(xié)議,更加方便面向服務(wù)的應(yīng)用系統(tǒng)。
技術(shù)實(shí)現(xiàn)要素:
針對現(xiàn)有技術(shù)存在的問題,本發(fā)明提供了一種基于網(wǎng)閘的文件交換的方法及系統(tǒng),
本發(fā)明是這樣實(shí)現(xiàn)的,一種基于網(wǎng)閘的文件交換方法包括:
步驟一:使用TCP協(xié)議連接發(fā)送節(jié)點(diǎn)監(jiān)聽的IP和端口,將數(shù)據(jù)發(fā)送給發(fā)送節(jié)點(diǎn);
步驟二:將收到的數(shù)據(jù)分割成固定長度的塊,并編號,然后打包為特定格式的數(shù)據(jù)文件,并生成額外的控制信息保存到元信息文件中,將打包好的數(shù)據(jù)文件和元信息文件發(fā)送給網(wǎng)閘;
步驟三:網(wǎng)閘通過擺渡的形式將發(fā)送節(jié)點(diǎn)發(fā)來的文件發(fā)送到接收節(jié)點(diǎn)的指定文件夾;
步驟四:接收節(jié)點(diǎn)不斷掃描指定目錄,發(fā)現(xiàn)目錄中有新文件,則開始處理新文件;元信息文件不存在,則不做任何處理,等待下一次掃描;
步驟五:接收節(jié)點(diǎn)將數(shù)據(jù)還原后,通過讀取配置文件獲得目標(biāo)應(yīng)用系統(tǒng)的配置信息,然后連接目標(biāo)應(yīng)用系統(tǒng),連接成功后,通過建立好的TCP連接將數(shù)據(jù)發(fā)送至應(yīng)用系統(tǒng)。
進(jìn)一步,步驟四具體包括:
接收節(jié)點(diǎn)不斷掃描指定目錄,發(fā)現(xiàn)目錄中有新文件,則開始處理新文件;如果元信息文件不存在,則不做任何處理,等待下一次掃描;如果元信息文件存在,則讀取元信息文件獲取數(shù)據(jù)文件的信息。然后判斷是否存在數(shù)據(jù)文件,如果數(shù)據(jù)文件不存在,則不做處理,等待下次掃描;如果數(shù)據(jù)文件存在,但是和元信息文件的信息不匹配,說明數(shù)據(jù)文件還沒傳輸完畢,則不做處理,等待下次掃描;如果數(shù)據(jù)文件和元信息匹配,則將數(shù)據(jù)文件解包還原。還原過程中會驗(yàn)證文件傳輸?shù)耐暾院蜁r序性。
進(jìn)一步,步驟五中,如果連接失敗,則重試,重試3次均失敗后,將數(shù)據(jù)文件和元信息文件進(jìn)行備份,用于目標(biāo)系統(tǒng)恢復(fù)后再使用,并記錄錯誤日志。
本發(fā)明的另一目的在于提供一種實(shí)現(xiàn)基于網(wǎng)閘的文件交換方法的計算機(jī)程序。
本發(fā)明的另一目的在于提供一種實(shí)現(xiàn)所述基于網(wǎng)閘的文件交換方法的信息數(shù)據(jù)處理終端。
本發(fā)明的另一目的在于提供一種計算機(jī)可讀存儲介質(zhì),包括指令,當(dāng)其在計算機(jī)上運(yùn)行時,使得計算機(jī)執(zhí)行所述的基于網(wǎng)閘的文件交換方法。
本發(fā)明的另一目的在于提供一種實(shí)現(xiàn)所述基于網(wǎng)閘的文件交換方法的基于網(wǎng)閘的文件交換的系統(tǒng),所述基于網(wǎng)閘的文件交換系統(tǒng)包括:
應(yīng)用系統(tǒng)、發(fā)送節(jié)點(diǎn)、網(wǎng)閘、接收節(jié)點(diǎn);
應(yīng)用系統(tǒng):利用TCP與發(fā)送節(jié)點(diǎn)、接收節(jié)點(diǎn)連接;用于將數(shù)據(jù)發(fā)送給發(fā)送節(jié)點(diǎn),從接收節(jié)點(diǎn)接收數(shù)據(jù),在網(wǎng)閘之間“透明”地實(shí)現(xiàn)數(shù)據(jù)交換;
發(fā)送節(jié)點(diǎn):與應(yīng)用系統(tǒng)、網(wǎng)閘連接;用于接收系統(tǒng)發(fā)送的數(shù)據(jù),并將數(shù)據(jù)打包為特定的格式文件,并生成額外的控制信息保存到文件中,將文件交給網(wǎng)閘;
網(wǎng)閘:與發(fā)送節(jié)點(diǎn)、接收節(jié)點(diǎn)連接;用于接收發(fā)送節(jié)點(diǎn)傳送的文件,并通過擺渡的形式將文件發(fā)送到接收節(jié)點(diǎn)的指定文件夾;
接收節(jié)點(diǎn):與網(wǎng)閘、應(yīng)用系統(tǒng)連接;用于掃描網(wǎng)閘發(fā)送到指定目錄的文件,讀取控制信息,獲取特定格式文件的元信息,保證文件傳輸?shù)耐暾院蜁r序性,并將特定格式的文件內(nèi)容還原為數(shù)據(jù),最后將數(shù)據(jù)發(fā)送給應(yīng)用系統(tǒng)。
進(jìn)一步,所述網(wǎng)閘包括:
網(wǎng)閘為內(nèi)外網(wǎng)之間的隔離設(shè)備,網(wǎng)閘內(nèi)嵌系統(tǒng)在物理隔離的情況下進(jìn)行數(shù)據(jù)交換。
綜上所述,本發(fā)明的優(yōu)點(diǎn)及積極效果為:
本發(fā)明通過與發(fā)送節(jié)點(diǎn)和接收節(jié)點(diǎn)連接,實(shí)現(xiàn)TCP協(xié)議跨網(wǎng)閘的數(shù)據(jù)傳輸;基于TCP協(xié)議的數(shù)據(jù)交換,使內(nèi)外網(wǎng)兩側(cè)文件交換感覺不到網(wǎng)閘的存在,“透明”地實(shí)現(xiàn)數(shù)據(jù)交換,保證文件傳輸過程中的完整性和時序性;應(yīng)用系統(tǒng)不用考慮網(wǎng)閘的存在,只需要跟發(fā)送節(jié)點(diǎn)和接收節(jié)點(diǎn)打交道就能通過TCP協(xié)議傳輸數(shù)據(jù),為應(yīng)用系統(tǒng)對外服務(wù)提供一種可能。
而如果應(yīng)用系統(tǒng)直接和網(wǎng)閘打交道,則應(yīng)用系統(tǒng)需要做很大的改動將數(shù)據(jù)落地為文件,然后通過網(wǎng)閘交換文件,無疑增加了應(yīng)用系統(tǒng)開發(fā)和使用的難度。通過本發(fā)明可以有效地解耦,讓應(yīng)用系統(tǒng)不用考慮網(wǎng)閘的存在,只需要專注原有業(yè)務(wù)就行。
附圖說明
圖1是本發(fā)明實(shí)施例提供的基于網(wǎng)閘的文件交換系統(tǒng)結(jié)構(gòu)示意圖。
圖2是本發(fā)明實(shí)施例提供的文件交換系統(tǒng)工作流程圖。
圖中:1、應(yīng)用系統(tǒng);2、發(fā)送節(jié)點(diǎn);3、網(wǎng)閘;4、接收節(jié)點(diǎn)。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
內(nèi)網(wǎng)辦公系統(tǒng)需要從外網(wǎng)提供的統(tǒng)計數(shù)據(jù),由于服務(wù)隔離,數(shù)據(jù)的獲取很困難。
而且,現(xiàn)有技術(shù)中,沒有通過與發(fā)送節(jié)點(diǎn)和接收節(jié)點(diǎn)連接,實(shí)現(xiàn)TCP協(xié)議跨網(wǎng)閘的數(shù)據(jù)傳輸。
為解決上述技術(shù)問題,下面結(jié)合具體方案對本發(fā)明的應(yīng)用原理作詳細(xì)描述。
如圖1所示,本發(fā)明實(shí)施例提供的基于網(wǎng)閘的文件交換系統(tǒng)包括:
應(yīng)用系統(tǒng)1、發(fā)送節(jié)點(diǎn)2、網(wǎng)閘3、接收節(jié)點(diǎn)4。
應(yīng)用系統(tǒng)1:利用TCP與發(fā)送節(jié)點(diǎn)2、接收節(jié)點(diǎn)4連接;用于將數(shù)據(jù)發(fā)送給發(fā)送節(jié)點(diǎn)2,從接收節(jié)點(diǎn)4接收數(shù)據(jù),在網(wǎng)閘3之間“透明”地實(shí)現(xiàn)數(shù)據(jù)交換。
發(fā)送節(jié)點(diǎn)2:與應(yīng)用系統(tǒng)1、網(wǎng)閘3連接;用于接收應(yīng)用系統(tǒng)1發(fā)送的數(shù)據(jù),并將數(shù)據(jù)打包為特定的格式文件,并生成額外的控制信息保存到文件中,將文件傳送給網(wǎng)閘3。
網(wǎng)閘3:與發(fā)送節(jié)點(diǎn)2、接收節(jié)點(diǎn)4連接;用于接收發(fā)送節(jié)點(diǎn)2傳送的文件,并通過擺渡的形式將文件發(fā)送到接收節(jié)點(diǎn)4的指定文件夾。
接收節(jié)點(diǎn)4:與網(wǎng)閘3、應(yīng)用系統(tǒng)1連接;用于掃描網(wǎng)閘3發(fā)送到指定目錄的文件,讀取控制信息,獲取特定格式文件的元信息,保證文件傳輸?shù)耐暾院蜁r序性,并將特定格式的文件內(nèi)容還原為數(shù)據(jù),并將數(shù)據(jù)發(fā)送給應(yīng)用系統(tǒng)1。
本發(fā)明實(shí)施例提供的網(wǎng)閘3包括:
網(wǎng)閘3為內(nèi)外網(wǎng)之間的隔離設(shè)備,網(wǎng)閘3內(nèi)嵌系統(tǒng)可在物理隔離的情況下實(shí)現(xiàn)數(shù)據(jù)交換。
如圖2所示,本發(fā)明實(shí)施例提供的基于網(wǎng)閘的文件交換方法包括:在網(wǎng)閘兩側(cè)各部署一個交換節(jié)點(diǎn),通過定時掃描指定的目錄,發(fā)送和接收網(wǎng)閘兩側(cè)的文件,實(shí)現(xiàn)了內(nèi)外網(wǎng)之間文件交換。
具體包括:
S101:應(yīng)用系統(tǒng)通過TCP將數(shù)據(jù)發(fā)送給發(fā)送節(jié)點(diǎn)。
S102:發(fā)送節(jié)點(diǎn)將數(shù)據(jù)打包為特定的格式文件,并生成額外的控制信息保存到文件中,將文件發(fā)送給網(wǎng)閘。
S103:網(wǎng)閘將發(fā)送節(jié)點(diǎn)發(fā)送的文件通過擺渡的形式將文件發(fā)送到接收節(jié)點(diǎn)的指定文件夾。
S104:接收節(jié)點(diǎn)掃描網(wǎng)閘發(fā)送至指定目錄的文件,讀取控制信息,獲取特定格式文件的元信息,保證文件傳輸?shù)耐暾院蜁r序性,并將特定格式的文件內(nèi)容還原為數(shù)據(jù)。
S105:接收節(jié)點(diǎn)將還原后的數(shù)據(jù)傳送至應(yīng)用系統(tǒng)。
步驟S104具體包括:
接收節(jié)點(diǎn)不斷掃描指定目錄,發(fā)現(xiàn)目錄中有新文件,則開始處理新文件;如果元信息文件不存在,則不做任何處理,等待下一次掃描;如果元信息文件存在,則讀取元信息文件獲取數(shù)據(jù)文件的信息。然后判斷是否存在數(shù)據(jù)文件,如果數(shù)據(jù)文件不存在,則不做處理,等待下次掃描;如果數(shù)據(jù)文件存在,但是和元信息文件的信息不匹配,說明數(shù)據(jù)文件還沒傳輸完畢,則不做處理,等待下次掃描;如果數(shù)據(jù)文件和元信息匹配,則將數(shù)據(jù)文件解包還原。還原過程中會驗(yàn)證文件傳輸?shù)耐暾院蜁r序性。
步驟S105中接收節(jié)點(diǎn)將數(shù)據(jù)還原后,通過讀取配置文件獲得目標(biāo)應(yīng)用系統(tǒng)的配置信息,然后連接目標(biāo)應(yīng)用系統(tǒng),連接成功后,通過建立好的TCP連接將數(shù)據(jù)發(fā)送至應(yīng)用系統(tǒng)。
如果連接失敗,則重試,重試3次均失敗后,將數(shù)據(jù)文件和元信息文件進(jìn)行備份,用于目標(biāo)系統(tǒng)恢復(fù)后再使用,并記錄錯誤日志。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
來源:中關(guān)村在線 更新時間:2012-04-15
作為保證不同安全級別網(wǎng)絡(luò)間的高安全隔離與實(shí)時數(shù)據(jù)交換的安全設(shè)備,安全隔離網(wǎng)閘已經(jīng)在公安、稅務(wù)等政府行業(yè)得到廣泛應(yīng)用,另外,在電力、煤炭、鋼鐵等能源行業(yè)和一些制造型企業(yè)也開始大量應(yīng)用。鑒于廣大用戶對網(wǎng)閘安全隔離功能的信賴,之前不敢連的網(wǎng)絡(luò)也通過安全隔離網(wǎng)閘連接起來了,同時,用戶還寄希望于安全隔離網(wǎng)閘能對數(shù)據(jù)內(nèi)容進(jìn)行高安全的檢查控制。
在保證安全的前提下,安全隔離網(wǎng)閘廠商也在盡力地滿足著用戶對安全隔離網(wǎng)閘支持更多網(wǎng)絡(luò)應(yīng)用的需求,且已經(jīng)取得了顯著的成效。當(dāng)前,安全隔離網(wǎng)閘已由最初只支持文件交換功能(工作原理是模擬人工拷盤),發(fā)展到具有數(shù)據(jù)庫同步、數(shù)據(jù)庫訪問、郵件訪問、安全Web訪問、FTP訪問等多種功能,能對HTTP、FTP、SMTP、POP3等通用協(xié)議進(jìn)行內(nèi)容檢查,但是目前絕大部分用戶的應(yīng)用采用的都是自定義格式的私有協(xié)議,如果沒有對安全隔離網(wǎng)閘實(shí)施二次開發(fā),就無法對交換的數(shù)據(jù)內(nèi)容進(jìn)行過濾。這是因?yàn)樗接袇f(xié)議的數(shù)據(jù)格式、數(shù)據(jù)內(nèi)容等都沒有公開,導(dǎo)致安全隔離網(wǎng)閘廠商無法定義出相應(yīng)的數(shù)據(jù)內(nèi)容檢查規(guī)則,也就無法實(shí)現(xiàn)高安全的隔離交換控制。
為了應(yīng)對通用安全隔離網(wǎng)閘無法對私有協(xié)議進(jìn)行數(shù)據(jù)內(nèi)容檢查的問題,安全隔離網(wǎng)閘廠商、用戶以及相關(guān)的主管部門都在積極尋找相應(yīng)對策,目前,主要有以下兩種技術(shù)路線。
其一,重點(diǎn)實(shí)現(xiàn)電路級數(shù)據(jù)單向傳輸,并強(qiáng)化用戶認(rèn)證功能。如通過國家電力調(diào)度通信中心的檢測認(rèn)證,在電力行業(yè)廣泛應(yīng)用的“單向橫向安全隔離裝置”,以及國家保密局正在認(rèn)證,可以部署在電子政務(wù)中的“安全隔離與信息單向?qū)胂到y(tǒng)”等,但部署這些單向安全隔離網(wǎng)閘時,也需要將應(yīng)用系統(tǒng)進(jìn)行改造,另外,這些單向安全隔離網(wǎng)閘應(yīng)用擴(kuò)展能力差,只適合在特定行業(yè)內(nèi)強(qiáng)制推行,無法應(yīng)用于雙向數(shù)據(jù)交換、應(yīng)用復(fù)雜的網(wǎng)絡(luò)環(huán)境。
技術(shù)路線之二則是與用戶的具體應(yīng)用相結(jié)合,在雙向數(shù)據(jù)交換的網(wǎng)絡(luò)環(huán)境下實(shí)現(xiàn)對交換數(shù)據(jù)內(nèi)容的檢查,在這方面,廣大安全隔離網(wǎng)閘廠商也在不斷進(jìn)行研發(fā)投入。
當(dāng)前,由于絕大部分用戶的應(yīng)用都需要進(jìn)行雙向數(shù)據(jù)傳輸,因此第二種技術(shù)路線將是安全隔離網(wǎng)閘發(fā)展的必由之路,按照第一種技術(shù)路線發(fā)展的單向安全隔離網(wǎng)閘,則會發(fā)展成為一類獨(dú)立的安全產(chǎn)品。
下面,我們就以聯(lián)想網(wǎng)御在第二種技術(shù)路線方面的研發(fā)探索為例,通過聯(lián)想網(wǎng)御對私有協(xié)議的數(shù)據(jù)內(nèi)容檢查解決方案,具體說明安全隔離網(wǎng)閘與用戶的具體應(yīng)用相結(jié)合是如何方便靈活地實(shí)現(xiàn)的。
科學(xué)的體系架構(gòu)
a) 科學(xué)的系統(tǒng)架構(gòu)
聯(lián)想網(wǎng)御安全隔離網(wǎng)閘的系統(tǒng)硬件平臺由內(nèi)網(wǎng)主機(jī)系統(tǒng)、外網(wǎng)主機(jī)系統(tǒng)、隔離交換矩陣三部分組成:內(nèi)網(wǎng)/外網(wǎng)主機(jī)系統(tǒng)分別具有獨(dú)立的運(yùn)算單元和存儲單元,并以聯(lián)想網(wǎng)御自主知識產(chǎn)權(quán)的VSP (Versatile Security Platform,通用安全平臺)作為操作系統(tǒng);隔離交換矩陣基于LeadASIC專用芯片技術(shù)及相應(yīng)的時分多路隔離交換邏輯電路,不受主機(jī)系統(tǒng)控制,能獨(dú)立完成應(yīng)用數(shù)據(jù)的封包、擺渡、拆包,從而實(shí)現(xiàn)內(nèi)外網(wǎng)之間的數(shù)據(jù)隔離交換。主機(jī)系統(tǒng)對交換數(shù)據(jù)的檢查流程如下圖所示。安全隔離網(wǎng)閘在完成常規(guī)的IP地址、協(xié)議類型、協(xié)議分析等檢查后,還能在數(shù)據(jù)通過隔離交換矩陣封包之前進(jìn)行數(shù)據(jù)內(nèi)容的檢查。
聯(lián)想網(wǎng)御安全隔離網(wǎng)閘數(shù)據(jù)檢查流程圖
b) 檢查框架
VSP操作系統(tǒng)中集成的USE(Uniform Security Engine,統(tǒng)一安全引擎)完成了協(xié)議終結(jié)、應(yīng)用內(nèi)容的還原和檢查。聯(lián)想網(wǎng)御安全隔離網(wǎng)閘以自定義的、開放的ACI(Application Checking Interface,應(yīng)用檢查接口)為基礎(chǔ),不但支持內(nèi)置的、面向通用應(yīng)用協(xié)議(如HTTP、FTP等)的多種檢查模塊,還支持內(nèi)容檢查模塊的擴(kuò)展。用戶可以根據(jù)需要來自行開發(fā)內(nèi)容檢查模塊,并通過安全隔離網(wǎng)閘的WEB管理界面上傳至VSP操作系統(tǒng),通過使用內(nèi)容檢查模塊,用戶可實(shí)現(xiàn)對基于私有協(xié)議的應(yīng)用內(nèi)容的數(shù)據(jù)格式、完整性、關(guān)鍵字、內(nèi)容安全的檢查。
聯(lián)想網(wǎng)御安全隔離網(wǎng)閘內(nèi)容檢查框架圖
清晰的分工合作
在研發(fā)上,考慮到只有用戶對私有協(xié)議的數(shù)據(jù)格式、數(shù)據(jù)內(nèi)容等信息最清楚,聯(lián)想網(wǎng)御因此提出“分工負(fù)責(zé),合作開發(fā)”的研發(fā)思路。
“分工負(fù)責(zé)”指的是用戶(或用戶指定的軟件開發(fā)商)負(fù)責(zé)內(nèi)容檢查模塊的開發(fā),聯(lián)想網(wǎng)御則負(fù)責(zé)在安全隔離網(wǎng)閘上提供ACI應(yīng)用檢查接口和豐富的開發(fā)支撐文檔。
“合作開發(fā)”指的是聯(lián)想網(wǎng)御將積極配合用戶進(jìn)行相應(yīng)的檢查模塊調(diào)試,使用戶開發(fā)的檢查模塊能在安全隔離網(wǎng)閘上發(fā)揮效用。
方便的調(diào)用方式
對于加載的多個內(nèi)容檢查模塊,聯(lián)想網(wǎng)御安全隔離網(wǎng)閘可以有選擇性地在安全規(guī)則中調(diào)用,并且可以對具體內(nèi)容檢查模塊進(jìn)行檢查內(nèi)容的啟用或禁止,如圖三和圖四所示。
聯(lián)想網(wǎng)御安全隔離網(wǎng)閘管理界面的安全規(guī)則截圖
聯(lián)想網(wǎng)御安全隔離網(wǎng)閘管理界面的檢查內(nèi)容定義截圖
豐富的文檔支撐
為了方便用戶進(jìn)行內(nèi)容檢查模塊的開發(fā),聯(lián)想網(wǎng)御提供了ACI軟件開發(fā)包。此開發(fā)包中的內(nèi)容包括:模塊與安全隔離網(wǎng)閘之間的非標(biāo)準(zhǔn)統(tǒng)一接口開發(fā)說明文檔,包括應(yīng)用編程接口的庫、頭、幫助、例子等;生成檢查模塊的說明文檔,包括模塊開發(fā)工具的庫、頭、幫助、例子;強(qiáng)認(rèn)證、加密開發(fā)說明文檔,基于此文檔開發(fā)可實(shí)現(xiàn)主機(jī)與安全隔離網(wǎng)閘間的用戶身份驗(yàn)證、用戶訪問權(quán)限控制和數(shù)據(jù)傳輸加密功能。
在安全隔離網(wǎng)閘產(chǎn)品與用戶具體應(yīng)用相結(jié)合方面,以成熟的理論體系為前提,聯(lián)想網(wǎng)御已經(jīng)與某氣象局、某廣播電臺、某煤礦等多個行業(yè)客戶共同進(jìn)行了成功的實(shí)踐。
物理隔離網(wǎng)閘是使用帶有多種控制功能的固態(tài)開關(guān)讀寫介質(zhì)連接兩個獨(dú)立主機(jī)系統(tǒng)的信息安全設(shè)備。由于物理隔離網(wǎng)閘所連接的兩個獨(dú)立主機(jī)系統(tǒng)之間,不存在通信的物理連接、邏輯連接、信息傳輸命令、信息傳輸協(xié)議,不存在依據(jù)協(xié)議的信息包轉(zhuǎn)發(fā),只有數(shù)據(jù)文件的無協(xié)議“擺渡”,且對固態(tài)存儲介質(zhì)只有“讀”和“寫”兩個命令。所以,物理隔離網(wǎng)閘從物理上隔離、阻斷了具有潛在攻擊可能的一切連接,使“黑客”無法入侵、無法攻擊、無法破壞,實(shí)現(xiàn)了真正的安全。
網(wǎng)閘是在兩個不同安全域之間,通過協(xié)議轉(zhuǎn)換的手段,以信息擺渡的方式實(shí)現(xiàn)數(shù)據(jù)交換,且只有被系統(tǒng)明確要求傳輸?shù)男畔⒉趴梢酝ㄟ^。其信息流一般為通用應(yīng)用服務(wù)。
注:網(wǎng)閘的“閘”字取自于船閘的意思,在信息擺渡的過程中內(nèi)外網(wǎng)(上下游)從未發(fā)生物理連接,所以網(wǎng)閘產(chǎn)品必須要有至少兩套主機(jī)和一個物理隔離部件才可完成物理隔離任務(wù)。
隔離網(wǎng)閘的一個基本特征,就是內(nèi)網(wǎng)與外網(wǎng)永遠(yuǎn)不連接,內(nèi)網(wǎng)和外網(wǎng)在同一時間最多只有一個同隔離設(shè)備建立數(shù)據(jù)連接(可以是兩個都不連接,但不能兩個都連接)。
目前網(wǎng)絡(luò)威脅中相當(dāng)大的一部分來自與瀏覽器威脅,網(wǎng)閘對這種威脅有用嗎?以前不久的圖片文件漏洞來說,網(wǎng)閘是不會對這種應(yīng)用層數(shù)據(jù)進(jìn)行過濾的,那么,威脅依然存在。而對于提供對外服務(wù)的網(wǎng)絡(luò),對其中應(yīng)用進(jìn)行攻擊的例子大多是構(gòu)造一些正常(看起來)的數(shù)據(jù)包,這些漏洞,都是針對應(yīng)用層的,網(wǎng)閘束手無策。所以,“真正的安全”是不可能的,沒有絕對的安全!
網(wǎng)閘的結(jié)構(gòu)一般都采用2+1:內(nèi)機(jī)+外機(jī)+不可編程硬件。早期網(wǎng)閘的交換模塊以電子開關(guān)的形式實(shí)現(xiàn)物理上的隔離,而電子開關(guān)由于切換速率問題,無法滿足實(shí)時數(shù)據(jù)交換需求,已經(jīng)被邏輯開關(guān)取而代之。 從嚴(yán)格意義上說,邏輯開關(guān)只是實(shí)現(xiàn)邏輯上的隔離,而不是物理上的。
私有協(xié)議就是交換模塊傳輸數(shù)據(jù)的硬件讀寫協(xié)議,不同廠家的接口不同,如SCSI,1394等
1.工作模式
網(wǎng)閘的數(shù)據(jù)交換都是基于代理實(shí)現(xiàn)的。。
網(wǎng)閘按工作方式可以分為主動模式和被動模式。在主動模式下,網(wǎng)閘作為客戶端,往網(wǎng)絡(luò)中的服務(wù)器上讀寫數(shù)據(jù);在被動模式下,網(wǎng)閘充當(dāng)服務(wù)器的角色,在本地打開監(jiān)聽端口,,接收外界的數(shù)據(jù)。從安全上來說,主動模式遠(yuǎn)大于被動模式,但應(yīng)用和性能較差。
2.數(shù)據(jù)交換流程
以下是被動工作模式大概的一個數(shù)據(jù)交換過程:
外網(wǎng)接收數(shù)據(jù)包-〉檢查包頭信息-〉拆除包頭信息-〉提取并檢查應(yīng)用層數(shù)據(jù)-〉按私有協(xié)議封裝數(shù)據(jù)-〉傳輸?shù)絻?nèi)網(wǎng)-〉封裝成網(wǎng)絡(luò)協(xié)議包-〉傳輸?shù)絻?nèi)網(wǎng)接收端
保證數(shù)據(jù)傳輸手段主要有以下兩種:
協(xié)議阻斷:網(wǎng)閘在傳輸接收到的數(shù)據(jù)包時,需拆除協(xié)議包頭信息,然后將應(yīng)用層數(shù)據(jù)按私有協(xié)議重新封裝分片,這樣能保證所有網(wǎng)絡(luò)攻擊只能到達(dá)外網(wǎng)。
專有協(xié)議檢測模塊:網(wǎng)閘的數(shù)據(jù)傳輸都是基于應(yīng)用層代理,對于支持的應(yīng)用層協(xié)議,都有相應(yīng)的傳輸模塊。每個模塊只處理對應(yīng)的應(yīng)用層數(shù)據(jù)請求,且根據(jù)協(xié)議的特性對數(shù)據(jù)本身進(jìn)行內(nèi)容檢測、過濾等操作,保證數(shù)據(jù)的安全性。
從網(wǎng)閘的系統(tǒng)架構(gòu)以及工作模式可看出,它的性能是比不上防火墻的,包括吞吐,延時,尤其是并發(fā)數(shù)。如果有哪個廠家宣稱自己的產(chǎn)品能達(dá)到線速,那簡直就是告訴別人他家做的不是網(wǎng)閘。
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)網(wǎng)絡(luò)
技術(shù)領(lǐng)域:
,具體涉及通過http實(shí)現(xiàn)跨越網(wǎng)閘進(jìn)行Socket保持連接通信的方法及系統(tǒng)。
背景技術(shù):
:在日常工作中有時會遇到需要將原本在網(wǎng)閘內(nèi)的通過Socket連接的通信業(yè)務(wù),需要改進(jìn)為可以與互聯(lián)網(wǎng)上其他用戶進(jìn)行交互的需求。通常情況下Socket連接就是TCP連接,Socket連接一旦建立,通信雙方即可開始相互發(fā)送數(shù)據(jù)內(nèi)容,直到雙方連接斷開。但在實(shí)際網(wǎng)絡(luò)應(yīng)用中,客戶端到服務(wù)器之間的通信往往需要穿越多個中間節(jié)點(diǎn),例如路由器、網(wǎng)關(guān)、防火墻等,大部分防火墻默認(rèn)會關(guān)閉長時間處于非活躍狀態(tài)的連接而導(dǎo)致Socket連接斷連,因此需要通過輪詢告訴網(wǎng)絡(luò),該連接處于活躍狀態(tài)。而http連接使用的是“請求—響應(yīng)”的方式,不僅在請求時需要先建立連接,而且需要客戶端向服務(wù)器發(fā)出請求后,服務(wù)器端才能回復(fù)數(shù)據(jù)。很多情況下,需要服務(wù)器端主動向客戶端推送數(shù)據(jù),保持客戶端與服務(wù)器數(shù)據(jù)的實(shí)時與同步。此時若雙方建立的是Socket連接,服務(wù)器就可以直接將數(shù)據(jù)傳送給客戶端;若雙方建立的是http連接,則服務(wù)器需要等到客戶端發(fā)送一次請求后才能將數(shù)據(jù)傳回給客戶端。因此在Socket通信中實(shí)現(xiàn)http進(jìn)行轉(zhuǎn)發(fā)具有十分大的困難。目前,通過http進(jìn)行Socket通信的方法并不多,隨著業(yè)務(wù)的需要,更多的系統(tǒng)切實(shí)的需要這種技術(shù)來完成特定的業(yè)務(wù)需要。技術(shù)實(shí)現(xiàn)要素:鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的通過http實(shí)現(xiàn)跨越網(wǎng)閘進(jìn)行Socket保持連接通信的方法及系統(tǒng),目的在于提供一種能夠既實(shí)現(xiàn)通過http轉(zhuǎn)發(fā)請求實(shí)現(xiàn)跨越網(wǎng)閘、防火墻進(jìn)行Socket通信的機(jī)制,又能保持整個通訊過程中Socket始終連接不斷。依據(jù)本發(fā)明的一個方面,提供了通過http實(shí)現(xiàn)跨越網(wǎng)閘進(jìn)行Socket保持連接通信的方法,包括以下步驟:步驟(1)、第一服務(wù)器的第一端口接收客戶端發(fā)起的請求,將請求數(shù)據(jù)包以Socket通信的方式發(fā)送給第一服務(wù)器的第二端口;步驟(2)、所述第二端口接收到所述請求數(shù)據(jù)包后,建立一SocketChannel使得所述第二端口與第一服務(wù)器的第三端口之間建立不斷開的連接通道;步驟(3)、所述第三端口通過所述連接通道接收到所述請求數(shù)據(jù)包后,建立與第二服務(wù)器進(jìn)行通信的http請求,將所述第二端口發(fā)送過來的所述請求數(shù)據(jù)包通過所述http請求發(fā)送給所述第二服務(wù)器的第四端口;步驟(4)、所述第二服務(wù)器上已經(jīng)建立存儲映射表,所述第四端口接收到所述請求數(shù)據(jù)包后,判斷所述客戶端IP地址是否存在于所述存儲映射表中;步驟(5)、如果不存在,則建立一個新的與業(yè)務(wù)服務(wù)器的Socket連接,發(fā)送接收到的所述請求數(shù)據(jù)包,并將該Socket連接信息以IP地址為主鍵存儲在所述存儲映射表中;步驟(6)、如果存在,則通過所述IP地址從所述存儲映射表中取得已經(jīng)存在的Socket連接,通過該Socket連接發(fā)送接收到的所述請求數(shù)據(jù)包;步驟(7)、所述業(yè)務(wù)服務(wù)器通過原路徑的通信方式將處理結(jié)果數(shù)據(jù)包返回到所述客戶端。進(jìn)一步地,所述步驟(1)和步驟(2)之間還包括:所述第二端口對客戶端請求進(jìn)行監(jiān)聽,一旦監(jiān)聽到客戶端請求連接后,啟動線程進(jìn)行Socket通信。進(jìn)一步地,所述步驟(2)中具體包括:所述第二端口接收到所述請求數(shù)據(jù)包后,發(fā)起一個與第一服務(wù)器的第三端口進(jìn)行通信的新的Socket連接;使用NIO流建立一個SocketChannel模擬Socket通信,所述第二端口與第一服務(wù)器的第三端口之間建立不斷開的連接通道;將所述第二端口通過Socket通信發(fā)送的所述請求數(shù)據(jù)包和與所述第三端口進(jìn)行通信的所述Socket連接進(jìn)行綁定。進(jìn)一步地,所述步驟(4)中的所述存儲映射表,通過客戶端IP地址作為主鍵,存儲不同的Socket連接信息。更進(jìn)一步地,所述步驟(7)中具體包括:所述業(yè)務(wù)服務(wù)器通過與所述第四端口之間建立的Socket連接進(jìn)行通信,將處理結(jié)果數(shù)據(jù)包返回到所述第四端口;所述第四端口接收到所述處理結(jié)果數(shù)據(jù)包后,通過http協(xié)議回應(yīng)所述第三端口的http請求,發(fā)送所述處理結(jié)果數(shù)據(jù)包;所述第三端口接收到所述處理結(jié)果數(shù)據(jù)包后,通過所述SocketChannel建立的所述連接通道,將所述處理結(jié)果數(shù)據(jù)包以Socket通信的方式發(fā)送給所述第二端口;所述第二端口將所述處理結(jié)果數(shù)據(jù)包通過與所述第一端口之間建立的Socket連接返回到客戶端。依據(jù)本發(fā)明的另一個方面,提供了通過http實(shí)現(xiàn)跨越網(wǎng)閘進(jìn)行Socket保持連接通信的系統(tǒng),包括:客戶端、第一服務(wù)器、第二服務(wù)器和業(yè)務(wù)服務(wù)器,其中:所述第一服務(wù)器在網(wǎng)閘外,所述客戶端將請求數(shù)據(jù)包通過Socket方式發(fā)送給所述第一服務(wù)器,所述第一服務(wù)器將來自所述第二服務(wù)器的處理結(jié)果數(shù)據(jù)包通過Socket方式發(fā)送給所述客戶端;所述第二服務(wù)器在網(wǎng)閘內(nèi),已經(jīng)建立存儲映射表,所述第一服務(wù)器與所述第二服務(wù)器之間采用http協(xié)議的方式進(jìn)行通信,所述第一服務(wù)器將來自所述客戶端的所述請求數(shù)據(jù)包通過第一端口、第二端口和第三端口以http協(xié)議的方式發(fā)送給所述第二服務(wù)器的第四端口,所述第二端口建立一個SocketChannel模擬Socket通信,所述第二端口與所述第三端口之間建立不斷開的連接通道,所述第二服務(wù)器將來自業(yè)務(wù)服務(wù)器的所述處理結(jié)果數(shù)據(jù)包以http協(xié)議的方式發(fā)送給所述第一服務(wù)器;所述第二服務(wù)器與所述業(yè)務(wù)服務(wù)器之間采用Socket連接,所述第二服務(wù)器將接收的所述請求數(shù)據(jù)包發(fā)送給所述業(yè)務(wù)服務(wù)器,所述業(yè)務(wù)服務(wù)器對所述請求數(shù)據(jù)包進(jìn)行處理,并將處理結(jié)果數(shù)據(jù)包通過Socket方式發(fā)送給所述第二服務(wù)器。進(jìn)一步的,還包括一判斷模塊,所述第四端口通過所述http請求接收到所述請求數(shù)據(jù)包后,調(diào)用所述判斷模塊判斷所述客戶端IP地址是否存在于所述存儲映射表中;如果不存在,則建立一個新的與業(yè)務(wù)服務(wù)器的Socket連接,發(fā)送接收到的所述請求數(shù)據(jù)包,并將該Socket連接信息以IP地址為主鍵存儲在所述存儲映射表中;如果存在,則通過所述IP地址從所述存儲映射表中取得已經(jīng)存在的Socket連接,通過該Socket連接發(fā)送接收到的所述請求數(shù)據(jù)包。進(jìn)一步的,所述存儲映射表通過IP地址作為主鍵,存儲不同的Socket連接信息。進(jìn)一步的,還包括一SocketChannel建立模塊,適用于所述第二端口接收到所述請求數(shù)據(jù)包后,發(fā)起一個與第一服務(wù)器的第三端口進(jìn)行通信的新的Socket連接,所述SocketChannel建立模塊使用NIO流建立一個SocketChannel模擬Socket通信,所述第二端口與所述第三端口之間建立不斷開的連接通道,將所述第二端口通過Socket通信發(fā)送的所述請求數(shù)據(jù)包和與所述第三端口進(jìn)行通信的所述Socket連接進(jìn)行綁定。進(jìn)一步的,所述第一服務(wù)器的第一端口、第二端口和第三端口分別為7007、4003和9999端口,所述第二服務(wù)器的第四端口為4002端口。本發(fā)明具有以下有益效果:本發(fā)明提出了通過http實(shí)現(xiàn)跨越網(wǎng)閘進(jìn)行Socket保持連接通信的方法及系統(tǒng),通過該方法與系統(tǒng),可以將原本不跨越防火墻與網(wǎng)閘的客戶端與業(yè)務(wù)服務(wù)器進(jìn)行Socket通信的系統(tǒng),改造為互聯(lián)網(wǎng)上任意客戶端將請求數(shù)據(jù)包通過套接字發(fā)送給指定的網(wǎng)閘外第一服務(wù)器,第一服務(wù)器通過http協(xié)議將數(shù)據(jù)包發(fā)送給網(wǎng)閘內(nèi)的第二服務(wù)器,第二服務(wù)器接收請求后,通過Socket連接發(fā)送給業(yè)務(wù)服務(wù)器,業(yè)務(wù)服務(wù)器再通過Socket連接返回處理結(jié)果,通過同樣的機(jī)制將數(shù)據(jù)包發(fā)送到網(wǎng)閘外的客戶端。此外,通過SocketChannel與存儲映射表使得每次通信都保證了Socket連接的同一性,即連接不中斷。上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式。附圖說明通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。說明書附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。顯而易見地,下面描述的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:圖1示出了根據(jù)本發(fā)明實(shí)施例一的通過http實(shí)現(xiàn)跨越網(wǎng)閘進(jìn)行Socket保持連接通信的方法流程圖;圖2示出了根據(jù)本發(fā)明實(shí)施例二的通過http實(shí)現(xiàn)跨越網(wǎng)閘進(jìn)行Socket保持連接通信的方法流程圖;具體實(shí)施方式下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。需要說明的是,在說明書及權(quán)利要求當(dāng)中使用了某些詞匯來指稱特定組件。本領(lǐng)域技術(shù)人員應(yīng)可以理解,硬件制造商可能會用不同名詞來稱呼同一個組件。本說明書及權(quán)利要求并不以名詞的差異來作為區(qū)分組件的方式,而是以組件在功能上的差異來作為區(qū)分的準(zhǔn)則。如在通篇說明書及權(quán)利要求當(dāng)中所提及的“包含”或“包括”為一開放式用語,故應(yīng)解釋成“包含但不限定于”。說明書后續(xù)描述為實(shí)施本發(fā)明的較佳實(shí)施方式,然所述描述乃以說明書的一般原則為目的,并非用以限定本發(fā)明的范圍。本發(fā)明的保護(hù)范圍當(dāng)視所附權(quán)利要求所界定者為準(zhǔn)。為便于對本發(fā)明實(shí)施例的理解,下面將結(jié)合附圖以幾個具體實(shí)施例為例做進(jìn)一步的解釋說明,且各個附圖并不構(gòu)成對本發(fā)明實(shí)施例的限定。實(shí)施例一、通過http實(shí)現(xiàn)跨越網(wǎng)閘進(jìn)行Socket保持連接通信的方法。圖1為根據(jù)本發(fā)明實(shí)施例一的通過http實(shí)現(xiàn)跨越網(wǎng)閘進(jìn)行Socket保持連接通信的方法流程圖,如圖1所示,本發(fā)明實(shí)施例包括以下步驟:步驟S101:第一服務(wù)器的第一端口接收客戶端發(fā)起的請求,將請求數(shù)據(jù)包以Socket通信的方式發(fā)送給第一服務(wù)器的第二端口;步驟S102:所述第二端口接收到所述請求數(shù)據(jù)包后,建立一SocketChannel使得所述第二端口與第一服務(wù)器的第三端口之間建立不斷開的連接通道;步驟S103:所述第三端口通過所述連接通道接收到所述請求數(shù)據(jù)包后,建立與第二服務(wù)器進(jìn)行通信的http請求,將所述第二端口發(fā)送過來的所述請求數(shù)據(jù)包通過所述http請求發(fā)送給所述第二服務(wù)器的第四端口;步驟S104:所述第二服務(wù)器上已經(jīng)建立存儲映射表,所述第四端口接收到所述請求數(shù)據(jù)包;步驟S105:判斷所述客戶端IP地址是否存在于所述存儲映射表中;如果不存在,則進(jìn)入下一步,反之跳轉(zhuǎn)到步驟S107;步驟S106:則建立一個新的與業(yè)務(wù)服務(wù)器的Socket連接,發(fā)送接收到的所述請求數(shù)據(jù)包,并將該Socket連接信息以IP地址為主鍵存儲在所述存儲映射表中;步驟S107:如果存在,則通過所述IP地址從所述存儲映射表中取得已經(jīng)存在的Socket連接,通過該Socket連接發(fā)送接收到的所述請求數(shù)據(jù)包;步驟S108:所述業(yè)務(wù)服務(wù)器通過原路徑的通信方式將處理結(jié)果數(shù)據(jù)包返回到所述客戶端。本發(fā)明實(shí)施例中優(yōu)選的,所述步驟S101和步驟S102之間還包括:所述第二端口對客戶端請求進(jìn)行監(jiān)聽,一旦監(jiān)聽到客戶端請求連接后,啟動線程進(jìn)行Socket通信。本發(fā)明實(shí)施例中優(yōu)選的,所述步驟S102具體包括:所述第二端口接收到所述請求數(shù)據(jù)包后,發(fā)起一個與第一服務(wù)器的第三端口進(jìn)行通信的新的Socket連接;使用NIO流建立一個SocketChannel模擬Socket通信,所述第二端口與第一服務(wù)器的第三端口之間建立不斷開的連接通道;將所述第二端口通過Socket通信發(fā)送的所述請求數(shù)據(jù)包和與所述第三端口進(jìn)行通信的所述Socket連接進(jìn)行綁定。本發(fā)明實(shí)施例中優(yōu)選的,所述步驟S104中的所述存儲映射表,通過客戶端IP地址作為主鍵,存儲不同的Socket連接信息。本發(fā)明實(shí)施例中優(yōu)選的,所述步驟S107中具體包括:所述業(yè)務(wù)服務(wù)器通過與所述第四端口之間建立的Socket連接進(jìn)行通信,將處理結(jié)果數(shù)據(jù)包返回到所述第四端口;所述第四端口接收到所述處理結(jié)果數(shù)據(jù)包后,通過http協(xié)議回應(yīng)所述第三端口的http請求,發(fā)送所述處理結(jié)果數(shù)據(jù)包;所述第三端口接收到所述處理結(jié)果數(shù)據(jù)包后,通過所述SocketChannel建立的所述連接通道,將所述處理結(jié)果數(shù)據(jù)包以Socket通信的方式發(fā)送給所述第二端口;所述第二端口將所述處理結(jié)果數(shù)據(jù)包通過與所述第一端口之間建立的Socket連接返回到客戶端。本發(fā)明實(shí)施例所述方法實(shí)現(xiàn)了跨越網(wǎng)閘進(jìn)行Socket通信,通過在網(wǎng)閘的內(nèi)外設(shè)有第一服務(wù)器與第二服務(wù)器。第一服務(wù)器在網(wǎng)閘外,主要負(fù)責(zé)接收互聯(lián)網(wǎng)中任意客戶端發(fā)起的業(yè)務(wù)請求,并且使用http協(xié)議將該請求數(shù)據(jù)包發(fā)送到網(wǎng)閘內(nèi)的第二服務(wù)器,因此首先需要所述第一服務(wù)器能夠被運(yùn)行通過網(wǎng)閘進(jìn)行通信。所述第一服務(wù)器將客戶端Socket連接通信的所述請求數(shù)據(jù)包,通過http協(xié)議發(fā)送到網(wǎng)閘內(nèi)所述第二服務(wù)器,需要三個端口,分別為7007即所述第一端口,4003即所述第二端口和9999即所述第三端口。第二服務(wù)器在網(wǎng)閘內(nèi),主要負(fù)責(zé)接收所述第一服務(wù)器發(fā)送的http請求數(shù)據(jù)包,然后通過Socket連接的方式將所述請求數(shù)據(jù)包發(fā)送給業(yè)務(wù)服務(wù)器,業(yè)務(wù)服務(wù)器進(jìn)行處理后,將處理結(jié)果數(shù)據(jù)包通過Socket連接發(fā)送給第二服務(wù)器,第二服務(wù)器以Socket連接方式接收到數(shù)據(jù)后,再通過http請求的形式,發(fā)送到外網(wǎng)的所述第一服務(wù)器。通過http協(xié)議,實(shí)現(xiàn)了跨越網(wǎng)閘,提供了客戶端與業(yè)務(wù)服務(wù)器的通信通道,第二服務(wù)器需要一個端口,為4002即所述第四端口。7007端口即所述第一端口主要是接受互聯(lián)網(wǎng)上任意客戶端的請求,然后將請求數(shù)據(jù)包以Socket通信的方式發(fā)送給4003端口即所述第二端口。4003端口即所述第二端口對客戶端請求進(jìn)行監(jiān)聽,一旦客戶端請求連接,所述4003端口即所述第二端口就啟動線程,進(jìn)行Socket通信。接收到所述請求數(shù)據(jù)包后,首先發(fā)起一個與9999端口即所述第三端口進(jìn)行通信的新的Socket連接,然后使用NIO流,建立一個SocketChannel,使用該類模擬Socket通信,建立4003端口即所述第二端口到9999端口即所述第三端口不斷開的連接通道,非同步,一次只處理一次連接通信,將4003端口即所述第二端口通過Socket通信發(fā)送的數(shù)據(jù)包和與9999端口即所述第三端口進(jìn)行通信的Socket連接進(jìn)行綁定。9999端口即所述第三端口通過所述連接通道,以流的形式接收到Socket通信方式發(fā)送的所述請求數(shù)據(jù)包后,建立與第二服務(wù)器進(jìn)行通信的http請求,將4003端口即所述第二端口發(fā)來的數(shù)據(jù)流通過http請求發(fā)送給第二服務(wù)器的4002端口即所述第四端口。在所述第二服務(wù)器上,已經(jīng)建立了一個HashMap(即所述的存儲映射表),該類中通過IP地址作為主鍵,存儲不同的Socket連接信息。4002端口即所述第四端口通過http請求的形式接受到數(shù)據(jù)流后,首先判斷客戶端IP地址是否存在于HashMap中,如果不存在,則建立一個新的與業(yè)務(wù)服務(wù)器的Socket通信連接,發(fā)送接收到的數(shù)據(jù)流,并將該Socket連接信息以IP地址為主鍵存儲在HashMap中。如果發(fā)送請求的客戶端IP地址已經(jīng)存在于HashMap中,則通過IP地址從HashMap取得已經(jīng)存在的Socket連接,通過該連接發(fā)送接收到的數(shù)據(jù)流。所述HashMap是基于哈希表的Map接口的實(shí)現(xiàn)。此實(shí)現(xiàn)提供所有可選的映射操作,并允許使用null值和null鍵。(除了非同步和允許使用null之外,HashMap類與Hashtable大致相同。)此類不保證映射的順序,特別是它不保證該順序恒久不變。此實(shí)現(xiàn)假定哈希函數(shù)將元素適當(dāng)?shù)胤植荚诟魍爸g,可為基本操作(get和put)提供穩(wěn)定的性能。迭代collection視圖所需的時間與HashMap實(shí)例的“容量”(桶的數(shù)量)及其大?。ㄦI-值映射關(guān)系數(shù))成比例。所以,如果迭代性能很重要,則不要將初始容量設(shè)置得太高(或?qū)⒓虞d因子設(shè)置得太低)。業(yè)務(wù)服務(wù)器通過與4002端口即所述第四端口建立的Socket連接進(jìn)行通信,將處理結(jié)果返回給4002端口即所述第四端口,4002端口即所述第四端口接收到數(shù)據(jù)后,通過http協(xié)議回應(yīng)9999端口即所述第三端口的http請求,發(fā)送處理結(jié)果數(shù)據(jù)包。9999端口即所述第三端口接收到處理結(jié)果數(shù)據(jù)包后,通過SocketChannel連接通道,將處理結(jié)果以Socket通信的方式發(fā)送給4003端口即所述第二端口,4003端口即所述第二端口將數(shù)據(jù)通過與7007端口即所述第一端口之間建立的Socket連接返回給客戶端。需要說明的是,本發(fā)明實(shí)施例中采用的所述第一服務(wù)器的第一端口、第二端口和第三端口分別為7007、4003和9999端口,所述第二服務(wù)器的第四端口為4002端口,但實(shí)際操作中,所述端口可以是任意的,只要是能夠通信正常的端口即可。本發(fā)明實(shí)施例中采用了HashMap來實(shí)現(xiàn)所述存儲映射表,同樣的,所述HashMap也不是唯一的實(shí)現(xiàn)方案,只要是通過唯一的key(這里指客戶端IP地址)可以映射唯一存儲內(nèi)容(這里指socket連接信息)的實(shí)現(xiàn)方案均可。上述過程經(jīng)歷了若干次Socket連接與http請求的轉(zhuǎn)換,但是客戶端與業(yè)務(wù)服務(wù)器仍然保證了通過Socket通信的方式發(fā)送與接收數(shù)據(jù),并且通過SocketChannel與HashMap使得每次通信都保證了Socket連接的同一性,即連接不中斷。實(shí)施例二、通過http實(shí)現(xiàn)跨越網(wǎng)閘進(jìn)行Socket保持連接通信的方法。圖2為根據(jù)本發(fā)明實(shí)施例二的通過http實(shí)現(xiàn)跨越網(wǎng)閘進(jìn)行Socket保持連接通信的方法流程圖,包括以下步驟:步驟S201:第一服務(wù)器的第一端口接收客戶端發(fā)起的請求,將請求數(shù)據(jù)包以Socket通信的方式發(fā)送給第一服務(wù)器的第二端口;步驟S202:所述第二端口對客戶端請求進(jìn)行監(jiān)聽,監(jiān)聽到客戶端請求連接后,啟動線程進(jìn)行Socket通信;步驟S203:所述第二端口接收到所述請求數(shù)據(jù)包后,發(fā)起一個與第一服務(wù)器的第三端口進(jìn)行通信的新的Socket連接,使用NIO流建立一個SocketChannel模擬Socket通信,所述第二端口與所述第三端口之間建立不斷開的連接通道,將所述第二端口通過Socket通信發(fā)送的所述請求數(shù)據(jù)包和與所述第三端口進(jìn)行通信的所述Socket連接進(jìn)行綁定;步驟S204:所述第三端口通過所述連接通道接收到所述請求數(shù)據(jù)包后,建立與第二服務(wù)器進(jìn)行通信的http請求,將所述第二端口發(fā)送過來的所述請求數(shù)據(jù)包通過所述http請求發(fā)送給所述第二服務(wù)器的第四端口;步驟S205:所述第二服務(wù)器上已經(jīng)建立存儲映射表,其中所述存儲映射表通過IP地址作為主鍵,存儲不同的Socket連接信息,所述第四端口通過所述http請求接收到所述請求數(shù)據(jù)包;步驟S206:判斷所述客戶端IP地址是否存在于所述存儲映射表中;如果不存在,則進(jìn)入下一步,反之,跳轉(zhuǎn)到步驟S208;步驟S207:則建立一個新的與業(yè)務(wù)服務(wù)器的Socket連接,發(fā)送接收到的所述請求數(shù)據(jù)包,并將該Socket連接信息以IP地址為主鍵存儲在所述存儲映射表中;步驟S208:則通過所述IP地址從所述存儲映射表中取得已經(jīng)存在的Socket連接,通過該Socket連接發(fā)送接收到的所述請求數(shù)據(jù)包;步驟S209:所述業(yè)務(wù)服務(wù)器通過與所述第四端口之間建立的Socket連接進(jìn)行通信,將處理結(jié)果數(shù)據(jù)包返回到所述第四端口;步驟S210:所述第四端口接收到所述處理結(jié)果數(shù)據(jù)包后,通過http協(xié)議回應(yīng)所述第三端口的http請求,發(fā)送所述處理結(jié)果數(shù)據(jù)包;步驟S211:所述第三端口接收到所述處理結(jié)果數(shù)據(jù)包后,通過所述SocketChannel建立的所述連接通道,將所述處理結(jié)果數(shù)據(jù)包以Socket通信的方式發(fā)送給所述第二端口;步驟S212:所述第二端口將所述處理結(jié)果數(shù)據(jù)包通過與所述第一端口之間建立的Soket連接返回到客戶端。實(shí)施例三、通過http實(shí)現(xiàn)跨越網(wǎng)閘進(jìn)行Socket保持連接通信的系統(tǒng)。下面對本發(fā)明實(shí)施例三的系統(tǒng)進(jìn)行詳細(xì)說明。本發(fā)明實(shí)施例三的通過http實(shí)現(xiàn)跨越網(wǎng)閘進(jìn)行Socket保持連接通信的系統(tǒng)包括:客戶端、第一服務(wù)器、第二服務(wù)器和業(yè)務(wù)服務(wù)器,所述第一服務(wù)器和所述第二服務(wù)器之間存在網(wǎng)閘,其中:所述第一服務(wù)器在網(wǎng)閘外,所述客戶端將請求數(shù)據(jù)包通過Socket方式發(fā)送給所述第一服務(wù)器,所述第一服務(wù)器將來自所述第二服務(wù)器的處理結(jié)果數(shù)據(jù)包通過Socket方式發(fā)送給所述客戶端;所述第二服務(wù)器在網(wǎng)閘內(nèi),已經(jīng)建立存儲映射表,所述第一服務(wù)器與所述第二服務(wù)器之間采用http協(xié)議的方式進(jìn)行通信,所述第一服務(wù)器將來自所述客戶端的所述請求數(shù)據(jù)包通過第一端口、第二端口和第三端口以http協(xié)議的方式發(fā)送給所述第二服務(wù)器的第四端口,所述第二端口建立一個SocketChannel模擬Socket通信,所述第二端口與所述第三端口之間建立不斷開的連接通道,所述第二服務(wù)器將來自業(yè)務(wù)服務(wù)器的所述處理結(jié)果數(shù)據(jù)包以http協(xié)議的方式發(fā)送給所述第一服務(wù)器;所述第二服務(wù)器與所述業(yè)務(wù)服務(wù)器之間采用Socket連接,所述第二服務(wù)器將接收的所述請求數(shù)據(jù)包發(fā)送給所述業(yè)務(wù)服務(wù)器,所述業(yè)務(wù)服務(wù)器對所述請求數(shù)據(jù)包進(jìn)行處理,并將處理結(jié)果數(shù)據(jù)包通過Socket方式發(fā)送給所述第二服務(wù)器。本發(fā)明實(shí)施例中優(yōu)選的,還包括一判斷模塊,所述第四端口通過所述http請求接收到所述請求數(shù)據(jù)包后,調(diào)用所述判斷模塊判斷所述客戶端IP地址是否存在于所述存儲映射表中;如果不存在,則建立一個新的與業(yè)務(wù)服務(wù)器的Socket連接,發(fā)送接收到的所述請求數(shù)據(jù)包,并將該Socket連接信息以IP地址為主鍵存儲在所述存儲映射表中;如果存在,則通過所述IP地址從所述存儲映射表中取得已經(jīng)存在的Socket連接,通過該Socket連接發(fā)送接收到的所述請求數(shù)據(jù)包。本發(fā)明實(shí)施例中優(yōu)選的,所述存儲映射表通過IP地址作為主鍵,存儲不同的Socket連接信息。本發(fā)明實(shí)施例中優(yōu)選的,還包括一SocketChannel建立模塊,適用于所述第二端口接收到所述請求數(shù)據(jù)包后,發(fā)起一個與第一服務(wù)器的第三端口進(jìn)行通信的新的Socket連接,所述SocketChannel建立模塊使用NIO流建立一個SocketChannel模擬Socket通信,所述第二端口與所述第三端口之間建立不斷開的連接通道,將所述第二端口通過Socket通信發(fā)送的所述請求數(shù)據(jù)包和與所述第三端口進(jìn)行通信的所述Socket連接進(jìn)行綁定。本發(fā)明實(shí)施例中優(yōu)選的,所述第一服務(wù)器的第一端口、第二端口和第三端口分別為7007、4003和9999端口,所述第二服務(wù)器的第四端口為4002端口。目前的客戶端與服務(wù)器之間一般采用套接字Socket方式進(jìn)行網(wǎng)絡(luò)通信。使用Socket的通信方式,傳輸速度一般比較快和穩(wěn)定,但是在很多網(wǎng)絡(luò)環(huán)境尤其是內(nèi)部網(wǎng)絡(luò)中都設(shè)置了網(wǎng)閘,只允許使用基本端口,如網(wǎng)絡(luò)瀏覽端口80,其他端口不允許使用,如即時通信的聊天端口8000,在這種情況下,不能用傳輸控制協(xié)議TCP或者用戶數(shù)據(jù)報協(xié)議UDP與服務(wù)器進(jìn)行直接連接??蛻舳藢⒄埱髷?shù)據(jù)包通過套接字Socket連接發(fā)送給第一服務(wù)器;所述第一服務(wù)器以Socket方式接收所述請求數(shù)據(jù)包,并將所述請求數(shù)據(jù)包以http協(xié)議的方式發(fā)送給第二服務(wù)器;所述第二服務(wù)器以http協(xié)議的方式接收所述請求數(shù)據(jù)包,并通過與業(yè)務(wù)服務(wù)器之間的套接字Socket連接將所述請求數(shù)據(jù)包發(fā)送給所述業(yè)務(wù)服務(wù)器;所述業(yè)務(wù)服務(wù)器對接收的所述請求數(shù)據(jù)包進(jìn)行處理,將處理結(jié)果的返回數(shù)據(jù)包通過與所述第二服務(wù)器之間的套接字Socket連接發(fā)送給所述第二服務(wù)器;所述第二服務(wù)器以Socket方式接收所述返回數(shù)據(jù)包,并以http協(xié)議的方式將所述返回數(shù)據(jù)包發(fā)送給所述第一服務(wù)器;所述第一服務(wù)器以http協(xié)議的方式接收所述返回數(shù)據(jù)包,并通過與所述客戶端之間的套接字Socket連接將所述返回數(shù)據(jù)包發(fā)送給所述客戶端。其中,所述第一服務(wù)器與所述第二服務(wù)器之間采用http協(xié)議的POST方法或者h(yuǎn)ttp協(xié)議的GET方法傳送數(shù)據(jù)。對于只能使用Socket方式通信的客戶端和服務(wù)器,當(dāng)通過互聯(lián)網(wǎng)連接時,通過Socket與http之間的協(xié)議轉(zhuǎn)換,可以實(shí)現(xiàn)采用Socket方式連接的客戶端和業(yè)務(wù)服務(wù)器穿透網(wǎng)閘通信。其中,客戶端為可以遠(yuǎn)程訪問第一服務(wù)器的軟件模塊或硬件設(shè)備;第一服務(wù)器是一個可以保持Socket連接,并且可以發(fā)起http請求、接收http響應(yīng)返回的外網(wǎng)應(yīng)用軟件模塊;第二服務(wù)器是一個可以接收和響應(yīng)http請求,并且可以保持Socket連接的內(nèi)網(wǎng)應(yīng)用軟件模塊;業(yè)務(wù)服務(wù)器為完成業(yè)務(wù)邏輯的軟件模塊或硬件設(shè)備,其可以通過JMS(JavaMessageService,Java消息服務(wù))應(yīng)用程序接口進(jìn)行通信。其中,具體的實(shí)施細(xì)節(jié)如上述方法中所述,在此不再贅述。本發(fā)明提出了通過http實(shí)現(xiàn)跨越網(wǎng)閘進(jìn)行Socket保持連接通信的方法及系統(tǒng),以前只支持在同一網(wǎng)閘內(nèi)通過Socket連接進(jìn)行通信,從而完成業(yè)務(wù)需要,通過本發(fā)明所述方法及系統(tǒng),能夠提供互聯(lián)網(wǎng)上任意用戶跨越網(wǎng)閘與防火墻進(jìn)行Socket通信,并且通信過程中,保證同一IP地址客戶端發(fā)起的Socket請求也是同一的,同時不需要對原系統(tǒng)進(jìn)行全面的改造,節(jié)省了研發(fā)改造成本。本領(lǐng)域普通技術(shù)人員可以理解:附圖只是一個實(shí)施例的示意圖,附圖中的模塊或流程并不一定是實(shí)施本發(fā)明所必須的。在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。當(dāng)前第1頁1 2 3 
山東錦工有限公司
地址:山東省章丘市經(jīng)濟(jì)開發(fā)區(qū)
電話:0531-83825699
傳真:0531-83211205
24小時銷售服務(wù)電話:15066131928