FTP是有兩種數據連接模式的,主動模式和被動模式。
PORT(主動)方式:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,客戶端在命令鏈路上用PORT命令告訴服務器:“我打開了XXXX端口,你過來連接我”。於是服務器從20端口向客戶端的XXXX端口發送連接請求,建立一條數據鏈路來傳送數據。
PASV(被動)方式的連接過程是:
客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,服務器在命令鏈路上用PASV命令告訴客戶端:“我打開了XXXX端口,你過來連接我”。於是客戶端向服務器的XXXX端口發送連接請求,建立一條數據鏈路來傳送數據。
ftp默認為port主動模式,如果客戶端pc所在網絡有防火牆,則ftp server在數據傳輸時,就不能連接到client。
解決方法:
修改模式
Windows Cmd下默認為主動模式,更改Ftp為被動的方法:
ftp> quote PASV
Linux Ftp命令下默認為被動模式,更改為主動的方法:
ftp> passive