Debian系统本身并不直接提供FTP服务,但用户可以通过安装软件来支持FTP及其相关协议。在Debian上,FTP服务器软件vsftpd主要支持以下文件传输模式:
- ASCII模式:用于传输文本文件。发送端的字符在发送前被转换成ASCII码格式之后进行传输,接收端收到之后再将其转换成字符。
- 二进制模式:常用于发送图片文件和程序文件。发送端在发送这些文件时无需转换格式,即可传输。
此外,vsftpd还支持主动(Active)和被动(Passive)两种传输模式,这两种模式主要影响客户端与服务器之间的数据连接方式。
主动模式(Port模式)的原理是:
- 客户端从一个任意的端口N(N>1024)连接到FTP服务器的port 21命令端口,建立命令链路。
- 客户端开始监听端口N+1,并通过建立的命令链路发送FTP命令“port N+1”到FTP服务器。
- FTP服务器以数据端口(20)连接到客户端指定的数据端口(N+1),客户端与FTP服务器进行数据链路连接的建立成功。
- 随后客户端与服务器之间就可以通过数据链路进行数据的传输。
被动模式(Passive模式)的原理是:
- 客户端从一个任意的端口N(N>1024)连接到FTP服务器的port 21命令端口,建立命令链路。
- 客户端开始监听端口N+1,客户端通过建立的命令链路提交PASV命令。
- FTP服务器会开启一个任意的端口(P >1024),并通过命令链路发送 PORT P 命令给客户端。
- 客户端发起从本地端口N+1到服务器的端口P的数据链路。
- 通过数据链路进行数据传输。
需要注意的是,FTP协议本身不安全,因为它在客户端和服务器之间传输数据时不会加密。对于需要安全传输的场景,建议使用SFTP(SSH File Transfer Protocol)或FTPS(FTP Secure)。