本發(fā)明涉及數(shù)據(jù)業(yè)務技術領域,尤其涉及一種文件傳輸協(xié)議(FTP,F(xiàn)ile Transfer Protocol)數(shù)據(jù)鏈路實現(xiàn)固定通信端口的方法及裝置。
背景技術:
在互聯(lián)網(wǎng)和移動通信系統(tǒng)中,文件作為兩個模塊的接口有著大量應用,比如:業(yè)務系統(tǒng)和業(yè)務運營支撐系統(tǒng)(BOSS,Business&Operation Support System)就以話單文件為接口,網(wǎng)管系統(tǒng)則用于采集各業(yè)務系統(tǒng)的日志文件等,而在這些應用的實現(xiàn)過程中,F(xiàn)TP則成為系統(tǒng)間文件傳輸?shù)闹匾侄巍?/p>
FTP是傳輸控制協(xié)議/網(wǎng)絡協(xié)議(TCP/IP,Transmission Control Protocol/Internet Protocol)協(xié)議組中的協(xié)議之一,如圖1所示,通常,基于FTP協(xié)議進行通信的實體包括:FTP服務端11和FTP客戶端12,在實際應用中,用戶可以使用FTP客戶端12通過FTP進行文件的上傳或下載等操作。
目前,基于FTP實現(xiàn)通信的過程包括:FTP服務端11會先打開一個固定端口等待FTP客戶端12連接,默認端口號為21;FTP客戶端12先與FTP服務端11建立控制鏈路,進行鑒權和控制命令的交互;然后,F(xiàn)TP客戶端12通過被動(PASV)模式或主動(PORT)模式建立數(shù)據(jù)鏈路,進行數(shù)據(jù)傳輸。
這里,PASV模式和PORT模式是FTP數(shù)據(jù)鏈路建立支持的兩種模式;其中,所述PASV模式是指:FTP客戶端12與FTP服務端11默認的控制端口建立連接,通過所建立的通道發(fā)送命令,F(xiàn)TP服務端11收到PASV命令后,隨機打開一個高端端口(端口號大于1024),并通知FTP客戶端12在打開的端口上傳送數(shù)據(jù)的請求;FTP客戶端12連接FTP服務端11通知的端口并建立數(shù)據(jù)鏈路,進行數(shù)據(jù)傳送。所述PORT模式是指:在建立控制鏈路時與PASV模式一 樣,但建立連接后發(fā)送Port命令,Port命令中包含有FTP客戶端12選用哪個端口接收數(shù)據(jù);FTP服務端11連接FTP客戶端12的指定端口并建立數(shù)據(jù)鏈路,進行數(shù)據(jù)傳送。
從PASV模式數(shù)據(jù)鏈路建立過程可以看出,PASV模式會隨機打開一個端口用于數(shù)據(jù)鏈路的建立;這里,PASV模式之所以使用隨機端口是因為:數(shù)據(jù)鏈路是沒有任何標識的,通過每個控制鏈路產(chǎn)生的隨機數(shù)據(jù)鏈路端口不一樣,如此,可實現(xiàn)控制鏈路和數(shù)據(jù)鏈路的關聯(lián),F(xiàn)TP服務端11通過此方式得以區(qū)分不同控制鏈路發(fā)來的文件上傳/下載命令指定的文件和數(shù)據(jù)是在哪一條數(shù)據(jù)鏈路上傳輸?shù)摹?/p>
然而,一般以文件為接口的兩個系統(tǒng)獨立性高,系統(tǒng)間可能存在防火墻等保護措施;而作為防火墻保護的一方,防火墻可以為服務開放的端口是確定且有限的,一般要求開放的端口要盡量少,這就使得PASV模式在系統(tǒng)間存在防火墻時無法使用,如何能在具有防火墻的場景下使用PASV模式完成FTP數(shù)據(jù)鏈路的建立是亟需解決的問題。
技術實現(xiàn)要素:
有鑒于此,本發(fā)明實施例期望提供一種FTP數(shù)據(jù)鏈路實現(xiàn)固定通信端口的方法及裝置,能使PASV模式在具有防火墻的場景下完成FTP數(shù)據(jù)鏈路的建立。
為達到上述目的,本發(fā)明的技術方案是這樣實現(xiàn)的:
本發(fā)明實施例提供了一種FTP數(shù)據(jù)鏈路實現(xiàn)固定通信端口的方法,在FTP服務端設置固定的控制端口和數(shù)據(jù)端口,并設置IP地址隊列;該方法還包括:
接收FTP客戶端向所述控制端口發(fā)送的控制鏈路連接請求后,F(xiàn)TP服務端建立控制鏈路;
接收FTP客戶端向所述數(shù)據(jù)端口發(fā)送的連接請求和向所述控制端口發(fā)送的PASV請求,確定所述IP地址隊列中不存在所述FTP客戶端的IP地址時,將所述FTP客戶端的IP地址加入所述IP地址隊列中;
FTP服務端對所述IP地址隊列中不同IP地址對應的FTP客戶端發(fā)送的 PASV請求進行處理。
上述方案中,所述方法還包括:確定所述IP地址隊列中存在所述FTP客戶端的IP地址時,等待IP地址隊列中與發(fā)送所述PASV請求的FTP客戶端的IP地址相同的IP地址被刪除后,再將所述FTP客戶端的IP地址加入所述IP地址隊列中,對來自同一個IP地址的多個PASV請求串行處理。
上述方案中,所述建立控制鏈路包括:FTP服務端接收控制鏈路連接請求后,對用戶名、密碼、IP地址進行鑒權。
上述方案中,所述接收FTP客戶端向所述數(shù)據(jù)端口發(fā)送的連接請求包括:FTP服務端從所述數(shù)據(jù)端口接收FTP客戶端發(fā)送的連接請求,對所述FTP客戶端的IP地址是否合法進行判斷。
本發(fā)明實施例還提供了一種FTP數(shù)據(jù)鏈路實現(xiàn)固定通信端口的裝置,所述裝置包括:
FTP服務端,設置有固定的控制端口和數(shù)據(jù)端口,設置有IP地址隊列;用于在接收FTP客戶端向所述控制端口發(fā)送的控制鏈路連接請求后,建立控制鏈路;在接收FTP客戶端向所述數(shù)據(jù)端口發(fā)送的連接請求和向控制端口發(fā)送的PASV請求后,確定所述IP地址隊列中不存在FTP客戶端的IP地址時,將所述FTP客戶端的IP地址加入所述IP地址隊列中;并對所述IP地址隊列中不同IP地址對應的FTP客戶端發(fā)送的PASV請求進行處理;
FTP客戶端,用于向所述控制端口發(fā)送控制鏈路連接請求;向所述數(shù)據(jù)端口發(fā)送連接請求;向所述控制端口發(fā)送PASV請求。
上述方案中,所述FTP服務端,還用于在確定所述IP地址隊列中存在所述FTP客戶端的IP地址時,等待IP地址隊列中與發(fā)送所述PASV請求的FTP客戶端的IP地址相同的IP地址被刪除后,再將所述FTP客戶端的IP地址加入所述IP地址隊列中,對來自同一個IP地址的多個PASV請求串行處理。
上述方案中,所述FTP服務端,還用于在接收控制鏈路連接請求后,對用戶名、密碼、IP地址進行鑒權。
上述方案中,所述FTP服務端,還用于從所述數(shù)據(jù)端口接收FTP客戶端發(fā) 送的連接請求,對所述FTP客戶端的IP地址是否合法進行判斷。
上述方案中,所述FTP服務端還包括數(shù)據(jù)鏈路管理器,用于在建立數(shù)據(jù)鏈路時,通過數(shù)據(jù)端口接收FTP客戶端的連接請求,對FTP客戶端的IP地址進行判斷,如果IP地址非法,則關閉連接。
上述方案中,所述數(shù)據(jù)鏈路管理器,還用于在FTP服務端發(fā)送完PASV命令應答之后,查詢是否有對應IP地址的數(shù)據(jù)鏈路生成。
本發(fā)明實施例所提供的FTP數(shù)據(jù)鏈路實現(xiàn)固定通信端口的方法及裝置,在FTP服務端設置固定的控制端口和數(shù)據(jù)端口,并設置IP地址隊列;接收FTP客戶端向所述控制端口發(fā)送的控制鏈路連接請求后,F(xiàn)TP服務端建立控制鏈路;接收FTP客戶端向所述數(shù)據(jù)端口發(fā)送的連接請求和向所述控制端口發(fā)送的PASV請求,確定所述IP地址隊列中不存在所述FTP客戶端的IP地址時,將所述FTP客戶端的IP地址加入所述IP地址隊列中;FTP服務端對所述IP地址隊列中不同IP地址對應的FTP客戶端發(fā)送的PASV請求進行處理??梢钥闯?,由于本發(fā)明實施例在FTP服務端和FTP客戶端之間采用固定的端口進行通信交互,因此,解決了現(xiàn)有技術中FTP服務器在防火墻內(nèi)時無法使用PASV模式的問題;并且,能夠在移動業(yè)務系統(tǒng)、網(wǎng)管系統(tǒng)、分析經(jīng)營系統(tǒng)、計費系統(tǒng)等可能存在防火墻的不同系統(tǒng)之間,通過FTP技術進行文件交換和數(shù)據(jù)分享。
另外,本發(fā)明實施例中,如果發(fā)送PASV請求的FTP客戶端的IP地址在IP地址隊列中已存在,則相應的PASV請求需要先等待,等到IP地址隊列中與發(fā)送該PASV請求的FTP客戶端的IP地址相同的IP地址被刪除后,才能將發(fā)送該PASV請求的FTP客戶端的IP地址加入IP地址隊列,如此,可實現(xiàn)對來自同一個IP地址的多個PASV請求的串行處理。
附圖說明
圖1為現(xiàn)有技術中FTP的實現(xiàn)模型示意圖;
圖2為本發(fā)明實施例FTP數(shù)據(jù)鏈路實現(xiàn)固定通信端口的方法流程示意圖;
圖3為本發(fā)明實施例中IP地址隊列操作的實現(xiàn)流程示意圖;
圖4為本發(fā)明實施例中固定端口數(shù)據(jù)鏈路的具體通信過程實現(xiàn)流程示意圖;
圖5為本發(fā)明實施例在同一時間三個控制鏈路上各收到PASV請求的場景示意圖;
圖6為本發(fā)明實施例中FTP數(shù)據(jù)鏈路實現(xiàn)固定通信端口的裝置結構示意圖。
具體實施方式
本發(fā)明實施例中,在FTP服務端設置固定的控制端口和數(shù)據(jù)端口,并設置IP地址隊列;接收FTP客戶端向所述控制端口發(fā)送的控制鏈路連接請求后,F(xiàn)TP服務端建立控制鏈路;接收FTP客戶端向所述數(shù)據(jù)端口發(fā)送的連接請求和向所述控制端口發(fā)送的PASV請求,確定所述IP地址隊列中不存在所述FTP客戶端的IP地址時,將所述FTP客戶端的IP地址加入所述IP地址隊列中;FTP服務端對所述IP地址隊列中不同IP地址對應的FTP客戶端發(fā)送的PASV請求進行處理。
這里,F(xiàn)TP服務端始終打開控制端口和數(shù)據(jù)端口。
本發(fā)明實施例中,對于任意FTP客戶端的IP地址,如果已存在于IP地址隊列中,就需要先等待;如果未存在于IP地址隊列中,就可以加入到IP地址隊列中;那么,對于IP地址隊列中多個來自不同的IP地址對應的FTP客戶端的請求,就會被同時處理;而對于多個來自相同的IP地址對應的FTP客戶端的請求,將會被串行處理。
下面結合附圖及具體實施例對本發(fā)明再作進一步詳細的說明。
本發(fā)明實施例FTP數(shù)據(jù)鏈路實現(xiàn)固定通信端口的方法,如圖2所示,該方法包括:
步驟S201:在FTP服務端設置固定的控制端口和數(shù)據(jù)端口,并設置IP地址隊列;
通常,防火墻會配置打開用于控制鏈路傳輸?shù)亩丝诤陀糜跀?shù)據(jù)鏈路傳輸?shù)? 端口,本發(fā)明實施例在FTP服務端始終打開兩個固定的端口——控制端口和數(shù)據(jù)端口,分別接收發(fā)至對應端口的請求。
步驟S202:接收FTP客戶端向所述控制端口發(fā)送的控制鏈路連接請求后,F(xiàn)TP服務端建立控制鏈路;
步驟S203:接收FTP客戶端向所述數(shù)據(jù)端口發(fā)送的連接請求和向所述控制端口發(fā)送的PASV請求,確定所述IP地址隊列中不存在所述FTP客戶端的IP地址時,將所述FTP客戶端的IP地址加入所述IP地址隊列中;
步驟S204:FTP服務端對所述IP地址隊列中不同IP地址對應的FTP客戶端發(fā)送的PASV請求進行處理。
這里,所述處理可以是對多個PASV請求同時處理。
本發(fā)明實施例中,所述IP地址隊列在FTP服務端實現(xiàn),由一個IP地址字符串的集合組成。
步驟S203中,所述確定所述IP地址隊列中不存在所述FTP客戶端的IP地址時,將所述FTP客戶端的IP地址加入所述IP地址隊列中,如圖3所示,具體包括以下步驟:
步驟S301:判斷PASV請求是否需要等待;
具體的,F(xiàn)TP服務端收到PASV請求后,通過對IP地址隊列中是否存在發(fā)送PASV請求的FTP客戶端的IP地址,來判斷PASV請求是否需要等待;
步驟S302:對于不需要等待的PASV請求,將所述PASV請求對應的FTP客戶端的IP地址加入IP地址隊列;
這里,對于需要等待的PASV請求,等待可以加入的時機;
步驟S303:處理完所述PASV請求后,從IP地址隊列中刪除所述PASV請求對應的FTP客戶端的IP地址。
本發(fā)明實施例中固定端口數(shù)據(jù)鏈路的具體通信過程的實現(xiàn),如圖4所示,此處假設防火墻配置打開控制端口K用于控制鏈路傳輸、打開數(shù)據(jù)端口J用于數(shù)據(jù)鏈路傳輸,具體包括以下步驟:
步驟S401:FTP服務端始終打開控制端口K,F(xiàn)TP客戶端向控制端口K發(fā) 送連接請求,F(xiàn)TP服務端接收連接請求后,對用戶名、密碼、IP地址等信息進行鑒權,建立控制鏈路。
步驟S402:FTP服務端始終打開數(shù)據(jù)端口J,由數(shù)據(jù)鏈路管理器從數(shù)據(jù)端口J接收連接請求,對FTP客戶端的IP地址進行判斷,如果IP地址非法,則關閉連接。
步驟S403:當FTP服務端從控制鏈路收到PASV請求后,先查詢IP隊列中是否存在該FTP客戶端的IP地址,如果存在,則等待。
步驟S404:請求等待一定時間后,判斷請求是否超時,如果超時,則關閉控制鏈路,結束本次處理流程;如果未超時,則再次判斷請求是否需要等待。
步驟405:如果請求不需要等待,則將FTP客戶端的IP地址加入IP地址隊列,并向FTP客戶端發(fā)送PASV命令的應答,應答消息中指定的數(shù)據(jù)端口始終為J,通知FTP客戶端可以連接數(shù)據(jù)端口J建立數(shù)據(jù)鏈路。
步驟S406:發(fā)送完PASV命令應答之后,從數(shù)據(jù)鏈路管理器查詢是否有對應IP地址的數(shù)據(jù)鏈路生成,如果有,則執(zhí)行步驟S407,如果沒有,則執(zhí)行步驟S408。
步驟S407:進行控制鏈路和數(shù)據(jù)鏈路關聯(lián),然后從IP隊列中刪除對應的IP地址。
步驟S408:判斷是否超時,直到超時未從數(shù)據(jù)鏈路管理器中查詢到對應IP地址的數(shù)據(jù)鏈路,則將對應的IP地址從IP隊列中刪除,同時關閉控制鏈路。
為方便理解,現(xiàn)舉例說明本發(fā)明在同一時間三個控制鏈路各收到PASV請求的場景及其處理過程,如圖5所示,三個控制鏈路包括控制鏈路51、控制鏈路52和控制鏈路53;其中,控制鏈路51、52對應的FTP客戶端地址為IP1,控制鏈路53對應的FTP客戶端地址為IP2;參見圖5,本實施例中固定端口數(shù)據(jù)鏈路的具體通信過程實現(xiàn)流程包括:
對于控制鏈路51,F(xiàn)TP服務端先通過控制端口K與地址為IP1的FTP客戶端建立控制鏈路51,通過數(shù)據(jù)端口J接收FTP客戶端的連接請求并判斷FTP客戶端的IP合法,從控制鏈路51收到FTP客戶端發(fā)送的PASV請求后,查詢 到IP隊列中不存在IP1,將IP1加入IP地址隊列,并向FTP客戶端發(fā)送PASV命令的應答,應答消息中指定的數(shù)據(jù)端口始終為J,通知FTP客戶端可以連接數(shù)據(jù)端口J建立數(shù)據(jù)鏈路,數(shù)據(jù)鏈路管理器里查詢到有對應IP1的數(shù)據(jù)鏈路生成,將控制鏈路51與數(shù)據(jù)鏈路關聯(lián),然后從IP隊列中刪除IP1。
對于控制鏈路52,F(xiàn)TP服務端先通過控制端口K與地址為IP1的FTP客戶端建立控制鏈路52,通過數(shù)據(jù)端口J接收FTP客戶端的連接請求并判斷FTP客戶端的IP合法,從控制鏈路52收到FTP客戶端發(fā)送的PASV請求后,查詢到IP隊列中已存在IP1,則需要等待和再次查詢直到控制鏈路51從IP地址隊列中刪除IP1后,才將IP1地址加入IP隊列中,并向FTP客戶端發(fā)送PASV命令的應答,應答消息中指定的數(shù)據(jù)端口始終為J,通知FTP客戶端可以連接數(shù)據(jù)端口J建立數(shù)據(jù)鏈路,數(shù)據(jù)鏈路管理器里查詢到有對應IP1的數(shù)據(jù)鏈路生成,將控制鏈路52與數(shù)據(jù)鏈路關聯(lián),然后從IP隊列中刪除IP1。
對于控制鏈路53,F(xiàn)TP服務端先通過控制端口K與地址為IP2的FTP客戶端建立控制鏈路53,通過數(shù)據(jù)端口J接收FTP客戶端的連接請求并判斷FTP客戶端的IP合法,從控制鏈路53收到FTP客戶端發(fā)送的PASV請求后,查詢到IP隊列中不存在IP2,將IP2加入IP地址隊列,并向FTP客戶端發(fā)送PASV命令的應答,應答消息中指定的數(shù)據(jù)端口始終為J,通知FTP客戶端可以連接數(shù)據(jù)端口J建立數(shù)據(jù)鏈路,數(shù)據(jù)鏈路管理器里查詢到有對應IP2的數(shù)據(jù)鏈路生成,將控制鏈路53與數(shù)據(jù)鏈路關聯(lián),然后從IP隊列中刪除IP2。
這樣,控制鏈路53與控制鏈路51可以同時進行PASV請求處理,提高了FTP服務端的處理性能。
如圖6所示,本發(fā)明實施例提供的一種FTP數(shù)據(jù)鏈路實現(xiàn)固定通信端口的裝置,包括:FTP服務端61和FTP客戶端62;其中,
所述FTP服務端61,設置有固定的控制端口611和數(shù)據(jù)端口612,設置有IP地址隊列613;用于在接收FTP客戶端62向所述控制端口611發(fā)送的控制鏈路連接請求后,建立控制鏈路;在接收FTP客戶端62向所述數(shù)據(jù)端口發(fā)送的連接請求和向所述控制端口611發(fā)送的PASV請求后,確定所述IP地址隊列613 中不存在FTP客戶端62的IP地址時,將所述FTP客戶端62的IP地址加入所述IP地址隊列613中;并對所述IP地址隊列613中不同IP地址對應的FTP客戶端62發(fā)送的PASV請求進行處理。
所述FTP客戶端62,用于向所述控制端口611發(fā)送控制鏈路連接請求;向所述數(shù)據(jù)端口612發(fā)送連接請求;向所述控制端口611發(fā)送PASV請求。
所述FTP服務端61還包括數(shù)據(jù)鏈路管理器614,用于通過數(shù)據(jù)端口612接收FTP客戶端62的連接請求,對FTP客戶端62的IP地址進行判斷,如果IP地址非法,則關閉連接;用于在FTP服務端61發(fā)送完PASV命令應答之后,查詢是否有對應IP地址的數(shù)據(jù)鏈路生成。
這里,F(xiàn)TP服務端61始終打開控制端口611和數(shù)據(jù)端口612。
本發(fā)明實施例中,對于任意FTP客戶端62的IP地址,如果已存在于IP地址隊列中,就需要先等待;如果未存在于IP地址隊列中,就可以加入到IP地址隊列中;那么,對于IP地址隊列中多個來自不同的IP地址對應的FTP客戶端62的請求,就會被同時處理;而對于多個來自相同的IP地址對應的FTP客戶端62的請求,將會被串行處理。
以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。