ftp 主動模式和被動模式

2021-08-07 07:56:53 字數 3351 閱讀 4747

專案中使用ftp client連線ftp伺服器上傳檔案時,遇到ftp能連線上,但是上傳失敗,執行

ftp.storefile(filename, input)
返回false,新增

ftp.enterlocalpassivemode();//切換為被動模式
上傳成功。

折騰了幾個小時,於是覺得有必要了解下ftp主動模式與被動模式的上傳原理。

在主動模式下,ftp客戶端隨機開啟乙個大於1024的埠n向伺服器的21號埠發起連線,然後開放n+1號埠進行監聽,並向伺服器發出port n+1命令。伺服器接收到命令後,會用其本地的ftp資料埠(通常是20)來連線客戶端指定的埠n+1,進行資料傳輸。

在被動模式下,ftp庫戶端隨機開啟乙個大於1024的埠n向伺服器的21號埠發起連線,同時會開啟n+1號埠。然後向伺服器傳送pasv命令,通知伺服器自己處於被動模式。伺服器收到命令後,會開放乙個大於1024的埠p進行監聽,然後用port p命令通知客戶端,自己的資料埠是p。客戶端收到命令後,會通過n+1號埠連線伺服器的埠p,然後在兩個埠之間進行資料傳輸。

總的來說,主動模式的ftp是指伺服器主動連線客戶端的資料埠,被動模式的ftp是指伺服器被動地等待客戶端連線自己的資料埠。

被動模式的ftp通常用在處於防火牆之後的ftp客戶訪問外界ftp伺服器的情況,因為在這種情況下,防火牆通常配置為不允許外界訪問防火牆之後主機,而只允許由防火牆之後的主機發起的連線請求通過。因此,在這種情況下不能使用主動模式的ftp傳輸,而被動模式的ftp可以良好的工作。

win 下面設定ftp模式

一、什麼是pasv和port方式

(1)port其實是standard模式的另乙個名字,又稱為active模式。中文意思是「主動模式。

(2)pasv也就是passive的簡寫。中文就是「被動模式。

二、兩者不同

不同之處是由於port(主動)這個方式需要在接上tcp21埠後,伺服器通過自己的tcp20來發出資料。並且需要建立乙個新的連線來傳送檔案。而port的命令包含一些客戶端沒用的資料,所以有了pasv的出現。而pasv模式擁有port模式的優點,並去掉一些port的缺點。pasv執行方式就是當伺服器接收到客戶端連線請求時,就會自動從埠1024到5000中隨機選擇乙個和客戶端建立連線傳遞資料。由於被動且自動建立連線,容易受到攻擊,所以安全性差。

三、常見的ftp客戶端軟體port方式與pasv方式的切換方法

大部分ftp客戶端預設使用pasv方式。ie預設使用port方式。在大部分ftp客戶端的設定裡,常見到的字眼都是「pasv」或「被動模式」,極少見到「port」或「主動模式」等字眼。因為ftp的登入方式只有兩種:port和pasv,取消pasv方式,就意味著使用port方式。

(1)ie:工具 ->internet選項 -> 高階 ->「使用被動ftp」(需要ie6.0以上才支援)。

(2)cuteftp:edit ->setting -> connection -> firewall-> 「pasv mode」 或file -> sitemanager,在左邊選中站點 -> edit -> 「use pasvmode」 。

(4)flashfxp:選項 ->引數選擇 -> **/防火牆/標識 -> 「使用被動模式」或站點管理

-> 對應站點 -> 選項-> 「使用被動模式」或快速連線 -> 切換-> 「使用被動模式」。

一、系統環境:linux

as4 + vsftpd

二、網路結構

xp(client)-----[eth0]linux(firewall)[eth1]--------linux(ftpserve

ip:172.16.0.0/24 

172.16.0.0/16 

192.168.0.0/24 

192.168.0.10/24

三、ftp配置:

# vi /etc/vsftpd/vsftpd.conf

pasv_enable=yes

pasv_min_port=3000

pasv_max_port=4000

四、防火牆配置

#!/bin/bash

#ip.sh

echo "1" >/proc/sys/net/ipv4/ip_forward

modprobe 

ip_conntrack_ftp

modprobe 

ip_nat_ftp

iptables -f

iptables -x

iptables -z

iptables -t nat -f

iptables -t nat -x

iptables -t nat -z

iptables -p input accept

iptables -p output accept

iptables -p forward 

drop

iptables -t filter -a forward -p tcp -s 172.16.0.0/16 -d192.168.0.10 --dport 21 -j accept

iptables -t filter -a forward -p tcp -s 192.168.0.10 --sport 21 -jaccept

iptables -t filter -a forward -p tcp -s 172.16.0.0/16 -d192.168.0.10 --dport 3000:4000 -j accept

iptables -t filter -a forward -p tcp -s 192.168.0.10 --sport3000:4000 -j accept

iptables -t filter -a forward -p tcp -m state --staterelated,established -j accept

iptables -t filter -a forward -p icmp --icmp-type 8 -j accept

iptables -t filter -a forward -p icmp --icmp-type 0 -j accept

五、驗證:

# 在xp下用ftp命令連線,都是採用主動模式連線,可以採用圖形介面的軟體,預設一般為被動模式。

# netstat-an|grep 

172

FTP主動模式和被動模式

ftp主動模式和被動模式 ftp是僅基於tcp的服務,不支援udp。與眾不同的是ftp使用2個埠,乙個資料埠和乙個命令埠 也可叫做控制埠 通常來說這兩個埠是21 命令埠 和20 資料埠 但ftp工作方式的不同,資料埠並不總是20。這就是主動與被動ftp的最大不同之處。一 主動ftp 主動方式的ftp...

ftp主動模式和被動模式

ftp是檔案傳輸協議的簡稱,ftp傳輸協議有著眾多的優點所以傳輸檔案時使用ftp協議的軟體很多,ftp協議使用的埠是21 也稱為控制埠 其實還有乙個資料埠20,根據ftp工作方式的不同,資料埠也不都是20,主動模式的被動模式使用的資料埠是不一樣的,下面我就一步一步介紹主動ftp模式和被動ftp模式的...

FTP 主動模式和被動模式

ftp可以執行兩種模式 主動模式和被動模式。ftp的客戶端和伺服器之間有兩個通道,分別是命令通道和資料通道 這兩個通道存在的目的是把tcp連線分開。命令通道用來傳送命令和接收響應,資料通道專門用來傳輸檔案。這樣設計有乙個很大的好處就是 命令的傳送不用等待資料傳輸完成。在主動模式中,客戶端從任意非特殊...