1、FTP简介
FTP(File Transfer Protocol) :是一种处于应用层的用于文件传输的协议。FTP客户端和FTP服务器之间的通信使用TCP/IP协议族。它规定了客户端和服务器之间的通信格式和命令集,包括用户认证、文件传输、文件名和目录信息等,允许用户在远程计算机上上传和下载文件。FTP协议的客户端可以是任何支持FTP协议的程序,例如Windows系统中的FileZilla、Mac OS系统中的Cyberduck、Linux系统中的vsftpd等。
FTP协议的工作原理:FTP协议的工作原理是客户端向服务器发送命令,服务器响应这些命令,并完成文件传输。
FTP协议的安全性:FTP协议是一种非安全的文件传输协议,因为它不使用加密技术来保护文件传输的安全性。这意味着,如果FTP服务器没有得到适当的保护,那么它的文件可能会被未经授权的用户访问或修改。因此,在使用FTP协议时,应确保FTP服务器和客户端都得到了适当的保护,例如使用防火墙和加密技术等。
FTP协议的服务器通常运行在Unix或Linux系统中,例如Apache的vsftpd、ProFTPD等。
1.1 FTP端口
FTP服务端默认使用的端口号为20和21,其中20是数据端口,21是命令端口。
命令端口:FTP服务端监听21端口号来等待控制连接建立,客户端有一个Socket用来连接FTP服务器的端口,21端口负责FTP命令的发送和接收返回的响应信息,只需要很小的网络带宽。建立控制连接时,服务端会验证客户身份,决定是否建立数据连接;当需要目录列表、传输文件时,建立数据连接,并且每次客户端都是用不同的端口号来建立数据连接;在数据连接存在期间,控制连接必须存在,一旦控制连接断开,数据连接会自动关闭;数据传输完毕,会中断这条临时的数据连接。在FTP连接期间,控制连接始终保持连接状态。
数据端口:FTP服务端监听20端口来等待数据连接,依赖于控制连接(必须先建立控制连接)、连接方式
1.2 连接模式
主动连接:
1、FTP客户端向FTP服务器发送PORT命令:FTP客户端(N端口 >= 1024)向FTP服务器发送一个PORT命令(21),告诉服务器本地的数据端口(N+1)。
2、FTP服务器响应PORT命令:FTP服务器收到PORT命令后,会响应一个端口号(20),将这个端口号告诉FTP客户端,并将其作为数据传输的源端口。
3、FTP服务器打开数据连接:FTP服务器的数据连接端口(20)打开一个连接到FTP客户端使用之前指定的端口号(N+1)。然后,进行数据传输。
被动连接:
1、FTP客户端向FTP服务器发送PASV命令:FTP客户端(N端口 >= 1024)向FTP服务器发送一个PASV命令(21),告诉服务器本地的数据端口(N+1)。
2、FTP服务器响应PASV命令:FTP服务器收到PASV命令后,会响应一个端口号(P>= 1024)。将这个端口号告诉FTP客户端,并将其作为数据传输的目标端口。