问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

apache ftpserver 是主动还是被动

发布网友 发布时间:2022-04-24 15:45

我来回答

1个回答

热心网友 时间:2023-10-20 08:01

在做项目的时候我才发现,FTP竟然有主动FTP和被动FTP之分。FTP的设置主要是由FTP服务器设置的。同样的一段代码,在本地测试的时候一切正常,但是访问局方的FTP服务器时却不能传输数据。
下面我先简要地自己说一下,我对主被动FTP的理解。
众所周知,FTP是一个比较特殊的服务,它占用了20和21两个端口,21是命令端口,20是数据端口。顾名思义,21端口是用来接发命令,20端口用来传递数据。但是并不是所有的时候都用20端口来实现数据交换。
主动FTP过程大致如下:
1、客户端启用端口N(N>1024,因为1024之前为特殊端口,不能手动占用,把N当作客户端的命令端口)和端口N+1(客户端的数据端口),从端口N向服务器的21端口发送PORT命令,其中PORT命令包含客户端IP和数据端口
2、服务器接收到客户端的PORT命令后,并得知客户端用N+1端口监听数据。接着,服务器向客户端发送ACK应答(ACK与TCP通信中的连接握手一样)
3、服务器用20端口再向客户端的N+1端口发送数据请求
4、客户端向服务器端发送数据ACK应答
以上就是主动FTP的大致过程,但是数据请求的发起方是服务器,如果此时客户端的防火墙启用了高端端口的屏蔽的话,有可能会发生阻塞,所以主动FTP的情况下,客户端最好把防火墙关闭了。

被动FTP过程大致如下:
1、客户端启用端口N(同样的N>1024)和N+1,N用作命令端口,N+1用作数据端口。然后客户端向服务器端发送PASV请求,告诉服务器端,这是被动FTP请求
2、服务器端接收到PASV请求后,启动一个M(同样>1024)端口当作数据端,并发送PORT M到客户端
3、客户端得到服务器端的数据端口后,再由端口N+1向服务器的M端口发起数据请求
4、服务器端通过N端口向客户端的N+1端口发送ACK应答
以上是被动FTP的大致过程,与主动FTP请求不同,请求的发起方是客户端,这样客户端就不会为防火墙的问题感到烦恼,但是同样道理,服务器端的端口就会有了*。

所以,一般情况下。服务器端为了方便管理,一般采用被动FTP方式连接。当然客户端可以通过ftp -d host port命令向服务器发送请求,可以看出到底用的是主动FTP还是被动FTP。

这次我就遇到了这样的问题,写FTP上传下载代码时,把网上的东西copy过来,很顺利地在本地测试通过了。但是链接到局方的服务器的时候,怎么也不能上传和下载,而且不会抛出异常。后来我也是试着添了一行代码,结果测通了,代码如下:
FtpDefine.ftpServer.enterLocalPassiveMode();
怎么样,看起来很简单吧。因为写代码默认情况下是主动FTP,必须通过enterLocalPassiveMode()方法设置成被动FTP才能顺利上传下载。

另外还有很多问题需要考虑,比方说代码的可扩展性、可移植性等等。就拿这次的代码来说,我测试的时候客户端和服务器端都是Windows Xp系统,而且FTP服务器设置的是主动FTP。但是真正用的时候,客户端是Linux系统,服务器虽然是Windows的,但是他们没有用Windows自带的FTP,而是用的软件,用法与Linux系统的相似,所以因为这个问题,我配错了配置文件,结果在代码中切换服务器目录时,总是报错。所以再此,我提醒大家,万事小心谨慎!希望我写的这些会对大家有点帮助。如果觉得看不懂的话,请参考我下面列出的链接地址,那里有更详细的说明。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
万能粉碎机清洁规程 中药粉碎机如何清洗比较好 磨粉机能用水洗吗 正确的家用粉碎机清洗方法 粉碎机清洗不干净粉碎机怎么清洗才干净 励志语句长句精选123句 caxa如何保存图幅模板 美迪特MDT-IN158重要参数 打玻尿酸已一个月眼睛疼,会不会打玻尿酸一个月,突然眼睛疼会不会... 玻尿酸失明概率真的小吗-玻尿酸失明有光感还能恢复吗 陈华军人物简介 apache ftpserver最大线程数 apache ftpserver1.0.6设置最大连接数和最大登录数问题 为什么使用apache的ftp包上传文件,只有第一文件能上传成功 apache ftp retr指令怎么用 如何建立ftp安装到apache apache和ftp提供什么样的服务 apache ftpserver 无法启动 外汇保证金到底是和谁在交易 外汇交易种的买入价卖出价,是什么意思?到底谁买谁? 在外汇市场上交易的是些什么人? 外汇市场里交易者的对手是谁? 谁参与外汇市场? 保证金外汇市场里,普通的交易者到底和谁在做交易呢?市场价格的突然大幅... 到底是谁在外汇市场中交易 什么是外汇交易,具体的是怎么交易的呢? 什么是外汇交易,外汇市场如何运作,外汇交易的参与者 外汇市场是谁跟谁交易? 怎样用手机进入学习强国后台管理 我们身边的植物300字作文 水果生日蛋糕怎么做好吃,水果生日蛋糕的家 ftp服务器与apache服务器有什么区别 神奇宝贝类完结的小说越多越好 apache的FTP改变工作目录求助 Apache FtpServer在64位系统下服务不能启动解决办法怎么解决 求好看的宠物小精灵小说,要长篇的。 apache日志和ftp日志有什么区别 求长篇神奇宝贝小说,不下5本!!! java如何设置apache ftpserver api 的数据端口 如何用java 程序启动Apache-ftpserver 功能 神奇宝贝耽美完结小说,一定要耽美的 怎么判断apache ftpserver是否打开 求神奇宝贝小说,要完本。 上传文件至远程服务器的ApacheFTPserver服务卡住问题 求助,apacheFTPServer指定上传目录问题 神奇宝贝完结的小说有哪些? Apache下的FTP上传文件,使用FTPClient的appendFileStream方法返回输出流为空?望高手指点。急!!!! apache的ftpserver有没有sftp服务 求神奇宝贝完本小说 有什么神奇宝贝完结小说的 苦求神奇宝贝小说【要长篇】【快】有名的我都看光了!要其他的!【长篇哦】!10个10分