网络协议之FTP协议

来源:互联网 发布:淘宝卖啥好? 编辑:程序博客网 时间:2024/05/17 03:39

//////////////////////////////////////////////////////////////////////////////////////////////////////

// 2015/6/12

学习完了NTP协议,下面我想学习FTP协议。


当然最先需要写一个FTP的客户端,但是没有服务端怎么办呢?

其实WINDOWS里面默认就有FTP服务端和客户端,下面是开启系统默认FTP服务端的方法。

http://jingyan.baidu.com/article/f79b7cb344664b9144023edf.html


//////////////////////////////////////////////////////////////////////////////////////////////////////

// 2015/6/13

 我从网上下载了一些FTP的命令,现记录下来。。

// FtpNote is here:// 参考: 1. http://blog.chinaunix.net/uid-20321537-id-1966817.html2. http://blog.163.com/loveyingchun_1314/blog/static/2382425120136994955860/// 带有星号的命令一般很少使用,所以往往在具体实现中不支持。ABOR 放弃传输*ACCT 某些系统将帐号和用户与文件系统相关联*ALLO 为即将传送的文件分配空间。后面携带的参数来确定字节数*APPE 将文件附加到已经存在的文件后面CDUP 在远程系统上将当前目录切换到上级父目录CWD 改变远程系统的工作目录DELE 删除远程系统的文件HELP 读取服务器的帮助信息,如:支持的命令的列表LIST 在一个新建立的数据连接上发送当前工作目录下的文件名列表MKD 创建目录MODE 指定传输模式,可携带的参数是:S、B或 C.NLST 在一个新建立的数据连接上发送一个当前目录下的“完全”的目录列表NOOP 空操作,防止连接断掉USER: 参数是标记用户的Telnet串。用户标记是访问服务器必须的,此命令通常是控制连接后第一个发出的命令,有些主机还会要求口令和帐户。服务器可以在任何时间接收新的USER命令以改变访问控制和(或)帐户信息。这可以重新开始登录过程,所以传输参数不变,在进行中的文件传输在过去的访问控制参数下完成。返回: "331 Password required for Joseph11."PASS: 提供一个用户登录密码,必须立即跟随在USER命令后返回:用户名不对/密码错误: "530-User cannot log in. Win32 error: Logon failure: unknown user name or bad password. Error details: An error occured during the authentication process 530 End密码正确: "230 User logged in."*PASV: 指定服务器数据传输过程监听等待客户端的数据连接连接建立请求返回:"227 Entering Passive Mode (127,0,0,1,101,41).",其中101,41是端口(10597), 十进制101=二进制01100101; 十进制41=00101001二进制那么00101001 01100101 = 10597PORT 指定客户端监听等待服务器端建立的连接的端口号PWD 显示服务器端的当前工作目录名QUIT 退出登录并终止连接返回:"221 Goodbye."*REIN 重新初始化,退出登录但是并不断开连接,后面必须随后发出一个新的USER命令*REST 从服务器的一个标识处重新开始传输RETR 从远程系统取回一个文件,即下载文件返回: "125 Data connection already open; Transfer starting.226 Transfer complete."RMD 删除一个目录*RNFR 指定要被命名的文件的老的路径名,随后必须是一个RNTO命令*RNTO 指定要被命名的文件的新的路径名*SITE 站点特有的服务器提供的服务SIZE〈FILENAME〉:文件大小,执行成功返回213;*SMNT 结构加载,提供一个文件系统结构的远程系统路径名*STAT 状态信息STOR 上载一个文件到服务器上,若文件已经存在则覆盖返回: "125 Data connection already open; Transfer starting."当文件上传成功后"226 Transfer complete."*STOU 上载一个文件到服务器上,不覆盖已经存在的文件STRU 指定文件结构,参数可以是F、R或P.*SYST 报告远程系统的操作系统类型TYPE 指定文件类型,参数可以是A、E、I、L只有TYPE A和TYPE I常用三、Ftp命令的返回值:每一个Ftp发送之后,Ftp服务器都会返回一个字符串,其中包括一个返回代码和一串说明信息。这个返回码主要是用于判断命令是否被成功执行了。除此之外,还有一个非常重要的命令的返回。当发送PASV之后,返回“227 Entering Passive Mode (127,0,0,1,4,18)”。这意味着在服务器上有一个端口被开放,他将为我们后面接着的数据传输作好准备,但是我们如何知道该端口号呢,就在(127,0,0,1,4,18)中,前面四位指服务器的地址,关键是最后两位,将最后第二位乘256再加上最后一位的值就是我们的端口号,也就是4*256+18。取得端口号之后我们就可以用socket连接到这里。这为我们后面的工作作好准备了,因为我们的取得列表,上传,下载文件都要依靠它来实现。常用的返回如下:125 Data connection already open; Transfer starting.226 Transfer complete.227 Entering Passive Mode (127,0,0,1,4,18).230 User xxxxx logged in.331 Password required for xxxxx.425 Can’t open data connection.226 Closing data connection.





0 0
原创粉丝点击