FTP协议是什么
FTP(File Transfer Protocol,文件传输协议) 是TCP/IP 协议组中的协议之一。 FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。 其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。
在典型的FTP的会话中,用户坐在一台主机前面,向一台远程主机上传或下载文件。为使用户能够访问远程主机的账户,用户必须提供一个用户标识和口令。在提供了授权信息后,用户就能从本地文件系统向远程文件系统传送文件。
HTTP协议和FTP协议都是文件传输协议,并且有很多共同的特点。例如,其运输层协议都是TCP。但是,这两个协议也有一些重要的区别:最显著的就是FTP使用并行的两个TCP连接来传输文件,一个是控制连接,一个是数据连接。
- 控制连接用于在两个主机之间传输控制信息,如用户标识、口令,命令等
- 数据连接用户实际传输一个文件
正因为FTP协议使用一个分离的控制连接,所以我们也称FTP的控制信息是带外传送的。但是,HTTP协议是在传输文件的TCP连接中发送请求和响应首部行的。因此,HTTP协议可以说是带内发送控制信息的。
FTP协议传输过程
当用户主机和远程主机开始一个FTP会话前,FTP的客户机首先在21端口上向服务器发起一个用于控制的TCP连接。当FTP的服务器端从该连接上收到一个文件传输的命令后,就发起一个到客户机上的数据连接。FTP在该数据连接上准确地传送一个文件并关闭该连接。如果在同一会话期间,用户还需要传输另一个文件,FTP则会打开另一个数据连接。因为对FTP传输而言,控制连接贯穿了整个用户会话期间,但是针对会话中的每一次文件传输都需要建立一个新的数据连接。
因此,FTP服务器必须在整个会话期间保留用户的状态信息!这根HTTP是不同的。
FTP命令和回答
和HTTP的命令一样,FTP的报文也是用7位ASCII码编写的。为了区分连续的命令,每个命令后面都跟回车换行符。每个命令由四个大写字母组成,部分还有可选参数,以下是一些常用命令:
- USER username:用于向服务器传送用户标识
- PASS password:用于向服务器传送用户口令
- LIST:用于请求服务器返回远程主机当前目录的所有文件列表
- RETR filename:用于从远程主机的当前目录下检索文件
- STOR filename:用于向远程主机的当前目录下存储文件
在用户发出的命令和FTP协议在控制连接上发送的命令之间,一般有一个一对一关系,每个命令都对应着一个回答。回答是一个三位数字。后面跟着一个可选信息,常用的状态码如下:
状态码 | 释义 |
---|---|
331 | Username OK, Password required |
125 | Data connection already open; transfer starting |
425 | Can’t open data connection |
452 | Error writing file |
参考文献
[1]计算机网络自顶向下方法.第二章