FTP协议采用一系列简单的协议来完成文件传输的各种任务,在发送命令的时候,总是在命令的最后加上一个回车换行符,
ip/tcp协议之FTP:文件传送协议.章节不用看,废话一大堆,直接搜ftp原理。
FTP命令集英文:http://www.nsftools.com/tips/RawFTP.htm。
转载:http://blog.****.net/weiyuefei/article/details/51758288 weiyuefei
http://www.cnblogs.com/adolphyang/p/5280255.html AdolphYang
比如下载文件:则可能使用功能命令:USER PASS PASV CWD SIZE RETR
windows、linux都可以配置ftp功能。ftp软件、工具,服务端。客户端,应有尽有。源码,github上质量比较好。
第三方测试使用工具ftpserver.exe。
1. PASS(Password,密码)命令
说明:向远程系统发送用户的密码,该命令在USER命令后使用。
用法:PASS<Password><CRLF>
参数:Password是由USER命令指定的已注册用户密码。
例子:
SendData "PASS mypassworD" + “/r/n
注释:在连接到一台FTP服务器的端口21并接收到一个由代码220打头的行,表示服务器已准备好你向它发USER和PASS命令,以登录进此FTP服务器之后,紧跟着发送USER命令。
PASS命令应该紧跟着USER命令。
如果你在此FTP服务器上有帐号,就可以指定自己的用户名和密码。如果想匿名登录,可以指定用户名为“Anonymous”,而用自己的电子邮件地址当密码。
返回值如下(粗体表示成功):
l 202 命令还没有被实现,在此站点上是多余的。
l 230 用户已登录,请继续。
l 332 登录需要帐号(请参看ACCT命令)。
l 421 服务不可用,关闭控制连接。
如果某项服务获知自己即将关闭,会向所有命令做出这个应答。
l 500 语法错误,无法识别命令。这其中包括命令行过长之类的错误。
l 501 参数或变元中有语法错误。
l 530 无法登录。
2. PASV(Passive,被动的)命令
说明:告诉服务器在一个非标准端口上收听数据连接。
用法:PASV<CRLF>
参数:这条命令请求server-DTP(服务器数据传送规约)“收听”某个数据端口(该端口不是它的默认数据端口),并等待一个连接而不是在收到传输命令时初始化一个连接。对这条命令的响应包括主机地址和此服务器正在收听的端口地址。
例子:
SendData "PASV" + “/r/n
返回值如下(粗体表示成功):
l 227 输入被动模式(h1,h2,h3,h4,p1,p2)。
返回值包括一个在数据连接中使用的数据端口的HOST-PORT规约。此参数是一个32位Internet主机地地址和一个16位TCP端口地的拼接。这个地址信息被拆分为8位的字段,并且每个字段的值是作为一个十进制数传输的(在字符串意义上)。H1是Internet主机地址的高位字节,p1是端口地址的高位字节。
l 421 服务不可用,关闭控制连接。
如果某项服务获知自己即将关闭,会向所有命令做出这个应答。
l 500 语法错误,无法识别命令。这其中包括命令行过长之类的错误。
l 501 参数或变元中有语法错误。
l 503 无法登录。
3. CWD(Change Working Directory,改变工作目录)命令
说明:把当前目录改为远程文件系统的指定路径,而无需改变登录、帐号信息或传输参数。
用法:CWD<Path><CRLF>
参数:Path是远程系统上的一个工作目录。
例子:
SendData "CWD/pub/cgvb/uploads" + “/r/n
返回值如下(粗体表示成功):
l 250 请求的文件操作正常进行,已完成。
l 421 服务不可用,关闭控制连接。
如果某项服务获知自己即将关闭,会向所有命做出这个应答。
l 500 语法错误,无法识别命令。这其中包括命令行过长之类的错误。
l 501 参数或变元中有语法错误。
l 502 命令还没有被实现。
l 530 无法登录。
l 550 请求的操作无法执行,文件不可用(例如找不到文件,无访问权)。
4. MKD(Make Directory ,创建目录)命令
说明:创建一个在路径名中指定的目录(如果是绝对路径名)或当前工作目录的子目录(如果是相对路径名)。
用法:MKD<Path><CRLF>
参数:Path是服务器端上的一个有效路径。
例子:
SendData "MKD /users/johnsmith" + “/r/n
返回值如下(粗体表示成功):
l 257 “PATHNAME”已创建。
l 421 服务不可用,关闭控制连接。
如果某项服务获知自己即将关闭,会向所有命令做出这个应答。
l 500 语法错误,无法识别命令。这其中包括命令行过长之类的错误。
l 501 参数或变元中有语法错误。
l 502 命令还没有被实现。
l 530 无法登录。
l 550 请求的操作无法执行,文件不可用(例如找不到文件,无访问权)。
5. PWD(Print Working Directory,打印工作目录) 命令
说明:在应答中返回当前工作目录的名称。
用法:PWD<CRLF>
参数:无
例子:
SendData "PWD" + “/r/n
返回值如下(粗体表示成功):
l 257 “PATHNAME”已创建
l 421 服务不可用,关闭控制连接。
如果某项服务获知自己即将关闭,会向所有命令做出这个应答。
l 500 语法错误,无法识命令。这其中包括命令行过长之类的错误。
l 501 参数或变元中有语法错误。
l 502 命令还没有被实现。
l 550 请求的操作无法执行,文件不可用(例如找不到文件,无访问权)。
6. RETR(Retrieve,检索)命令
说明:这条命令让服务器给客户传送一份在路径名中指定的文件的副本。这不会影响该文件在服务器站点上的状态和内容。
用法:RETR<FileName><CRLF>
参数:FileName是服务器站点上一个完全合格的路径和文件名。
例子:
SendData "RETR /pub/cgvb/misc/somefile.zip" +“/r/n
返回值如下(粗体表示成功):
l 110 重新启动标记应答。
在此情况下,文体是精确的,而且不会留给特定的实现处理;它必须读取:
MARK yyyy=mmmm
其中yyyy是用户进程的数据流标记,mmmm是服务器上的相应标记(请注意标记和“=”之间的空格)。
l 125 数据连接已打开,传输启动。
l 150 文件状态没问题,准备打开数据连接。
l 226 关闭数据连接,请求的文件操作已成功。
l 250 请求的文件操作正常进行,已完成。
l 421 服务不可用,关闭控制连接。
如果某项服务获知自己即将关闭,会向所有命令做出这个应答。
l 425 无法打开数据连接。
l 426 连接关闭,传输中止。
l 450 请求的文件操作无法执行,文件不可用(例如,文件正忙)。
l 451 请求的操作被中止,处理中发生本地错误。
l 500 语法错误,无法识别命令。
这其中包括命令行过长之类的错误。
l 501 参数或变元中有语法错误。
l 504 命令中还没有实现该参数。
l 530 无法登录。
l 550 请求的操作无法执行,文件不可用(例如找不到文件,无访问权)。
使用cmd命令行方式登录ftp上传下载数据
部分用户在使用ftp工具登录空间上传下载过程中经常会遇到各种问题,如主动模式,被动模式,以及其他导致无法登陆ftp 、上传数据、下载数据的问题,这时候不妨使用一下命令行方式。命令行下可以避免很多由于ftp工具配置导致的问题,而且这种方式下下载数据的速率明显比使用ftp工具更快。下面就来看一下如何使用ftp 命令进行简单的上传下载数据。
1.登录ftp
在“开始”->”运行”中输入“cmd”,进入cmd命令行模式,接下来输入:ftp 118.193.22.151
输入自己的网站ip地址,接下来会提示输入ftp用户名:[email protected]域名 ,再输入密码,登录成功后会提示user logged in
2.查看当前ftp空间下所有文件的列表
输入命令:dir 可以列出当前空间下的文件和文件夹列表和磁盘配额限制为200MB
3.上传文件
将D:test 文件夹下的文件1.txt 、2.txt、3.txt上传到 空间下的htdocs目录下。
由于当前所在目录不一定在D:test,所以先切换到D:test 下,使用命令:lcd D:test,即可将当前工作目录切换到D:test,使用命令!dir 查看一下当前D:test 下有哪些文件,可以看到有1.txt 、2.txt、3.txt;输入命令pwd,查看当前所在的ftp目录,如果不在htdocs下,需要使用命令cd htdocs 切换进入该目录,然后使用put命令分别上传这3个文件:
若要将d:test 下的所有以.txt结尾的文件都上传到htdocs下,可以使用mput命令:
ftp> prompt 将交互模式关闭
ftp> mput *.txt
4.下载文件,将空间下的文件或文件夹下载到本地
ftp> get 1.txt
下载多个文件或文件夹到本地计算机
ftp> mget * 下载所有文件和文件夹到本地
ftp> mget *.txt 下载以.txt 结尾的文件到本地
5.删除ftp空间文件或目录
ftp> delete 1.txt :删除文件1.txt
ftp> mdelete *.txt 删除空间下所有以.txt 结尾的文件
ftp> mdelete * 删除所有文件
若要删除目录,可以使用“rmdir 目录名”来删除目录,前提是该目录必须为空,也就是目录中没有文件或子目录。如果需要删除一个非空的目录,需要先删除其中的文件,然后再删除目录:
ftp> cd abc 进入目录abc
ftp> mdelete * 删除该目录中所有文件
ftp> cd .. 切换到上一级目录中
ftp> rmdir abc 删除空目录abc