|
-
首頁(yè) > 知識(shí)庫(kù) >
Active FTP 及 Passive FTP
-
Active FTP 及 Passive FTP
在大部份的防火牆設(shè)定中,使用 FTP 傳輸檔案時(shí)經(jīng)常會(huì)遇到需要設(shè)定使用 passive mode 的 FTP.但大部份的 FTP client 軟體,default 大都是 active mode FTP,這二種 FTP 模式在傳輸上有何不同?先了解 FTP 的工作方式,有助於了解 active FTP 及 passive FTP 的不同.
一般的 FTP 使用 TCP port 20 及 21 二個(gè) port. 正常來(lái)說(shuō), port 20 是傳輸資料用,而 port 21 傳輸命令.但事實(shí)上並不是一直使用 port 20 來(lái)傳輸資料.
Active mode FTP (主動(dòng)模式 FTP)
在 Active 模式的 FTP client 一開(kāi)始時(shí)會(huì)先使用一個(gè)大於 1024(N) 的 TCP port 連結(jié)至 FTP server 的port 21. 然後 FTP client 會(huì)打開(kāi)該 port 的下一個(gè)數(shù)字的 port (N+1) 並送至 FTPserver 說(shuō)期望下次的溝通可以經(jīng)由新的 port (N+1),這樣比較不會(huì)占用到 FTP server 的 port 21 而影響別的 FTP sessions.同時(shí) FTP server 會(huì)使用 port 20 連結(jié)至 FTP client 新送過(guò)來(lái)的 port 號(hào)來(lái)傳資料.
所以在防火牆上需要打開(kāi):
FTP server port 21 from anywhere # 給 FTP client 開(kāi)始連接
FTP server port 21 to port > 1024 # 給 FTP server 回應(yīng) client 命令
FTP server port 20 to port > 1024 # 給 FTP server 開(kāi)始資料傳輸
FTP server port 20 from port > 1024 # 給 FTP cleint 傳送 data ACK 給 server
所以連接順序?yàn)?
1. FTP client use TCP port 1026 for command to FTP server command port 21
2. FTP server use TCP port 21 responed to FTP client command port 1026
3. FTP server use TCP port 20 for sending data to FTP client data port 1027 (1026 + 1)
4. FTP client use TCP port 1027 ( 1026 + 1) for data ACK to FTP server port 20
問(wèn)題在於使用 active mode FTP 時(shí)主控權(quán)在 FTP client, FTP client 並不是真正的連至 FTP server 的data port (TCP port 20),它只是告訴 FTP server 它準(zhǔn)備在那個(gè) port 接收資料及port+1 傳送 ACK.並期望 FTP server 可以主動(dòng)連接至 FTP client 所期望的 port.這在使用防火牆的環(huán)境中就會(huì)造成問(wèn)題.
Passive mode FTP (被動(dòng)模式 FTP)
解決主動(dòng)模式在防火牆外面時(shí)所發(fā)生無(wú)法連接的問(wèn)題,可以用被動(dòng)模式 FTP. 在Passive mode FTP 下,FTP client一開(kāi)始和 active mode FTP 一樣,打開(kāi)二個(gè) port (N > 1024 及 N+1), 使用第一個(gè)port 連接至 FTP server的 port 21,並送出命令 PORT 讓 server 連至 N port 再送出 PASV 命令給 server,這樣會(huì)造成 server使用 一個(gè)大於 1024 的 port 連接至 client 並送出命令 PORT N ( N >1024 ) 給client. 樣 client 就會(huì)使用 N + 1 並開(kāi)始傳輸資料.
這樣子在防火牆上需要設(shè)定
FTP server TCP port 21 from anywhere # FTP client 開(kāi)始連接至 FTP server
FTP server TCP port 21 to port > 1024 # FTP server 回應(yīng) client 控制
FTP server TCP port > 1024 from anywhere # FTP client 資料傳輸
FTP server TCP port > 1024 to client port > 1024 # FTP server 回應(yīng)資料 ACK至 client data port
連接順序?yàn)?
1. FTP client use TCP port 1026 to FTP server command port 21 via command PASV
2. FTP server use TCP port 21 to FTP client 1026 command port for reply data port 2024
3. FTP client use TCP port 1027 (N+1) to FTP server 2024 for data transmit and ACK
4. FTP server use TCP port 2024 to FTP client for data transmit and ACK
因?yàn)?passive mode FTP 是由 FTP server 發(fā)起一個(gè)大於 1024 的 port 至 client,在防火牆上的設(shè)定就相對(duì)簡(jiǎn)單,而可以傳輸資料而不會(huì)被防火牆 block
註:在 Windows 下的 ftp client 並沒(méi)有 passive 這個(gè)指令,但可以利用 literal 指今來(lái)下給 FTP server FTP session 為 passive mode
|