ftp协议linux命令详解doc.docx
《ftp协议linux命令详解doc.docx》由会员分享,可在线阅读,更多相关《ftp协议linux命令详解doc.docx(35页珍藏版)》请在冰点文库上搜索。
ftp协议linux命令详解doc
FTP协议采用一系列简单的协议来完成文件传输的各种任务,在发送命令的时候,总是在命令的最后加上一个回车换行符,在VB中可以用“vbcrlf”来实现,vc中以“\r\n”表示。
以下的命令是从Postel和Reynolds所著的RFC929修改而来,如果读者想查看详细内容,可以参见英文版RFC929。
注意以下出现地标志符CRLF表示的是回车符号,即相当于VC中的“\r\n”。
1.ABOT(Abort,中止)命令
说明:
告诉服务器中止上一次FTP服务命令及所有相关的数据传输。
用法:
ABOR﹝CRLF﹞
参数:
无。
例子:
SendData"ABOR"+“\r\n”
注释:
中止命命令可以请求“特殊操作”以强行引起服务器的重视(详情请参看RFC959)。
如果上一次命令已经完成(包括数据传输),就不会导致任何操作。
服务器不会关闭控制连接,但必须关闭数据连接。
服务器在接收到此命令时可能处于两种状态下:
(1)FTP服务命令已经完成,
(2)FTP服务命令尚在处理中。
在第一种状态下,服务器关闭数据连接(如果它是打开的)并响应以226应答,表示已成功执行了中止命令。
在第二种状态下,服务器中止正处理中的FTP服务并关闭数据连接,返回426应答,表示该服务请求被异常终止。
然后服务器发送226应答,表示成功执行了中止命令。
●225数据连接打开,没有正在进行的传输
●226关闭数据连接,请求的文件操作成功。
●421服务不可用,关闭控制连接。
如果某项服务获知自己即将关闭,会向所有命令做出这个应答。
●226连接关闭,传输终止。
●500语法错误,无法识别命令。
这其中包括命令行过长之类的错误。
●501参数或变元中有语法错误。
●502命令还没有被实现。
2.ACCT(Account,帐号)命令
说明:
指定用户的帐号信息。
这条命令只能在发送PASS命令并接收到332代码之后发送。
用法:
ACCT
参数:
Account是用户的帐号,访问某些服务时可能另外需要它。
例子:
SendData"ACCTN322s"+“\r\n
注释:
当登录需要帐号信息时,一条成功的PASS命令的响应是应答代码332。
反之,如果登录不需要帐号信息,成功的PASS命令的应答是230;如果在对话中后来发出的命令需要帐号信息,服务器会返回332或532应答,这分别取决于它是保存(在接收ACCT命令期间)还是丢弃此命令。
返回值(粗体表示成功):
●202命令还没有被实现,在此站点上是多余的。
●230用户已登录,请继续。
●421服务不可用,关闭控制连接。
如果某项服务获知自己即将关闭,会向所有命令做出这个应答。
●500语法错误,无法识别命令。
这其中包括命令行过长之类的错误。
●501参数或变元中有语法错误。
●502命令还没有被实现。
●503命令的顺序不对。
●530无法登录。
3.ALLO(Allocate,分配)命令
说明:
发送文件前在服务器上分配X个字节
用法:
ALLO]
参数:
NumberBytes是一个整数,代表为该文件保留的内存字节数(使用逻辑字节大小计算)。
MaxSize是在使用记录或页数据结构时可选的最大记录或页大小。
例子:
SendData"ALLO3000128"+“\r\n
注释:
一些要保留足够内存以容纳将要传输的新文件的服务,会请求这条命令。
对于用记录或页结构发送的文件来说,最大记录或页大小(以逻辑字节计)也可能是必需的;它以这条命令的第二个参数字段中的十进制整数表示。
这第二个参数是可选的,但在出现时应该与第一个参数三个ASCII字符P分隔开。
这条命令后跟一条STORe或APPEnd命令。
那些不要求事先声明最大文件大小的服务器应该把ALLO命令视为NOOP(不操作),而那些只关心最大记录或页大小的服务器应该受第一个参数的值,然后忽略它。
返回值(粗体表示成功):
●200命令成功。
●202命令还没有被实现,在此站点上是多余的。
●421服务不可用,关闭控制连接。
如果某项服务获知自己即将被关闭,会向所有命令做出这个应答。
●500语法错误,无法识别命令。
这其中包括命令行过长之类的错误
●501参数或变元中有语法错误
●504命令中还没有实现该参数
●530无法登录。
4.APPE(Appendwithcreate,附加和创建)命令
说明:
让服务器准备接收一个文件并指示它把这些数据附加到指定的文件名,如果指定的文件尚未存在,就创建它。
用法:
APPE
参数:
FileName是服务器站点上一个完全合格的路径和文件名。
例子:
SendData"APPE"&szFileName+“\r\n
返回值如下(粗体表示成功)。
●110重新启动标记应答。
在此情况下,文本是精确的,而且不会留给特殊的实现处理;它必须读取:
MARKyyyy=mmmm
其中yyyy是用户进程的数据流标记,mmmm是服务器上的相应标记(请注意标记和“=”之间的空格)。
●125数据连接已打开,传输启动。
●150文件状态没问题,准备打开数据进行连接。
●226关闭数据连接,请求的文件操作已成功。
●250请求的文件操作没问题,已完成。
●421服务不可用,关闭控制连接。
如果某项服务获知自己即将关闭,会向所有命令做出这个应答。
●425无法打开数据连接。
●426连接关闭;传输中止。
●450请求的文件操作无法执行,文件不可用(例如文件正忙)。
●451请求的操作被中止,处理中发生本地错误。
●452请求的操作无法执行,系统的存储空间不足。
●500语法错误,无法识别命令。
这其中包括命令行过长之类的错误。
●501参数或变元中有语法错误。
●502命令还没有被实现。
●530无法登录。
●532文件的存储需要帐号。
●550请求的操作无法执行,文件不可用(例如找不到文件,无访问权)。
●551请求的操作被中止,未知的页类型。
●552请求的文件操作被中止,超过了分配的存储单元(对当前目录或数据集而言)。
●553请求的操作无法执行,不允许的文件名。
5.CDUP(ChangetoParentDirectory,变为父目录)命令
说明:
把当前目录改为远程文件系统的根目录,无需改变登录、帐号信息或传输参数。
用法:
CDUP
参数:
无。
例子:
SendData"CDUP"+“\r\n
注释:
CDUP目录可改为父目录。
MS-DOS中的等效命令是cd\。
创建这条命令是为了适应FTP的不同操作系统。
返回值如下(粗体表示成功):
●250请求的文件操作正常进行,已完成。
●421服务不可用,关闭控制连接。
如果某项服务获知自己即将关闭,会向所有命令做出这个应答。
●500语法错误,无法识别命令。
这其中包括命令行过长之类的错误。
●501参数或变元中有语法错误。
●502命令还没有被实现。
●530无法登录。
●550请求的操作无法执行,文件不可用(例如找不到文件,无访问权)。
6.CWD(ChangeWorkingDirectory,改变工作目录)命令
说明:
把当前目录改为远程文件系统的指定路径,而无需改变登录、帐号信息或传输参数。
用法:
CWD
参数:
Path是远程系统上的一个工作目录。
例子:
SendData"CWD/pub/cgvb/uploads"+“\r\n
返回值如下(粗体表示成功):
●250请求的文件操作正常进行,已完成。
●421服务不可用,关闭控制连接。
如果某项服务获知自己即将关闭,会向所有命做出这个应答。
●500语法错误,无法识别命令。
这其中包括命令行过长之类的错误。
●501参数或变元中有语法错误。
●502命令还没有被实现。
●530无法登录。
●550请求的操作无法执行,文件不可用(例如找不到文件,无访问权)。
7.DELE(Delete,删除)命令
说明:
删除服务器站点上在路径名中指定的文件。
用法DELE
参数:
FileName是服务器站点上一个完全合格的路径和文件名。
例子:
SendData"DELEtemp.fil"+“\r\n
注释:
如果期望有额外的保护级别(例如选项"确实要删除此文件吗?
"),这应该由客户软件提供。
返回值如下(粗体表示成功):
●250请求的文件操作正常进行,已完成。
●421服务不可用,关闭控制连接。
如果某项服务获知自己即将关闭,会向所有命令做出这个应答。
●450请求的文件操作无法执行,文件不可用(例如文件正忙)。
●500语法错误,无法识别命令。
这其中包括命令行过长之类的错误。
●501参数或变元中有语法错误。
●502命令还没有被实现。
●530无法登录。
●550请求的操作无法执行,文件不可用(例如找不到文件,无访问权)。
8.HELP(Help,帮助)命令
说明:
让服务器通过到客户的控制连接发送有关其实现状态的帮助信息。
用法:
HELP[]
参数:
Topic是一个可选的命令,或是请求哪条命令有关文本的其他参数。
例子:
SendData"HELP"+“\r\n
注释:
HELP可以带一个参数(例如任何命令的名称),以在响应中返回更具体的信息。
应答为类型211或214。
建议在输入USER命令前允许使用HELP命令。
服务器可以使用这个应答来指定站点相关的参数,例如在对HELPSITE的响应中。
返回值如下(粗体表示成功):
●211系统状态,或系统的帮助应答。
●214帮助消息。
描述如何使用服务器或某条不常用的具体命令的方法。
这个应答只对用户有用,因为帮助消息没有标准的格式。
●421服务不可用,关闭控制连接。
如果某项服务获知自己即将关闭,会向有命令做出这个应答。
●500语法错误,无法识别命令。
这其中包括命令行过长之类的错误。
●501参数或变元中有语法错误。
●502命令还没有被实现。
9.LIST(List,列表)命令
说明:
让服务器给客户发送一份列表。
用法:
LIST[]
参数:
PathName是服务器系统上的一个有效路径和文件规范。
例子:
SendData"LISTpub/*.*"+“\r\n
注释:
如果路径名指定的是一个目录或其他文件组,服务器传送一份位于指定目录中的文件的列表。
如果路径名指定的是一个文件,那么服务应该发送此文件的当前信息。
空变元则暗指用户的当前工作目录或默认目标。
数据将在类型ASCII或类型EBCDIC中通过数据连接传送(用户必须确保ASII或EBCDIC的类型适当)。
因为系统与系统之间的文件信息可能有很大差别,所以这项信息要在程序中自动使用可能很困难,但对用户来说会很有用。
返回值如下(粗体表示成功):
●125数据连接已打开,传输启动。
●150文件状态没问题,准备打开数据连接。
●226关闭数据连接,请求的文件操作已成功。
●250请求的文件操作正常进行,已完成。
●421服务不可用,关闭控制连接。
如果某项服务获知自己即将关闭,会向所有命令做出这个应答。
●425无法打开数据连接。
●426连接关闭,传输中止。
●450请求的文件操作无法执行,文件不可用(例如文件正忙)。
●451请求的操作被中止,处理中发生本地错误。
●500语法错误,无法识别命令。
这其中包括命令行过长之类的错误。
●501参数或变元中有语法错误。
●502命令还没有被实现。
●530无法登录。
10.MKD(MakeDirectory,创建目录)命令
说明:
创建一个在路径名中指定的目录(如果是绝对路径名)或当前工作目录的子目录(如果是相对路径名)。
用法:
MKD
参数:
Path是服务器端上的一个有效路径。
例子:
SendData"MKD/users/johnsmith"+“\r\n
返回值如下(粗体表示成功):
●257“PATHNAME”已创建。
●421服务不可用,关闭控制连接。
如果某项服务获知自己即将关闭,会向所有命令做出这个应答。
●500语法错误,无法识别命令。
这其中包括命令行过长之类的错误。
●501参数或变元中有语法错误。
●502命令还没有被实现。
●530无法登录。
●550请求的操作无法执行,文件不可用(例如找不到文件,无访问权)。
11.MODE(TransferMode,传输模式)命令
说明:
指定传输模式。
用法:
STRU
参数:
Mode是如下ASCII值的其中之一:
S——Stream(流,默认值)
B——Block(块)
C——Compressed(经过压缩)
例子:
SendData"STRUB"+“\r\n
返回值如下(粗体表示成功):
●200命令成功。
●421服务不可用,关闭控制连接。
如果某项服务获知自己即将关闭,会向所有命令做出这个应答。
●500语法错误,无法识别命令。
这其中包括令行过长之类的错误。
●501参数或变元中有语法错误。
●504命令中还没有实现该参数。
●530无法登录。
12.NLST(NameList,名称列表)命令
说明:
让服务器给客户发送一份目录列表。
用法:
NLST[]
参数:
PathName是服务器系统上的一个有效路径和文件规范。
例子:
SendData"NLST/pub/cgvB"+“\r\n
注释:
路径名应该指定一个目录或其他由系统指定的文件组描述符,空变元则暗指当前目录。
服务器将返回一个文件名称的流,除此之外没有其他信息。
数据将以ASCII或EBCDIC类型通过数据连接传送,其中的有效路径名字符串由或分隔(用户必须确保类型正确)。
NLST希望返回的信息可被程序用来进一步地自动处理这些文件。
例如,在一个“断点续传”功能的实现中。
返回值如下(粗体表示成功):
●125数据连接已打开,传输启动。
●150文件状态正常,准备打开数据连接。
●226关闭数据连接,请求的文件操作已成功。
●250请求的文件操作正常进行,已完成。
●421服务不可用,关闭控制连接。
如果某项服务获知自己即将关闭,会向所有命令做出这个应答。
●425无法打开数据连接。
●426连接关闭,传输中止。
●450请求的文件操作无法执行,文件不可用(例如文件正忙)。
●451请求的操作被中止,处理中发生本地错误。
●500语法错误,无法识别命令。
这其中包括命令行过长之类的错误。
●501参数或变元中有语法错误。
●502命令还没有被实现。
●530无法登录。
13.NOOP(NOOP,无操作)命令
说明:
这是一条不进行操作的命令,即它什么都不做。
用法:
NOOP
参数:
无。
例子:
SendData"NOOP"+“\r\n
注释:
NOOP不会影响任何参数或以前输入的命令。
除了让服务器发送一条OK应答外,它不指定任何操作。
返回值如下(粗体表示成功):
●200命令成功。
●421服务不可用,关闭控制连接。
如果某项服务获知自己即将关闭,会向所有命令做出这个应答。
●500语法错误,无法识别命令。
14.PASS(Password,密码)命令
说明:
向远程系统发送用户的密码,该命令在USER命令后使用。
用法:
PASS
参数:
Password是由USER命令指定的已注册用户密码。
例子:
SendData"PASSmypassworD"+“\r\n
注释:
在连接到一台FTP服务器的端口21并接收到一个由代码220打头的行,表示服务器已准备好你向它发USER和PASS命令,以登录进此FTP服务器之后,紧跟着发送USER命令。
PASS命令应该紧跟着USER命令。
如果你在此FTP服务器上有帐号,就可以指定自己的用户名和密码。
如果想匿名登录,可以指定用户名为“Anonymous”,而用自己的电子邮件地址当密码。
返回值如下(粗体表示成功):
●202命令还没有被实现,在此站点上是多余的。
●230用户已登录,请继续。
●332登录需要帐号(请参看ACCT命令)。
●421服务不可用,关闭控制连接。
如果某项服务获知自己即将关闭,会向所有命令做出这个应答。
●500语法错误,无法识别命令。
这其中包括命令行过长之类的错误。
●501参数或变元中有语法错误。
●530无法登录。
15.PASV(Passive,被动的)命令
说明:
告诉服务器在一个非标准端口上收听数据连接。
用法:
PASV
参数:
这条命令请求server-DTP(服务器数据传送规约)“收听”某个数据端口(该端口不是它的默认数据端口),并等待一个连接而不是在收到传输命令时初始化一个连接。
对这条命令的响应包括主机地址和此服务器正在收听的端口地址。
例子:
SendData"PASV"+“\r\n
返回值如下(粗体表示成功):
●227输入被动模式(h1,h2,h3,h4,p1,p2)。
返回值包括一个在数据连接中使用的数据端口的HOST-PORT规约。
此参数是一个32位Internet主机地地址和一个16位TCP端口地的拼接。
这个地址信息被拆分为8位的字段,并且每个字段的值是作为一个十进制数传输的(在字符串意义上)。
H1是Internet主机地址的高位字节,p1是端口地址的高位字节。
●421服务不可用,关闭控制连接。
如果某项服务获知自己即将关闭,会向所有命令做出这个应答。
●500语法错误,无法识别命令。
这其中包括命令行过长之类的错误。
●501参数或变元中有语法错误。
●503无法登录。
16.PORT(DataPort,数据端口)命令
说明:
为数据连接指定一个IP地址和本地端口。
用法:
PORT
参数:
Socket是数据连接中要使用的数据端口的一个HOST-PORT规约。
用户和服务器都有默认的数据端口,在正常情况下不需要这条命令和对它的应答。
如果使用了这条命令,则参数是一个32个Internet主机地址和一个16位TCP端口地的拼接。
这个地址信息被拆分为8位的字段,并且每个字段的值是作为一个十制数传输的(在字符串意义上)。
各个字段用逗号分隔开。
一条端口命令可以是这样:
PORTh1,h2,h3,p1,p2
其中H1是Internet主机地址的高位字节,P1是本地端口的高位字节。
例子:
SendData"PORT199,199,199,0,33,1"+“\r\n
返回值如下(粗体表示成功):
●200命令成功。
●421服务不可用,关闭控制连接。
如果某项服务获知自己即将关闭,会向所有命令做出这个应答。
●500语法错误,无法识别命令。
这其中包括命令行过长之类的错误。
●501参数或变元中有语法错误。
●530无法登录。
17.PWD(PrintWorkingDirectory,打印工作目录)命令
说明:
在应答中返回当前工作目录的名称。
用法:
PWD
参数:
无
例子:
SendData"PWD"+“\r\n
返回值如下(粗体表示成功):
●257“PATHNAME”已创建
●421服务不可用,关闭控制连接。
如果某项服务获知自己即将关闭,会向所有命令做出这个应答。
●500语法错误,无法识命令。
这其中包括命令行过长之类的错误。
●501参数或变元中有语法错误。
●502命令还没有被实现。
●550请求的操作无法执行,文件不可用(例如找不到文件,无访问权)。
18.QUIT(Logout,注销)命令
说明:
终止连接。
用法:
QUIT
参数:
无。
例子:
SendData"QUTI"+“\r\n
注释:
QUIT将终止此USER,如果没有正在进行的文件传送,服务器将关闭控制连接。
如果文件传送正在进行,该连接仍然打开直至结果呼响应,然后服务器将其关闭。
如果用户进程正在为几个USER传送文件,不想关闭后再逐个重新打开连接,那么应该使用REIN命令代替QUIT。
控制连接的意外关闭会导致服导器采取有效的中止(ABORT)和注销(QUIT)操作。
返回值如下(粗体表示成功):
●221服务正在关闭控制连接。
●500语法错误,无法识别命令。
19.REIN(Reinitialize,重新初始化)命令
说明:
终止一个用户。
用法:
REIN
参数:
无。
例子:
SendData"REIN"+“\r\n
注释:
除了允许完成正在进行的传送之外,REIN将刷新所有的I/O和帐号信息。
所有参数都被复位到默认设置,控制连接仍然打开。
这和用户在刚刚打开控制连接时的状态是一样的。
如果后来想要登录,在发送USER命令之前送一条REIN命令。
返回值如下(粗体表示成功):
●120服务将在nnn分钟后准备好。
●220服务已为新用户准备好。
●421服务不可用,关闭控制连接。
如果某项服务获知自己即将关闭,会向所有命令做出这个应答。
●500语法错误,无法识别命令。
这其中包括命令行过长之类的错误。
●502命令还没有被实现。
20.REST(Restart,重新启动)命令
说明:
标识出文件内的数据点,将从这个点开始继续传送文件。
用法:
REST
参数:
Marker代表文件传送将要由此重新启动的服务器标记。
例子:
SendData"REST244"+“\r\n
注释:
REST不会引起文件传送,而只是跳到文件中指定的数据检验点上。
RSET后紧跟着适当的FTP服务命令,该命令才会引起文件的继续传送。
返回值如下(粗体表示成功):
●无响应即表示成功。
●350请求的文件操作在等待更进一步的信息。
●421服务不可用,关闭控制连接。
如果某项服务获知自己即将关闭,会向所有命令做出这个应答。
●500语法错误,无法识别命令。
这其中包括命令行过长之类的错误。
●501参数或变元中有语法错误。
●502命令还没有被实现。
●530无法登录。
21.RETR(Retrieve,检索)命令
说明:
这条命令让服务器给客户传送一份在路径名中指定的文件的副本。
这不会影响该文件在服务器站点上的状态和内容。
用法:
RETR
参数:
FileName是服务器站点上一个完全合格的路径和