ftp端口号20和21的区别是21端口用于连接,
20端口用于传输数据。进行FTP文件传输中,
客户端首先连接到FTP服务器的21端口,进行用户的认证,
认证成功后,要传输文件时,服务器会开一个端口为20来进行传输数据文件。
这时候,可以在ftp下使用命令:quote PASV
试试用以被动模式连接。
端口21监听,处理控制信息,再以端口20连接客户端进行数据传送。而经常的通过外网的NAT的,基本端口20的数据连接都会被禁止掉。
// 基本意思:你们访问默认21端口(认证端口)开放了,20端口(数据传输)禁掉了,
// 下面这个配置,就是让21端口,去做数据传输(大概就是这个意思哈)
FTPClient client = new FTPClient();
log.info("设置PASV模式");
client.enterLocalPassiveMode();
log.info("设置UseEPSVwithIPv4");
client.setUseEPSVwithIPv4(true);
所以如果想对外网开放ftp,最好使用PASV模式。PASV被动模式
以端口21监听,有连接请求时,随机开放一个比较大的端口号来处理数据传输。