什么是FTP
本地主机上的用户,向远程主机上传或者下载文件。
用户通过一个FTP用户代理与FTP服务器交互。
文件传输过程
- 用户提供远程主机的主机名:在本地主机的FTP客户机进程与远程主机FTP服务器进程之间建立TCP连接
- 提供用户标识和口令:在该TCP连接上向服务器传送
- 服务器验证通过后,进行文件传送(双向):将本地文件系统中的文件传送到远程文件系统(上传)、或从远程文件系统中得到文件(下载)
FTP与HTTP比较(控制连接与数据连接)
都是文件传输协议,并运行在TCP上。
FTP使用了两个并行的TCP连接:
- 控制连接
- 数据连接
- FTP的控制信息是外带传送(out-of-band):
使用分离的控制连接;
HTTP的控制信息是带内传输(in-band):
请求和响应都是在传输文件的TCP连接中发送 - FTP协议是有状态的:
FTP服务器对每个活动用户会话的状态进行追踪,并保留;限制同时会话的总数。
HTTP协议是无状态的:不对用户状态进行追踪。
控制连接:
用于在两主机间传输控制信息(如用户标识、口令等)
- FTP会话开始前,FTP的客户机与服务器在21号端口上建立。
- FTP的客户机通过该连接发送用户标识和口令,或改变远程目录的命令
数据连接:
用于准确传输文件。
当服务器收到一个文件传输的命令后(从远程主机上读或写),在20端口发起一个到客户机的数据连接。
在该数据连接上传送一个文件并关闭连接。
- 控制连接是持续的:在整个用户会话期间一直保持
- 数据连接是非持续的:会话中每进行一次文件传输,都需要建立一个新的数据连接。