当前位置: 首页 > 图文教程 > 服务器 > FTP服务器 > 两权分立的FTP工作模式

FTP服务器
用SSL加密增强FTP服务器安全性
Windows下FTP服务器的安全管理
如何配置FTP服务器
FTP服务器快速架设全攻略
FTP服务器如何实现安全性 (上)
基于UNIX平台FTP服务器的建立(下)
Windows XP架设FTP服务器的方法教程
Linux系统架设VSFTP服务器实例解析
企业内部FTP服务器的架设
FTP服务器安全
Linux的ftp服务vsftp详细配置
Ubuntu自带的FTP服务器vsftpd技巧
在Linux下建立强大的FTP搜索引擎
用无线路由器构建FTP服务器
FTP服务中允许上传权限存在的问题
简单实用 Linux下的FTP服务器配置
FTP空间不足 Windows 系统性能监控来报警
如何启用Web服务器并运行FTP服务
FTP服务器架设的三方面安全因素
如何配置Linux操作系统下的FTP服务器

FTP服务器 中的 两权分立的FTP工作模式


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 34 ::
收藏到网摘: n/a

两权分立的FTP工作模式,工作环境: ADSL---(219.154.214.150)NAT(10.41.221.2)-----PC(10.41.221.6/FTPSERVER)。

一、映射21端口到PC,PC安装FTP服务serv-u,用serv-u是因为他可以方便的设置FTP的两种工作模式。外网发起连接为例。 PORT方式能连接,不能列目录 PASV方式能连接,不能列目录分析:FTP支持两种模式。这两种模式被称为“标准”(或PORT,或“主动”)和“被动”(或 PASV)。

“标准”模式FTP客户端会向FTP服务器发送PORT命令。“被动”模式客户端会向 FTP服务器发送PASV命令。这些命令是在建立FTP会话时通过FTP命令通道进行发送的。 2种模式FTP客户端都要建立一个到FTP服务器上TCP端口21的连接。客户选择大于 1024的端口发起连接,此连接会建立FTP命令通道。不能列目录是因为FTP使用不同的通道来传递数据,这也是FTP不同于HTTP服务的地方,HTTP需要一条通道就可以了

二、再映射20端口到PC,serv-u默认的方式就是PORT方式。 PORT方式能连接、也能列目录、能下载文件 PASV方式能连接、不能列目录下载文件分析:PORT方式:当FTP客户端需要接收数据(如文件夹列表或者文件)时,客户端就会通过 FTP命令通道发送PORT命令。此PORT命令包含了FTP客户端在哪个端口(比如3328)上接收数据的相关信息。

接下来,PC从TCP端口20发起到3328用户端口的连接,而这是一个新的连接,也许客户端防火墙会拦截。可以看出是服务器用20端口“主动”连接客户指定的端口,所以PORT方式也叫主动方式。该模式下有2个特点:

1客户是动态的端口,而服务器使用的是固定端口20,而且是服务器发起主动新连接。

2在FTP客户连接服务器的整个过程中,控制信道是一直保持连接的,而数据传输通道是临时建立的。 PASV方式不能到达是因为PASV要求服务器用动态的端口来连接,而这个端口一般在1024-5000之间,而且是用户发起连接,虽然PC开了此端口等待连接,但是NAT并没有映射这么多端口,所以通讯中断。

三、关闭20端口映射,再映射10001-10004到PC, PORT方式能连接、不能列目录、不能下载文件 PASV方式能连接、不能列目录、不能下载文件 serv-u真的很帅,在设置(高级)选项中设置10001-10004,然后启动被动模式,这样就可以建立连接了。

分析:这个实验的过程和分析被微软收录到微软的官方网站上,不过通过我的实验,发现他有个理解不全面的的地方,原因是他直接在可以见面的2台计算机上做的实验,而我把他们用NAT分开来做,更能看出问题。

