320 likes | 578 Views
FTP 介紹與實作. Team 5 597435019 王尹鍾 597435025 彭昭明. Introduction. Job Assign FTP 由來 FTP 運作原理 Code 簡介 Active and Passive( 主動與被動模式 ) Summary Reference. Job Assign. 597435019 王尹鍾 : 組長 , 統籌分配工作與進度 排定專案時程 , 與 meeting 時間 搜集相關 ftp 資料,書面文件撰寫,介面規劃與實作規劃 ftp 環境建置 &test. Job Assign.
E N D
FTP 介紹與實作 Team 5 597435019 王尹鍾 597435025 彭昭明
Introduction • Job Assign • FTP 由來 • FTP 運作原理 • Code 簡介 • Active and Passive(主動與被動模式) • Summary • Reference
Job Assign • 597435019 王尹鍾: • 組長,統籌分配工作與進度 • 排定專案時程,與meeting時間 • 搜集相關ftp資料,書面文件撰寫,介面規劃與實作規劃 • ftp環境建置&test
Job Assign • 597435025 彭昭明: • ftp技術survey • 程式撰寫 • 系統測試
FTP 由來 • 檔案傳輸協定〈FTP-File Transfer Protocol〉是學術網路上所提供的眾多服務資源項目中,最常用的項目之一,透過此公共協定,大家傳輸模式才會一致,應用此一方式做檔案交換。 • FTP標準: RFC 959
FTP 運作原理 - cont1 • FTP是一種主從式的架構,也就是Client and Server架構,說什麼主從式對一般人來說恐怕是太難懂了一些,說穿了既然是主從式,那這個協定要運行一定就要有人開FTP Server也要有人用FTP Client,唯有這兩組軟體搭配,才能達成FTP檔案傳輸的功效。
FTP 運作原理 - cont2 • 一般主從架構應用程式(HTTP、SMTP、POP3.. )都只需要一條連線、一個通訊埠 ,只會在伺服器與用戶端建立一個socket連結,此連結同時處理伺服器端與用戶端連線及資料的傳送。 • 但FTP在伺服器端及用戶端之間建立兩條連線、兩個通訊埠 ,一個以FTP通訊協定預設的通訊埠(port 21)作為通訊連結,另一個是資料傳送的連線(一般都設在 port 20 ),FTP資料傳送的模式又分二種:PORT、PASV。兩者主要分別在於它們會向FTP伺服器發出不同的FTP Command。
FTP 運作原理 - cont3 • 資料通訊埠(Data Port) : • 因為初期定義 FTP 通訊定的時候,並沒有考慮到後來防火牆的發展,使得傳統的 FTP 的工作原理無法完全適用在網際網路環境,因此就發展出了另外一種替代模式的 FTP 連線方式,在這種模式底下,Data Port 不再只是 20,也因此造成很多讀到舊資料的人,認為只要將 20、21 兩個通訊不打開,FTP Server 就能正常運作這樣的錯誤觀念。
Code 簡介- ftp GUI client 運用技術 • 1.deploy 工具用ant • 2.java swing 技術做GUI • 3.java 1.4版本 • 4.ftp server用PCManFTP • 5.log檔使用commons-logging- 1.1.jar • 6.ftp api:jakarta-oro-2.0.8.jar
Code 簡介-ftpApplet.htm頁面設定參數-1 • 設定上傳路徑:<param id="UserDownloadDir_applet" name="UserDownloadDir_applet" value="D:/Litho/"> • <param id="Marker1FTPhost_applet" name="Marker1FTPhost_applet" value="127.0.0.1"> • <param id="Marker1FTPusername_applet" name="Marker1FTPusername_applet" value="abserta">
Code 簡介-ftpApplet.htm頁面設定參數-2 • <param id="Marker1FTPpassword_applet" name="Marker1FTPpassword_applet" value="9999"> • <param id="Marker1FTPport_applet" name="Marker1FTPport_applet" value="21">
Code 簡介- 程式執行內容 • 1. ReadFtpConf() function:將ftpApplet.htm參數傳入 • 2. connect() function:設定ftp server連線 ftpclient.connect(serverHost) ftpclient.setFileType(FTP.BINARY_FILE_TYPE); ftpclient.enterLocalPassiveMode();
Active FTP(主動式)cont-1 • 傳統式 FTP 連線方式是採用主動模式,由用戶端隨機使用一個大於 1023 (也就是1024以上)的通訊埠(為了方便說明我們以 port N 來代表),與 FTP 伺服器的命令通訊埠(port 21) 建立連線,同時用戶端自己開啟一個 N+1 的通訊埠等待伺服器連線。伺服器接到用戶端的命令之後,便使用資料通訊埠(port 20)主動與用戶端的 port N+1 建立資料連線。
Active FTP(主動式)cont-2 • 這樣的模式有點像我們開車去加油的溝通方式,駕駛打開窗戶(port N)對著服務人員(port 21)要求加油命令,同時打開油箱蓋、露出加油孔(port N+1),服務人員及拿著油槍(port 20)對著加油孔(port N+1)加油。 • 所謂的主動式,是以伺服器的觀點來看。
Active FTP(主動式)cont-3 • FTP 伺服器開啟 port 21 接受來自外部任意通訊埠的連線(由用戶端要求建立連線) • FTP 伺服器使用 port 21 連線到外部任一大於 1023 的通訊埠(回應用戶端的命令埠) • FTP 伺服器使用 port 20 連線到外部任一大於 1023 的通訊埠(伺服器主動建立資料連線) • FTP 伺服器開啟 port 20 接受來自外部任一大於 1023 的通訊埠連線 (用戶端回覆伺服器資料連線)
Active FTP(主動式)cont-4 步驟一、用戶端使用 port 1024 與伺服器建立連線,並提供 port 1025 的資訊給伺服器。 步驟二、伺服器回應用戶端的連線。 步驟三、伺服器主動與用戶端的 port 1025 建立連線。 步驟四、用戶端回覆伺服器。
Active FTP(主動式)cont-5 • 由此可知主動式連線的真正問題不在於伺服器,而是在於用戶端的防火牆。由於用戶端程式並不是自行建立資料連線,而是自己開啟一個通訊埠,要求伺服器連線進來,這對用戶端的防火牆來說是一個危險的安全警訊,大部分的網路環境,都不允許防火牆外部的系統連線到內部的用戶端電腦。
Passive FTP(被動式)cont-1 • 為了解決由伺服器連線到用戶端所產生的安全疑慮,因此發展出了另一種不同的連線模式,稱之為被動模式(Passive Mode, PASV)。讓用戶端程式可以在連線的時候,通知伺服器使用被動模式連線。
Passive FTP(被動式)cont-2 • 使用被動模式 FTP ,不論命令連線或是資料連線都是由用戶端建立,以解決防火牆以及相關資安問題。 • 當用戶端開啟 FTP 連線時,用戶端程式先在本機開兩個大於1023的通訊埠(N, N+1),利用 port N 與伺服器的 port 21 建立連線。 • 不同於主動模式的連線方式,用戶端這次不再提供 N+1 port 與 IP 位址給伺服器,而是送出 PASV 的命令。 • 伺服器收到 PASV 的命令之後,即開啟一個大於 1023 的通訊埠(P),並將這個通訊埠連同伺服器 IP 回覆給用戶端,被動等待用戶端連線,用戶端即利用 port N+1與伺服器所提供的 port P 建立資料連線。
Passive FTP(被動式)cont-3 • 以伺服器的觀點來看,要完成一個被動式連線,伺服器必須提供以下幾個溝通管道: • FTP 伺服器開啟 port 21 接受來自外部任意通訊埠的連線(由用戶端要求建立連線) • FTP 伺服器使用 port 21 連線到外部任一大於 1023 的通訊埠(回應用戶端的命令埠) • FTP 伺服器開啟一個大於 1023 的通訊埠,接受來自外部任一大於 1023 的通訊埠連線 (用戶端與伺服器建立資料連線) • FTP 伺服器使用一個大於 1023 的通訊埠,連線到外部任一大於 1023 的通訊埠(伺服器回復資料給用戶端)
Passive FTP(被動式)cont-4 步驟一、用戶端使用 port 1024 與伺服器建立連線,並發出 PASV 的要求。步驟二、伺服器回應用戶端的連線,並通知用戶端,伺服器已開啟 port 1120 等待資料連線。步驟三、用戶端使用 port 1025 與伺服器的 port 1120 建立資料連線。步驟四、伺服器回覆用戶端。
Passive FTP(被動式)cont-5 • 使用被動模式雖然解決了用戶端的問題,卻也為伺服器帶來了一些問題,最大的問題在於伺服器必須開啟一定範圍的通訊埠供用戶端連線,好在目前絕大部分的 FTP 伺服器軟體,皆可以由管理者決定開啟哪些範圍的通訊埠。 • 另一個問題則是部分作業系統提供的的FTP命令列,不支援被動模式,因此必須使用其他的用戶端程式。
主動式 FTP :命令連線: 用戶端 port N --> 伺服器 port 21 資料連線: 伺服器 port 20 --> 用戶端 N+1 Summary-1 • 被動式 FTP :命令連線: 用戶端 port N --> 伺服器 port 21 資料連線: 用戶端 port N+1 --> 伺服器 port P
Summary-2 • 兩種模式各有優缺點,主動模式對伺服器來說比較安全,但對用戶端來說卻是可能帶來危險,因此很可能被用戶端的防火牆所阻擋了。 • 使用被動模式雖然解決了用戶端的問題,但相對的伺服器必須開啟一定範圍的通訊埠供用戶端連線,好在目前絕大部分的 FTP 伺服器軟體,皆可以由管理者決定開啟哪些範圍的通訊埠。
Reference • http://vbb.twftp.org/forumdisplay.php?f=17(台灣FTP聯盟) • http://slacksite.com/other/ftp.html