FTP,文件传送协议(File Transfer Protocol),用于在异构网络中任意计算机之间传送文件。在进行文件传输时,FTP的客户端和服务器之间要建立两个并行的TCP连接:“控制连接”和“数据连接”。
控制连接在整个会话期间一直保持打开,FTP客户所发出的传送请求,通过控制连接发送给服务器的控制进程,但是控制连接并不用来传送文件。实际用来传输文件的是“数据连接”。服务器端的控制进程在接受到FTP客户发送来文件传输请求后就创建“数据传送进程”和“数据连接”,用来连接客户端和服务器端的数据传送进程。数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”,并结束运行。
由于FTP使用了一个分离的控制连接,因此FTP的控制信息是带外(out of band)传送的。
而主动模式和被动模式的区别是数据连接建立的方式不同。命令连接建立的方式是相同的:客户端向服务器的FTP端口(默认是21号端口)发送连接请求,服务器接受连接,建立一条命令连接。
port方式(主动模式)
当需要传送数据时, 客户端在命令链路上用PORT命令告诉服务器:“采用主动模式建立数据连接,我打开了X端口,你过来连接我”。同时客户端在X端口监听(socket bind listen)等待服务器的连接……服务器收到消息后,从20端口向客户端的X端口发送连接请求(connect)建立一条数据链路来传送数据。
pasv方式 ( 被动模式 )
当需要传送数据时, 客户端在命令链路上用PASV命令告诉服务器:“采用被动模式建立数据连接” ,服务器在命令链路上回复客户端:“我打开了X端口,你过来连接我”。于是客户端向服务器的X端口发送连接请求,建立一条数据链路来传送数据。
所谓主动被动模式,是建立数据连接时站在服务器角度看问题,服务器主动发起连接就是主动模式,服务器被连接就是被动模式。