问题出在所谓的“协商过程”,原文是这样的: “发送PASV指令,在这个指令中,用户告诉服务器自己要连接服务器的某一个端口,如果这个服务器上的这个端口是空闲的可用的,那么服务器会返回ACK的确认信息,之后数据传输通道被建立并返回用户所要的信息(根据用户发送的指令,如ls、dir、get等);如果服务器的这个端口被另一个资源所使用,那么服务器返回UNACK的信息,那么这时,FTP客户会再次发送PASV命令,这也就是所谓的连接建立的协商过程”

其实我抓到的报文是这样的:

1serv-u在设置PASV方式是可以指定端口,而且端口被立即启动到监听状态,比如我设置是10001 -10004,可以用有关软件“看到”这些端口已经被置为监听。

2当客户端通过该命令通道发送PASV命令时,FTP服务器会打开一个短暂的端口,并通知FTP客户端从该端口请求数据传输,而不是协商解决。FTP服务器通过将该短暂端口用作,数据传输的源端口来对该请求作出响应。显然,这个连接是由用户发起的,过也叫被动方式。

3在FTP客户连接服务器的整个过程中,控制信道是一直保持连接的,而数据传输通道是临时建立的。

4端口在1024-5000之间,不要大于5000,为什么呀,我也不知道,因为我设置5000以上就不能建立TCP连接,实际是这样理论我也不知道。

我没有用其它软件做FTP服务器,不能确定是否有协商过程,如果FTP这么弱智,那要协商到什么时候,不如直接告诉客户不就行了。缺点是端口有限,如果多个用户同时连接,这几个端口是不够的。

四、解决PASV问题的办法:不能传数据的问题出在:服务器向客户端传送了IP。当FTP客户端登录进入服务器的时候,PASV模式服务器会向客户端传送本机的IP地址和数据端口,当服务器放在内网中的时候,服务器会向客户端返回内网的IP,这当然是不能完成连接的,需要让服务器返回外网的地址。幸好,还是有一个好消息,就是serv-u本身具有返回外网地址这样的功能,方法是先选中新建FTP 服务器的属性,在domain标签里选择“enabledynamicdns”,此时会出现第二个标签,叫 “dynamicdns”,然后到tz0.com申请动态域名,申请后会得到一个key,在此标签中填入此key即可。最后一步,是到新建服务器的settings属性中,选择advanced标签,选中“allowpassive modedatatransfer”,旁边的IP地址框留空。这个框对于拨号用户不用填,只有出口使用固定地址才需要填。这样,serv-u向客户端返回IP和端口前,会先向tz0.com查询到ISA外网的地址,再发送给客户端。

总结:采用什么方式是由用户决定的,而主动和被动之说是相对服务器而言。在FTP客户连接服务器的整个过程中,控制信道是一直保持连接的,而数据传输通道是临时建立的。主动方式下是服务器以20端口发起连接,而被动方式下服务器告诉客户一个动态端口,由客户发起连接。如果你使用FTP客户端程序是只能登录不能传数据,不妨换一种工作模式,当然需要服务器支持。

关于防火墙

对外网用户而言,你的防火墙如果不接受主动连接,麻烦大了:标准模式FTP客户端无法在此环境中运行,因为FTP服务器必须向FTP客户端发出新的连接请求。对服务器而言,防火墙管理员可能不希望使用PASVFTP服务器,因为FTP服务器可以打开任何短暂端口号,如果防火墙配置允许未经请求的连接完全访问所有的短暂端口,则可能会是不安全的。

小技巧,IE默认使用主动方式发起连接,要想使用被动方式,需要设置 IE-工具-Internet选项-高级在浏览下面,单击“为FTP站点启用文件夹视图”复选框,将其清除。单击“使用被动FTP(为防火墙和DSL调制解调器兼容性)”复选框,将其选中。单击确定。如果选中了“为FTP站点启用文件夹视图”复选框,InternetExplorer的表现就会像“标准” 模式FTP客户端一样,即使您还选中了“使用被动FTP”复选框也是如此。如果您清除了“为 FTP站点启用文件夹视图”复选框,然后选中“使用被动FTP”复选框,InternetExplorer的表现就会像“被动”模式FTP客户端一样啦。