文件传输协议(File Transfer Protocol,FTP)简称为“文件协议”,用于在Internet上控制文件的双向传输。客户上传文件时,通过服务器20端口建立的连接是建立在TCP之上的数据连接,通过服务器21号端口建立的连接是建立在TCP之上的控制连接。
FTP协议有两种工作方式:主动式(PORT)和被动式(PASV)。主动与被动是相对于服务器是否首先发起数据连接而言的。
1、主动式
主动式的连接过程:
1)当需要传输数据时,客户端从一个任意的非系统端口N(N>=1024)连接到FTP服务器的21号端口;
2)客户端开始监听端口N+1并发送FTP命令“Port N+1”到FTP服务器;
3)服务器会从20号数据端口向客户端指定的N+1号端口发送连接请求,并建立一条数据链路来传送数据。
具体流程如下图所示:
2、被动式
在被动式中,命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端口的入方向数据连接被客户端所在网络防火墙过滤掉的问题。
被动式的连接过程:
1)当需要传输数据时,客户端从一个任意的非系统端口N(N>=1024)连接到FTP服务器的21号端口;
2)客户端发送PASV命令,且服务器响应;
3)服务器开启一个任意的非系统端口Y(Y>=1024);
4)客户端从端口N+1连接到FTP服务器的Y号端口。
具体流程如下图所示:
3、常见命令
- bin:使用二进制数文件传输方式;
- bye:退出FTP会哈进程;
- delete remote-file:删除远程主机文件;
- dir [remote-dir] [local-file]:显示远程主机目录,并将结果存入local-file;
- get remote-file [local-file]:将远程主机文件remote-file 传至主机文件remote-file;
- put local-file [remote-file]:将本地local-file传至远程主机文件remote-file;
- help [cmd]:显示ftp内部命令cmd的帮助信息;
- ls [remote-dir] [local-file]:显示远程目录remote-dir,并存入本地local-file;
- open host[port]:建立指定ftp服务器连接,可指定连接端口;
- pwd:显示远程主机的当前工作目录;
- recv remote-file [local-file]:同get;
- send local-file [remote-file]:同put;
- user user-name [passwd] [account]:向远程主机表明自己的身份。
4、TFTP
简单文件传送协议(Trivial File Transfer Protocol,TFTP)的功能与FTP类似,是一个小而简单的文件传输协议。该协议基于UDP协议,一般用于路由器、交换机、防火墙配置、iOS的备份和替换。