FTP中的两种工作方式
FTP是一种文件传输协议,它支持两种模式,一种方式叫做Standard (也就是 Active,主动方式),一种是 Passive (也就是PASV,被动方式)。 Standard模式 FTP的客户端发送 PORT 命令到FTPserver。Passive模式FTP的客户端发送 PASV命令到 FTP Server。
下面介绍一个这两种方式的工作原理:
Standard模式FTP 客户端首先和FTP Server的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。
Passive模式在建立控制通道的时候和Standard模式类似,当客户端通过这个通道发送PASV 命令的时候,FTP server打开一个位于1024和5000之间的随机端口并且通知客户端在这个端口上传送数据的请求,然后FTP server 将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的接。
现在的FTP软件里面包括在IE5以上的版本里面也已经支持这两种模式了。一般一
些FTP客户端的软件就比较好设置了,一般都有一个PASV的选项,比如CuteFTP,传输的方式都有Standard和PASV的选项,可以自己进行选择;另外在IE里面如果要设置成PASV模式的话可以选中工具-Internet选项-高级-为FTP站点启用文件夹视图,否则就采用Standard模式。
很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以FTP的Standard模式在许多时候在内部网络的机器通过防火墙出去的时候受到了限制,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。当然也可以设置成功,首先要创建一条规则就是允许内部的IP连接外部的IP的21端口;第二条就是禁止外部IP的TCP 20端口连接内部IP的<1024的端口,这条是为了防止外部连接内部的常规端口;第三条验证ACK是否等于1,这个的原理就参见TCP建立连接的三次握手吧。所以如果安全的配置的话非常困难,这个时候就想起来了PASV模式,因为不用建立新的连接,所以也就不会涉及到后面的问题了。但是管理员可能不想使用PASV模式,因为这个时候FTP Server会开放一个随机的高端口,尽管在IIS4和IIS5里面端口的范围是1024-5000,但是许多FTP Server的端口范围达到了1024-65535,这个时候在这个主动开放的随机端口上是有完全的访问权限的,如果IIS也要设置成开放的端口为1024-65535,具体方法如下:
1. regedt32
2. 找到HKEY_LOCAL_MACHINE\\\\SYSTEM\\\\CurrentControlSet\\\\Services\\\\Tcpip\\\\Parameters
3. 编辑-添加-数值
value Name: MaxUserPort Data Type: REG_DWORD value: 65534
所以如果遇到了有防火墙的话或者怕配置麻烦的话还是采用PASV模式比较好些,但是如果真的对安全的需求很高的话建议采用Standard模式。
530 的两个不同错误
很多朋友看见530就认为是密码不对,其实530有两种错误:
530“not login\\\"
原因:用户名或密码错误,有些网站每隔一段时间就要修改密码,导致原来的密码无法登陆。
解决方法:获得正确的密码,然后登陆。
530\\\"to many users in your class\\\"
原因:有的ftp把用户分为匿名,普通会员,高级会员几类,每类都有名额上限,同一类名额到达上限时,就会出现本错误。要与上面的530错误相区别。
解决方法:等空点或多连几次就行了。
【FTP新手注意】关于FTP\\\"出错\\\"解释
我发现好多新手不太会看错误,如果连接不上或无法下载那一定是出现错误,现将各种出错信息整理出来,请大家细看~
下面我说几个非常典型的:
530,说明密码错误。
-----------------------------------
550,说明地址有错误,可能是盗连没有改。
-----------------------------------
详细的FTP错误列表
110 Restart marker reply. In this case, the text is exact and not left to the particular implementation; it must read: MARK yyyy = mmmm where yyyy is User-process data stream marker, and mmmm server\\\'s equivalent marker (note the spaces between markers and \\\"=\\\").
重新启动标志回应。这种情况下,信息是精确的并且不用特别的处理;可以这样看:标记 yyyy = mmm 中 yyyy是 用户进程数据流标记,mmmm是服务器端相应的标记(注意在标记和等号间的空格)
-----------------------------------
120 Service ready in nnn minutes.
服务在NNN时间内可用
-----------------------------------
125 Data connection already open; transfer starting.
数据连接已经打开,开始传送数据.
-----------------------------------
150 File status okay; about to open data connection.
文件状态正确,正在打开数据连接.
-----------------------------------
200 Command okay.
命令执行正常结束.
-----------------------------------
202 Command not implemented, superfluous at this site.
命令未被执行,此站点不支持此命令.
-----------------------------------
211 System status, or system help reply.
系统状态或系统帮助信息回应.
-----------------------------------
212 Directory status.
目录状态信息.
-----------------------------------
213 File status.
文件状态信息.
-----------------------------------
214 Help message.On how to use the server or the meaning of a particular non-standard command. This reply is useful only to the human user. 帮助信息。关于如何使用本服务器或特殊的非标准命令。此回复只对人有用。
-----------------------------------
215 NAME system type. Where NAME is an official system name from the list in the Assigned Numbers document.
NAME系统类型。
-----------------------------------
220 Service ready for new user.
新连接的用户的服务已就绪
-----------------------------------
221 Service closing control connection.
控制连接关闭
-----------------------------------
225 Data connection open; no transfer in progress.
数据连接已打开,没有进行中的数据传送
-----------------------------------
226 Closing data connection. Requested file action successful (for example, file transfer or file abort).
正在关闭数据连接。请求文件动作成功结束(例如,文件传送或终止)
-----------------------------------
227 Entering Passive Mode (h1,h2,h3,h4,p1,p2).
进入被动模式
-----------------------------------
230 User logged in, proceed. Logged out if appropriate.
用户已登入。 如果不需要可以登出。
-----------------------------------
250 Requested file action okay, completed.
被请求文件操作成功完成
-----------------------------------
257 \\\"ATHNAME\\\" created.
路径已建立
-----------------------------------
331 User name okay, need password.
用户名存在,需要输入密码
-----------------------------------
332 Need account for login.
需要登陆的账户
-----------------------------------
350 Requested file action pending further information
对被请求文件的操作需要进一步更多的信息
-----------------------------------
421 Service not available, closing control connection.This may be a reply to any command if the service knows it must shut down.
服务不可用,控制连接关闭。这可能是对任何命令的回应,如果服务认为它必须关闭
-----------------------------------
425 Can\\\'t open data connection.
打开数据连接失败
-----------------------------------
426 Connection closed; transfer aborted.
连接关闭,传送中止。
-----------------------------------
450 Requested file action not taken.
对被请求文件的操作未被执行
-----------------------------------
451 Requested action aborted. Local error in processing.
请求的操作中止。处理中发生本地错误。
-----------------------------------
452 Requested action not taken. Insufficient storage space in system.File unavailable (e.g., file busy).
请求的操作没有被执行。 系统存储空间不足。 文件不可用
-----------------------------------
500 Syntax error, command unrecognized. This may include errors such as command line too long.
语法错误,不可识别的命令。 这可能是命令行过长。
-----------------------------------
501 Syntax error in parameters or arguments.
参数错误导致的语法错误
-----------------------------------
502 Command not implemented.
命令未被执行
-----------------------------------
503 Bad sequence of commands.
命令的次序错误。
-----------------------------------
504 Command not implemented for that parameter.
由于参数错误,命令未被执行
-----------------------------------
530 Not logged in.
没有登录
-----------------------------------
532 Need account for storing files.
存储文件需要账户信息
-----------------------------------
550 Requested action not taken. File unavailable (e.g., file not found, no access).
请求操作未被执行,文件不可用。
-----------------------------------
551 Requested action aborted. Page type unknown.
请求操作中止,页面类型未知
-----------------------------------
552 Requested file action aborted. Exceeded storage allocation (for current directory or dataset).
对请求文件的操作中止。 超出存储分配
-----------------------------------
553 Requested action not taken. File name not allowed
请求操作未被执行。 文件名不允许
-----------------------------------
-----------------------------------
这种错误跟http协议类似,大致是:
2开头--成功
3开头--权限问题
4开头--文件问题
5开头--服务器问题
FTP站点无法连接的几种可能
一、站点关闭了。有些服务器只在特定时间开放,其他时候是无法连的,不过也有可能是
永久性关闭。当服务器未开机时会显示如下信息:
Connecting to ****[IP], Port 21 [#1]
Connecting to ****[IP], Port 21 [#1]
Connecting to ****[IP], Port 21 [#1]
ERROR: Connection timed out
二、连接人数过多。部分服务器限制了最大链接数,FTP软件里显示\\\"Too many user\\\"就是
这种情况。ftp软件的自动重新连接时间一般是30-120秒,不要把重连时间改得太短,改短了可能会封IP,一般15秒就差不多了。建议加上连通后的声音提示。
三、IP限制。一些服务器一个IP只允许一个线程,超过了就会无法连接,情况严重还会封
IP,这样只能断线重拨了。如果是C类IP被封可能重拨都不管用。
四、地址填错了。注意FTP软件里要填的地址不包括\\\"ftp://\\\";。
五、用户名密码不对。不是所有的FTP服务器都可以匿名登陆的,如果你的密码是粘贴上去的注意不要多复制了空格。有些服务器的密码经常更换,这就需要重新找密码了。资源区的一部分站点给出了主页地址或论坛地址,里面可能有密码。有很多站点的http和ftp是同一台服务器,在浏览器里直接输地址看看(注意不要把ftp://带上,如果域名的开头是ftp,换成www试试看。)。
当登陆服务器密码错误时会有如下信息:
User name okay,Need password
Password ******
Not logged in or password incorrect
六、端口号错了。FTP服务器的默认端口号是21,但有些站点可能会修改端口号。
七、关于设置方面有两点需要注意:
1.有些服务器要求关闭PASV功能,所谓PASV就是“被动传送”的意思。客户端【也就是我们每个用户】在自己的ftp工具【主要有Leapftp,FlashFXP,Cuteftp】里面可以关闭这个功能。一般都在“选项-参数设置”里面找到PASV字样,关闭即可。
2.经常会遇到服务器用户已满,无法登陆的现象。而ftp里面有个设置叫Retry的,它的功能是反复登陆服务器。那么,有些服务器为了防止用户的反复冲刷,会对此有一定限制,如果超过这个限制就是封了你的IP,使得你在短期之内再无法连接服务器。所以Retry的设置很有讲究。 |