今天下午,原来在大学里广播电台的师弟找到我,说电台用来上传成绩的FTP打不开了,在Windows资源管理器中访问时,能弹出登录框,但登录之后就会出现“打开FTP服务器上的文件夹时发生错误。请检查是否有权限访问该文件夹 详细信息:操作超时”(如下图所示)。该服务器是Windows Server 2008系统,FTP服务使用的是IIS搭建的,这台服务器已经有好几年没有动过了,不应该存在突然访问不了的情况,我试着在一台Windows电脑上访问了一下FTP,发现了和师弟一样的情况。

 

 

 

这个提示框非常的迷惑人啊,说“请检查是否有【权限】访问该文件夹”,莫非是权限问题,我把FTP的用户权限以及文件夹的权限都检查了一遍,均没有问题。后来我上网查询,根据别人的方法分析了一通,发现均不适用。正当我一筹莫展之时,我看到了51CTO博客作者hyjy2504164765的一篇关于FTP的博文,里面介绍了FTP的连接分为主动模式与被动模式:

FTP是仅基于TCP的服务,不支持UDP。 与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21(命令端口)和20(数据端口)。但FTP工作方式的不同,数据端口并不总是20。这就是主动与被动FTP的最大不同之处。

 

通俗来说,主动模式是从服务器端向客户端发起连接;被动模式是客户端向服务器端发起连接。两者的共同点是都使用21端口进行用户验证及管理,差别在于传送数据的方式不同,PORT模式的FTP服务器数据端口固定在20,而PASV模式则在1025-65535之间随机选择。

 

PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求, 建立一条数据链路来传送数据。

PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。

想起了前段时间,我恰好我操作过服务器的安全组,封闭了大部分的入站端口,FTP这边只开启了20和21端口,而服务器的FTP使用的PASV模式,因为防火墙配置问题导致了客户端能够弹出用户名和密码的验证框,验证成功后却无法正常连接的问题,于是我放通了所有入站端口,进行测试,成功登录了FTP服务器,问题解决。

但为了服务器的安全考虑,今后不宜在防火墙、安全组上开放所有端口,可以先手动配置FTP服务端数据传输的端口范围(如:30000-30010),然后在防火墙上仅开放这一范围内的端口,可以大幅提高网络的安全性。

原文地址:http://www.cnblogs.com/coder-wys/p/16928608.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性