FTP可分为两种模式,一是主动模式(服务器的主动),二是被动模式(服务器的被动)。
主动模式:即服务器主动发起连接,然后再传输文件。在主动模式下,客户端先用随机选取一个端口N(N>1024)向服务器的端口21发起控制连接,连接成功后,客户端再发出PORT 命令告诉服务器自己监听的端口号是N+1。服务器接到该命令后,用一个新的端口号(一般是20)与客户端的端口N+1建立数据连接。至此,客户端就可以向服务器发送命令,服务器分析并执行命令,然后将文件数据传给客户端,客户端则通过监听N+1端口接收文件数据。
被动模式:即服务器被动接收客户端的连接请求(控制连接请求和数据连接请求都是由客户端发起的)。在被动模式下,客户端先随机选取一个端口N向服务器端口21发起控制连接,然后向服务器发送PASV命令,服务器收到此命令后,会用一个新的端口P(P>1024)进行监听,同时将该端口告诉客户端,客户端收到后,通过端口N+1连接服务器的端口P,建立数据连接。至此,用户通过客户端向服务器发送命令,服务器分析并执行命令,然后通过数据连接将执行结果返回到客户端。