FTP是Internet传统的服务之一,是用于从一台主机到另一台主机传输文件的协议。起初,FTP并不是应用于IP网络上的协议,而是用于ARPANET网络中计算机间的文件传输协议。在那时,FTP的主要功能是在主机间高速可靠地传输文件。目前FTP仍然保持其可靠性,即使在今天,它还允许文件远程存取。这使得用户可以在某个系统上工作,而将文件存储在别的系统中。例如,如果某用户运行Web服务器,需要从远程主机上取得HTML文件和CGI(Common Gateway Interface,公共网关接口)程序在本机上工作,他需要从远程存储站点获取文件(远程站点也需安装Web服务器)。当用户完成工作后,可使用FTP将文件传回到Web服务器。采用这种方法,用户无须使用Telnet登录到远程主机进行工作,这样就使Web服务器的更新工作变得如此的轻松。FTP的主要功能包括:浏览Internet上其他远程主机的文件系统;在Internet上的主机之间进行文件传输;使用FTP提供的内部使命可以实现一些特殊功能,例如改变文件传输模式、实现多文件传输。
FTP和HTTP都是文件传送协议,它们有很多的共同特征,譬如说都是运行在TCP之上。不过这两个应用层协议之间存在重要的差别。FTP使用两个TCP连接,一个用于控制信息(控制连接端口21),另一个用于实际的数据传输(数据连接端口20),主要有三个作用,包括:从客户向服务器发送一个文件;从服务器向客户发送一个文件;从服务器向客户发送文件或目录列表。对FTP对话的分析包括对在控制连接上所发送命令的检查和对在数据连接上发送的TCP数据段(传输层数据单元的称呼)的评估。对于普通的(活跃的)FTP,控制连接由客户端初始化,数据连接由服务器端初始化。活跃的FTP也称为Port模式。另一种模式是被动模式(Passive模式),在这种模式下客户端初始化数据连接。在HTTP中,同一个TCP连接(端口80)既用于承载请求和响应头部,也用于承载所传送的文件。图10-2描述了FTP的控制连接和数据连接。
图10-2 FTP控制连接和数据连接
在过去,客户端默认为Port模式;近来,由于Port模式的安全问题,许多客户端的FTP应用默认为Passive模式。
下面给出一些常见的命令。
·bin:使用二进制数文件传输方式。
·bye:退出FTP会话过程。
·delete remote-file:删除远程主机文件。
·dir [remote-dir] [local-file]:显示远程主机目录,并将结果存入local-file.
·get remote-file [local-file]:将远程主机文件remote-file传至本地硬盘local-file.
·put local-file [remote-file]:将本地硬盘local-file传至远程主机文件remote-file.
·help [cmd]:显示ftp内部命令cmd的帮助信息,如help get则显示get命令的帮助信息。
·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 [password] [account]:向远程主机表明自己的身份,需要口令时,必须输入口令,如user anonymous my@email.