FTP

来源:互联网 发布:轴类零件数控加工编程 编辑:程序博客网 时间:2024/06/12 22:19

java操作FTP时遇到的问题小结

    博客分类: 
  • FTP
ftp移动文件访问模式pasv 
今天在做java开发FTP文件上传时,遇到了一些问题。现在项目完成了,有时间总结一下。我用的第三方jar是:etdftpj-1.4.5.jar。 

问题一:java在获取FTP Client时,指定路径在Windows和Linux下的表示方式不同。 
Windows FTP Server:"/folder"; 
Linux FTP Server:"\folder"。 

问题二:FTP访问方式 
FTP是仅基于TCP的服务,它使用两个端口,一个命令端口,一个数据端口。通常情况下,命令端口号21,数据端口号20.但是由于FTP的访问方式不同,数据端口号不一定是20。 
1、主动模式 

 
第一步:客户端的命令端口与FTP服务器端的命令端口21建立连接,并发送命令"PORT 1027"; 
第二步:FTP服务器的命令端口给客户端的命令端口回一个"ACK"; 
第三步:FTP服务器发起一个从它自己的数据端口20向客户端先前指定的数据端口20的连接; 
第四步:客户端给FTP服务器回一个"ACK"。 
2、被动模式(PASV) 

 
第一步:客户端的命令端口与FTP服务器端的命令端口21建立连接,并发送命令"PASV"; 
第二步:FTP服务器返回一个命令"PORT 2024",告诉客户端用哪个端口侦听数据连接; 
第三步:客户端初始化一个从自己的数据端口到FTP服务器指定的数据端口的连接; 
第四步:FTP服务器给客户端回一个"ACK"。 
总结: 
主动FTP: 
    命令连接:客户端 >1023端口 -> 服务器 21端口 
    数据连接:客户端 >1023端口 <- 服务器 20端口 
被动FTP: 
    命令连接:客户端 >1023端口 -> 服务器 21端口 
    数据连接:客户端 >1023端口 -> 服务器 >1023端口 
下面是主动与被动FTP优缺点的简要总结: 
    主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。 
    幸运的是,有折衷的办法。既然FTP服务器的管理员需要他们的服务器有最多的客户连接,那么必须得支持被动FTP。我们可以通过为FTP服务器指定一个有限的端口范围来减小服务器高位端口的暴露。这样,不在这个范围的任何端口会被服务器的防火墙阻塞。虽然这没有消除所有针对服务器的危险,但它大大减少了危险。 

问题三:实现在FTP服务器上移动文件 
rename(fileName, ../path/fileName);
  • 大小: 2.6 KB
  • 大小: 2.9 KB
0 0
原创粉丝点击