ftp 介紹與實作

30
FTP 介介介介介 Team 5 597435019 介介介 597435025 介介介

Upload: almira

Post on 18-Mar-2016

85 views

Category:

Documents


7 download

DESCRIPTION

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. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: FTP  介紹與實作

FTP 介紹與實作Team 5597435019 王尹鍾597435025 彭昭明

Page 2: FTP  介紹與實作

Introduction

Job Assign FTP 由來 FTP 運作原理 Code 簡介 Active and Passive( 主動與被動模式 ) Summary Reference

Page 3: FTP  介紹與實作

Job Assign

597435019 王尹鍾 :組長 , 統籌分配工作與進度排定專案時程 , 與 meeting 時間搜集相關 ftp 資料,書面文件撰寫,介面規劃與實作規劃 ftp 環境建置 &test

Page 4: FTP  介紹與實作

Job Assign

597435025 彭昭明 : ftp 技術 survey程式撰寫系統測試

Page 5: FTP  介紹與實作

FTP 由來 檔案傳輸協定〈 FTP-File Transfer Protoco

l 〉是學術網路上所提供的眾多服務資源項目中,最常用的項目之一,透過此公共協定,大家傳輸模式才會一致,應用此一方式做檔案交換。 FTP 標準 : RFC 959

Page 6: FTP  介紹與實作

FTP 運作原理 - cont1 FTP 是一種主從式的架構 , 也就是 Client an

d Server 架構,說什麼主從式對一般人來說恐怕是太難懂了一些 , 說穿了既然是主從式,那這個協定要運行一定就要有人開 FTP Server 也要有人用 FTP Client ,唯有這兩組軟體搭配,才能達成 FTP 檔案傳輸的功效。

Page 7: FTP  介紹與實作

FTP 運作原理 - cont2 一般主從架構應用程式( HTTP 、 SMTP 、 POP

3.. )都只需要一條連線、一個通訊埠 ,只會在伺服器與用戶端建立一個 socket 連結,此連結同時處理伺服器端與用戶端連線及資料的傳送。 但 FTP 在伺服器端及用戶端之間建立兩條連線、兩個通訊埠 ,一個以 FTP 通訊協定預設的通訊埠

(port 21) 作為通訊連結,另一個是資料傳送的連線(一般都設在 port 20 ), FTP 資料傳送的模式又分二種: PORT 、 PASV 。兩者主要分別在於它們會向 FTP 伺服器發出不同的 FTP Command 。

Page 8: FTP  介紹與實作

FTP 運作原理 - cont3

資料通訊埠 (Data Port) :因為初期定義 FTP 通訊定的時候,並沒有考慮到後來防火牆的發展,使得傳統的 FTP 的工作原理無法完全適用在網際網路環境,因此就發展出了另外一種替代模式的 FTP 連線方式,在這種模式底下, Data Port 不再只是 2

0 ,也因此造成很多讀到舊資料的人,認為只要將 20 、 21 兩個通訊不打開, FTP Server 就能正常運作這樣的錯誤觀念。

Page 9: FTP  介紹與實作

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

Page 10: FTP  介紹與實作

Code 簡介 -ftpApplet.htm 頁面設定參數 -1 設定上傳路徑: <param id="UserDownloadDir_a

pplet" 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">

Page 11: FTP  介紹與實作

Code 簡介 -ftpApplet.htm 頁面設定參數 -2

<param id="Marker1FTPpassword_applet" name="Marker1FTPpassword_applet" value="9999">

<param id="Marker1FTPport_applet" name="Marker1FTPport_applet" value="21">

Page 12: FTP  介紹與實作

Code 簡介 - 程式執行內容 1. ReadFtpConf() function: 將 ftpApplet.htm 參數傳入 2. connect() function: 設定 ftp server 連線 ftpclient.connect(serverHost) ftpclient.setFileType(FTP.BINARY_FILE_TYPE); ftpclient.enterLocalPassiveMode();

Page 13: FTP  介紹與實作

ftpApplet.htm

Page 14: FTP  介紹與實作

FTP 執行畫面 -1

Page 15: FTP  介紹與實作

FTP 執行畫面 -2

Page 16: FTP  介紹與實作

FTP 執行畫面 -3

Page 17: FTP  介紹與實作

Active FTP (主動式) cont-1

傳統式 FTP 連線方式是採用主動模式,由用戶端隨機使用一個大於 1023 ( 也就是 1024 以上 )的通訊埠 ( 為了方便說明我們以 port N 來代表 ) ,與 FTP 伺服器的命令通訊埠 (port 21) 建立連線,同時用戶端自己開啟一個 N+1 的通訊埠等待伺服器連線。伺服器接到用戶端的命令之後,便使用資料通訊埠 (port 20) 主動與用戶端的 port N+1 建立資料連線。

Page 18: FTP  介紹與實作

Active FTP (主動式) cont-2

