文件传输协议:FTP
HTTP 和 FTP 都是文件传输协议,但 FTP 使用两个并行的 TCP 连接来传输文件,一个是控制连接(control connection),一个是数据连接(data connection)。
控制连接用于在两个主机之间传输控制信息,如用户标识、口令、改变远程目录的命令。
数据连接用于实际传输一个文件。
也称 FTP 的控制信息是带外(out-of-band)带外传送的。
FTP传输文件的过程
使用FTP传输数据时,需要在服务器和客户机之间建立控制连接和数据连接
当用户主机与远程主机开始一个 FTP 会话前,FTP 的客户机首先在 21 号端口上发起一个用于控制的与服务器的 TCP 连接。
当 FTP 的服务器端从该连接上收到一个文件传输的命令后,在20 号端口发起一个到客户机的数据连接。FTP 在该数据连接上传送一个文件后关闭该连接。
对FTP传输而言,控制连接贯穿了整个用户会话期间,但是针对会话中的每一次文件传输都需要建立一个新的数据连接。
FTP 服务器在整个会话期间保留用户的状态信息。
例如服务器必须追踪用户在远程目录树上的当前位置。对每个活跃用户会话的状态进行追踪等。
FTP传输文模式
传输模式定义了数据在客户端和服务器之间传输时的格式
FTP 命令和回答,都是按照 7 位 ASII 格式在控制连接上传送
常见的命令如下:
USER username | 用于向服务器传送用户标识 |
---|---|
PASS password | 用干向服务器传送用户口令 |
LIST | 用于请求服务器返回远程主机当前目录的所有文件列表 |
RETR filename | 用于从远程主机的当前目录下载文件 |
STOR filename | 用于向远程主机的当前目录上传文件 |
要注意区分用户在 FTP客户端输入的命令和 FTP协议在控制连接上发送的命令之间的区别,尽管它们一般有一一对应关系。每个命令都对应着一个从服务器返回到客户机的回答。回答是一个 3 位数字,后跟一个可选信息
FTP配置
执行ftp server enable命令使能FTP功能。
执行set default ftp-directory命令设置FTP用户的默认工作目录。
在配置FTP服务器时,可以使用AAA为每个用户分别配置登录账号和访问权限。
aaa命令用来进入AAA视图。
local-user user-name { access-limit max-number | ftp-directory directory | idle-timeout minutes [ seconds ] | password cipher password [ opt ] | privilege level level | state {active | block } } *命令用来创建本地用户,并配置本地用户的各项参数。
user-name指定用户名。
local-user huawei service-type ftp命令用来配置本地用户的接入类型为ftp。
ftp-directory指定FTP用户可访问的目录。如果不配置FTP用户可访问的目录,则FTP用户无法登录设备。
access-limit指定用户名可建立的最大连接数目。
idle-timeout指定用户的闲置超时时间。
privilege level指定用户的优先级。