今天从公网的服务器链接本地内网的FTP server copy文件时,系统总是提示227 Entering Passive Mode (xxx,xxx,,xxx,xxx,x),非常奇怪,因而上网找资料仔细研究了一下,原来FTP有两种工做模式,PORT方式和PASV方式,中文意思为主动式和被动式 ,详细介绍以下:服务器
主动 FTP :
命令链接:客户端 >1024 端口 → 服务器 21 端口
数据链接:客户端 >1024 端口 ← 服务器 20 端口ide
被动 FTP :
命令链接:客户端 >1024 端口 → 服务器 21 端口
数据链接:客户端 >1024 端口 ← 服务器 >1024 端口spa
PORT(主动)方式的链接过程是:客户端向服务器的FTP端口(默认是21)发送链接请求,服务器接受链接,创建一条命令链路。当须要传送数据时, 客户端在命令链路上用PORT命令告诉服务器:“我打开了***X端口,你过来链接我”。因而服务器从20端口向客户端的***X端口发送链接请求,创建 一条数据链路来传送数据。 日志
PASV(被动)方式的链接过程是:客户端向服务器的FTP端口(默认是21)发送链接请求,服务器接受链接,创建一条命令链路。当须要传送数据时, 服务器在命令链路上用PASV命令告诉客户端:“我打开了***X端口,你过来链接我”。因而客户端向服务器的***X端口发送链接请求,创建一条数据链 路来传送数据。 server
因为个人本地FTP服务器在内网,只是从外网映射了两个端口(20,21),因此没法使用PASV方式,解决此问题的办法也很简单,关闭客户端的PASV方式,强制其用PORT方式访问服务器,登陆FTP服务器后用passive命令关闭客户端的PASV方式,以下: it
ftp> passive
Passive mode off.class
ftp> passive (再次运行命令可打开)登录
Passive mode on. ftp