這樣的模式有點像我們開車去加油的溝通方式,駕駛打開窗戶 (port N) 對著服務人員 (port 21) 要求加油命令,同時打開油箱蓋、露出加油孔 (port N+1) ,服務人員及拿著油槍 (port 20) 對著加油孔 (port N+1) 加油。

所謂的主動式,是以伺服器的觀點來看。

Page 19: FTP  介紹與實作

Active FTP (主動式) cont-3 FTP 伺服器開啟 port 21 接受來自外部任意通訊埠的連線 ( 由用戶端要求建立連線 ) FTP 伺服器使用 port 21 連線到外部任一大於 10

23 的通訊埠 (回應用戶端的命令埠 ) FTP 伺服器使用 port 20 連線到外部任一大於 10

23 的通訊埠 ( 伺服器主動建立資料連線 ) FTP 伺服器開啟 port 20 接受來自外部任一大於

1023 的通訊埠連線 ( 用戶端回覆伺服器資料連線 )

Page 20: FTP  介紹與實作

Active FTP (主動式) cont-4

步驟一、用戶端使用 port 1024 與伺服器建立連線,並提供 port 1025 的資訊給伺服器。 步驟二、伺服器回應用戶端的連線。 步驟三、伺服器主動與用戶端的 port 1025 建立連線。 步驟四、用戶端回覆伺服器。

Page 21: FTP  介紹與實作

Active FTP (主動式) cont-5

由此可知主動式連線的真正問題不在於伺服器,而是在於用戶端的防火牆。由於用戶端程式並不是自行建立資料連線,而是自己開啟一個通訊埠,要求伺服器連線進來,這對用戶端的防火牆來說是一個危險的安全警訊,大部分的網路環境,都不允許防火牆外部的系統連線到內部的用戶端電腦。

Page 22: FTP  介紹與實作

Passive FTP (被動式) cont-1

為了解決由伺服器連線到用戶端所產生的安全疑慮,因此發展出了另一種不同的連線模式,稱之為被動模式 (Passive Mode, PASV) 。讓用戶端程式可以在連線的時候,通知伺服器使用被動模式連線。

Page 23: FTP  介紹與實作

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 建立資料連線。

Page 24: FTP  介紹與實作

Passive FTP (被動式) cont-3 以伺服器的觀點來看,要完成一個被動式連線,伺服器必須提供以下幾個溝通管道:

FTP 伺服器開啟 port 21 接受來自外部任意通訊埠的連線( 由用戶端要求建立連線 )

FTP 伺服器使用 port 21 連線到外部任一大於 1023 的通訊埠 (回應用戶端的命令埠 ) FTP 伺服器開啟一個大於 1023 的通訊埠,接受來自外部任一大於 1023 的通訊埠連線 ( 用戶端與伺服器建立資料連線 ) FTP 伺服器使用一個大於 1023 的通訊埠,連線到外部任一大於 1023 的通訊埠 ( 伺服器回復資料給用戶端 )

Page 25: FTP  介紹與實作

Passive FTP (被動式) cont-4步驟一、用戶端使用 port 1024 與伺服器建立連線,並發出 PASV 的要求。步驟二、伺服器回應用戶端的連線,並通知用戶端,伺服器已開啟 port 1120 等待資料連線。步驟三、用戶端使用 port 1025 與伺服器的 port 1120 建立資料連線。步驟四、伺服器回覆用戶端。

Page 26: FTP  介紹與實作

Passive FTP (被動式) cont-5

使用被動模式雖然解決了用戶端的問題,卻也為伺服器帶來了一些問題,最大的問題在於伺服器必須開啟一定範圍的通訊埠供用戶端連線,好在目前絕大部分的 FTP 伺服器軟體,皆可以由管理者決定開啟哪些範圍的通訊埠。 另一個問題則是部分作業系統提供的的 FTP 命令列,不支援被動模式,因此必須使用其他的用戶端程式。

Page 27: FTP  介紹與實作

Summary-1 主動式 FTP :

命令連線: 用戶端 port N --> 伺服器 port 21

資料連線: 伺服器 port 20 --> 用戶端 N+1

被動式 FTP :

命令連線: 用戶端 port N --> 伺服器 port 21

資料連線: 用戶端 port N+1 --> 伺服器 port P

Page 28: FTP  介紹與實作

Summary-2

兩種模式各有優缺點,主動模式對伺服器來說比較安全,但對用戶端來說卻是可能帶來危險,因此很可能被用戶端的防火牆所阻擋了。 使用被動模式雖然解決了用戶端的問題,但相對的伺服器必須開啟一定範圍的通訊埠供用戶端連線,好在目前絕大部分的 FTP 伺服器軟體,皆可以由管理者決定開啟哪些範圍的通訊埠。

Page 29: FTP  介紹與實作

Reference

http://vbb.twftp.org/forumdisplay.php?f=17(台灣 FTP 聯盟) http://slacksite.com/other/ftp.html

Page 30: FTP  介紹與實作

Thank You