1.1、概述
FTP服务器是网络中提供文件存储和访问服务的服务器,无论是个人还是企业,都可以搭建FTP服务器,用来上传数据、下载数据和共享文件。FTP采用C/S(客户端/服务器)架构,用户只要通过FTP客户端程序连接到FTP服务器,就能实现文件传输。
1.2、认识FTP
文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的协议。如果用户需要将文件从本机发送到另一台计算机,可以使用FTP上传操作;反之,用户可以使用FTP从其他计算机将文件下载到本机。
基于TCP/IP在不同主机之间提供可靠的数据传输,在传输过程中发生错误可以进行相应的修正。FTP在文件传输中的一个重要的特点是支持断点续传,可以应对数据传输过程中,因网络中断二导致的传输中断的情况。
1.3FTP的工作原理
一个完整的FTP文件传输过程需要建立两种类型的连接:一种是控制连接,用于在服务器与客户端之间的传输控制信息,如用户标识,口令,传输与操作命令等(上传下载的操作);另一种是数据连接,用于实际传输文件数据。
1.控制连接
FTP客户端在与FTP服务端建立上传、下载的数据传输时,它首先向FTP服务器的TCP 21号端口发起建立连接的请求,FTP服务器接受来自FTP客户端的请求,完成控制连接的建立。
2.数据连接
控制连接建立之后,FTP服务器的TCP 20号端口开始传输文件数据,传输文件数据的连接被称为数据连接。
说明:数据连接与控制连接同时存在,如果再传输数据的同时,控制连接断开了,数据连接也会自动关闭。
1.4FTP数据传输的模式
按照建立FTP的数据连接方式的不同,数据传输模式分为两种,即主动模式和被动模式。
1.4.1主动模式(PORT模式)
在主动模式下,FTP客户端告诉服务器它将打开一个特定的端口以接收数据连接。具体步骤如下:
1. 客户端随机选择一个端口(通常大于1024),并建立到FTP服务器命令端口(通常是端口21)的连接。
2. 客户端通过命令通道发送PORT命令给服务器,告诉服务器客户端的数据端口号。
3. 服务器收到PORT命令后,会尝试连接到客户端指定的数据端口,以便开始数据传输。
1.4.2被动模式(PASV)
在被动模式下,FTP服务器告诉客户端它将打开一个特定的端口以等待客户端的数据连接。具体步骤如下:
1. 客户端同样首先建立到FTP服务器命令端口的连接。
2. 客户端发送PASV命令给服务器,请求进入被动模式。
3. 服务器收到PASV命令后,会打开一个数据端口,并通知客户端该端口号。
4. 客户端使用这个端口号来建立到服务器的数据连接,以便开始数据传输。
为什么使用被动模式
被动模式被广泛使用,因为它解决了在网络中存在防火墙或NAT(网络地址转换)设备时的连接问题。在这些环境中,服务器可能无法成功连接到客户端指定的端口,因为客户端的端口通常是动态分配的,并且可能受到防火墙的限制。通过使用被动模式,客户端始终是连接的发起方,这使得数据传输更容易穿越防火墙和NAT设备。
如何选择模式
选择使用主动模式还是被动模式通常取决于网络环境和FTP服务器的配置。如果客户端位于防火墙后面或使用NAT,通常建议使用被动模式。如果网络环境较为简单,没有复杂的防火墙或NAT设置,主动模式也可以工作。
在实际使用中,大多数现代FTP客户端默认使用被动模式,因为它更可靠。然而,用户可以根据需要在FTP客户端中手动切换到主动模式。
1.5.FTP服务器的用户
FTP服务器默认提供了3类用户,不同的用户具有不同的访问权限和操作功能
FTP用户类型主要分为以下三种:
1. 匿名用户(Anonymous User):
匿名用户是一种不需要特定用户名和密码即可登录的FTP账户。通常,匿名登录允许用户访问公共文件和目录,但不允许进行写入操作,也就是说,匿名用户通常只有读取权限。这种类型的账户用于公开分享文件,但出于安全考虑,匿名用户的权限通常受到限制。
2. 本地用户(Local User):
本地用户是指在操作系统中已经创建的用户账户,这些账户可以直接用于登录FTP服务器。本地用户的权限和在操作系统中的权限一致,这意味着如果一个用户在操作系统中有足够的权限,他们可能能够访问FTP服务器上的任何文件。使用本地用户登录FTP可以方便地集成现有的用户账户管理,但也可能带来安全隐患,因为一旦FTP密码被破解,攻击者可能获得系统级别的访问权限。
3. 虚拟用户(Virtual User):
虚拟用户是专门为FTP服务创建的用户账户,它们不依赖于操作系统的用户账户。虚拟用户的账号、密码和权限都是独立设置的,通常存储在一个单独的数据库或配置文件中。虚拟用户模式提供了更高的安全性,因为即使FTP账户信息被泄露,攻击者也无法获得操作系统的访问权限。虚拟用户非常适合用于企业环境,因为它们允许管理员精细控制FTP访问权限,而不影响操作系统的安全。
在实际部署FTP服务器时,管理员可以根据需要选择合适的用户类型,并根据安全策略和业务需求来配置相应的权限。例如,对于需要严格访问控制的内部文件共享,可能会选择使用虚拟用户;而对于公开的文件下载服务,则可能使用匿名用户。