1、什么是FTP协议?
FTP 是File Transfer Protocol(文件传输协议)。用于ftp客户端和ftp服务器之间进行文本、文件传输的协议。与http的短连接不同,FTP协议是一种基于socket的长连接。
2、FTP协议的原理
FTP协议实际上是工作在TCP/IP协议族的应用层,其传输层协议是TCP协议。可以知道,他的文件传输是可靠的。
FTP的工作流程大致分为四步:
- 启动FTP。ftp的客户端启动一个socket连接到服务器。
- 建立控制连接。客户端和服务器通过三次握手过程(21端口),建立连接,用于传输ftp协议的命令。
- 建立数据连接。客户端和服务器建立数据连接(分为主动模式和被动模式),用户文件的传输。
- 关闭FTP。ftp客户端清空数据流,并且关闭Socket。
3、FTP协议的工作详解。
1、FTP协议的工作流程中为什么有控制连接和数据连接?
FTP协议的控制链接是用于客户端向服务器发送ftp的命令用的,只要不想关闭FTP客户端,就会一直保持该连接,用户之后的命令交互。而数据连接,则是区别于控制链接之外的,用户传输文件用的socket连接,当传输文件结束时,就关闭连接。
2、数据连接的主动模式和被动模式?
FTP的数据连接过程中的主动模式和被动模式,是相对于FTP服务器来说都。
主动模式:FTP客户端在客户端建立一个socket,端口为B,并通过FTP控制连接的通道发送PORT命令,告诉FTP服务器:“客户端已经对B端口进行了监听”;然后FTP服务器主动与FTP客户端的B端口建立连接。
被动模式:FTP客户端通过FTP的控制连接的通道,发送PASV命令,告诉FTP服务器:“我要建立数据连接”;然后FTP服务器会随机启动一个端口X的监听,并在返回信息中告诉FTP客户端:“可以与X端口建立连接”;最后,FTP客户端主动与FTP服务器的X端口建立连接。
4、FTP协议的命令大全
FTP COMMANDS
The following are the FTP commands:
USER <SP> <username> <CRLF> 登录的用户名
PASS <SP> <password> <CRLF> 密码
ACCT <SP> <account-information> <CRLF>
CWD <SP> <pathname> <CRLF> 改变当前目录
CDUP <CRLF> 返回上级目录
SMNT <SP> <pathname> <CRLF>
QUIT <CRLF> 退出
REIN <CRLF> 重新登录
PORT <SP> <host-port> <CRLF>
PASV <CRLF> 获取数据传输端口
TYPE <SP> <type-code> <CRLF> 设置数据交换的类型{A(SCII),E(BCDIC),I(mage),L(ocal byte size)}
STRU <SP> <structure-code> <CRLF>
MODE <SP> <mode-code> <CRLF>
RETR <SP> <pathname> <CRLF>
STOR <SP> <pathname> <CRLF> 用覆盖方式上传一个文件到服务器
STOU <CRLF>
APPE <SP> <pathname> <CRLF> 用追加方式上传一个文件到服务器
ALLO <SP> <decimal-integer>
[<SP> R <SP> <decimal-integer>] <CRLF>
REST <SP> <marker> <CRLF> 指定重新下在的字节数
RNFR <SP> <pathname> <CRLF> 指定需要改名的原文件
RNTO <SP> <pathname> <CRLF> 指定需要改名的新文件名
ABOR <CRLF> 取消前一指令
DELE <SP> <pathname> <CRLF> 在服务器上删除指定文件
RMD <SP> <pathname> <CRLF> 在服务器上删除指定目录
MKD <SP> <pathname> <CRLF> 在服务器上创建目录
PWD <CRLF> 显示当前目录
LIST [<SP> <pathname>] <CRLF> 列出当前目录下所有文件和子目录
NLST [<SP> <pathname>] <CRLF> 列出当前目录下所有文件和子目录的名字
SITE <SP> <string> <CRLF>
SYST <CRLF>
STAT [<SP> <pathname>] <CRLF>
HELP [<SP> <string>] <CRLF> 获取帮助
NOOP <CRLF>
FTP Security commands and arguments
AUTH <SP> <mechanism-name> <CRLF>
ADAT <SP> <base64data> <CRLF>
PROT <SP> <prot-code> <CRLF>
PBSZ <SP> <decimal-integer> <CRLF>
MIC <SP> <base64data> <CRLF>
CONF <SP> <base64data> <CRLF>
ENC <SP> <base64data> <CRLF>
1.访问命令:
USER <username> 用于指定登录的用户名,以便服务器进行身份验证。USER命令通常是控制连接建立后发出的第一个命令。
PASS <password> 用于指定用户密码,该命令用于登录用户命令之后。
REIN 重新初始化用户信息,该命令会终止当前 USER的传输,也会终止正在传输的数据,然后重置所有参数,并打开控制连接,以便客户端再次发出USER命令。
QUIT 关闭与服务器之间的连接。
2.模式设置命令
PASV 告诉服务器,让FTP服务器在指定的数据端口进行监听,被动接受客户端的请求。是默认模式。
PORT <address> 告诉FTP服务器,客户端监听的端口号是address,FTP服务器采用主动模式连接客户端。
TYPE <data type> 指定要传输的数据类型,有ASCLL和二进制。
MODE <mode> 指定传输模式,S(流),B(块),C(压缩)。
3.文件管理命令
CWD <directory> 用户可以在不同的目录或数据集下工作而不改变登录信息,directory一般是用户名与系统相关的文件集合。
PWD 返回当前工作目录。
MKD <directory>> 在指定目录下创建新目录,directory表示指定目录的字符串。
CDUP 回到上层目录。
RMD <directory> 删除指定目录。
LIST <name> 返回指定路径下的子目录及文件列表,name为路径,若省略,返回当前路径下的文件列表。
NLIST <directory> 返回指定路径下的目录列表,省略路径时,返回当前目录。
RNFR <old path> 重新命名文件,该命令的下一条命令用RNTO指定新的文件名。
RNTO <new path> 和RNFR命令共同完成对文件的重命名。
DELE <filename> 删除指定路径下的文件。
4.文件传输命令
RETR <filename> 下载指定路径的文件。
STOR <filename> 上传一个指定的文件,并将其存储在指定的位置,如果文件已经存在,原文件被覆盖,如果文件不存在,则创建新文件。
更多内容请关注微信公众号“外里科技”
官方公众号 | 外里科技 |
运营公众号 | 英雄赚 |
开源代码 |