用户通过一个FTP用户代理和FTP交互。
- 用户提供远程主机的主机名,本地的FTP客户进程建立一个到远程主机FTP服务器进程的TCP连接
- 用户提供用户标识和口令,作为FTP命令的一部分在该TCP连接上传送
- 服务器向用户授权,用户可以将存放在本地文件系统中的多个文件复制到远程文件系统
HTTP和FTP都是建立在TCP上的应用层文件传输协议。
FTP使用了两个并行的TCP连接来传输文件:
- 控制连接:用于在两主机之间传输控制消息,如用户标识、口令、改变远程目录的命令以及存放/获取文件的命令
- 数据连接:用于实际发送一个文件
FTP的控制信息是带外传送的。HTTP是带内发送控制信息的。
用户主机与远程主机开启一个FTP会话时:
- FTP的客户端在服务器21号端口与服务器端发起一个用于控制的TCP连接
- FTP的客户端通过控制连接发送用户的表示和口令,发送改变远程目录的命令
- 当FTP的服务器端从该连接上收到一个文件传输的命令后,就发起一个到客户端的TCP数据连接
- FTP在数据连接上传送一个文件,然后关闭该连接
注意:
- 在同一个会话期间,如果用户还需要传输另外一个文件,FTP打开另一个数据连接
- 对于控制连接,贯穿于整个会话期间
- FTP服务器必须在整个会话期间保留用户的状态,是有状态的
FTP命令和回答
以7比特ASCII格式在控制连接上传送。每个命令由4个大写字母ASCII字符组成
- User username:向服务器传送用户标识
- PASS password:向服务器传送用户口令
- LIST:用于请求服务器会送当前远程目录中的所有文件列表,文件列表在新建的数据连接上传送
- RETR filename:用于从远程主机当前目录检索文件,该命令引起远程主机发起一个数据连接,并经该数据连接发送所请求的文件
- STOR filename:用于在远程主机的当前目录上存放文件
典型的回答:
- 331 Username OK , Password required
- 125 Data connection already open; transfer starting
- 425 Cam’t open data connection
- 452 Error writing file