ftpserver的ftpproxy原理

    FTP文件傳輸協議,這個又老又特殊的協議在構建之初很好的保障了文件的交互,可是這個協議的雙端口和主被動模式給後續的管理和擴展帶來了意外麻煩。在網絡配置方面因爲數據端口是隨即選擇的,這樣形成防火牆配置的麻煩(因爲本人對防火牆瞭解不深具體詳情不瞭解,見諒)。同時這也給不一樣隔離網絡之間的文件訪問形成困難。有沒有可能向http proxy那樣部署一個ftp proxy呢。通過一番搜索,還真未發現有何好用的產品來支持這個功能。能不能本身開發這樣的一個軟件呢。後來筆者找到了一個相似的java源碼,可是這個源碼在功能支持上不完善,能夠說是漏洞擺出,不得已進行打造一款ftp proxy來知足須要。java

    咱們來分析一下代理過程的基本原理:網絡


以上部分描述爲主線程處理過程,這個線程是針對每一個訪問鏈接來作的,簡單來講即:
     客戶端鏈接---》每一個鏈接啓動線程處理請求---》循環讀取客戶端命令。在循環處理客戶端命令的過程當中是真正的數據操做過程。
wKiom1NQlVqyVTkoAACQLRZdKe0624.gifPORT注意要點:
    一、先同步等待創建服務端鏈接;這個鏈接是SERVER到PROXY的鏈接;
    二、創建客戶端鏈接;這個鏈接是PROXY到CLIENT的鏈接;
    三、創建數據傳輸線程,數據傳輸完畢則線程結束;
wKioL1NQlUiSgKpsAAB-3pa5lQI382.gif
PASV注意要點:
    一、先同步等待創建服務端鏈接;這個鏈接是CLIENT到PROXY的鏈接;
    二、創建客戶端鏈接;這個鏈接是PROXY到SERVER的鏈接;
    三、創建數據傳輸線程,數據傳輸完畢則線程結束;
wKioL1NQlZ-QlHdFAACN1cj2C2Q997.gif



ide

相關文章
相關標籤/搜索