数据连接分为两种模式:主动连接(PORT)和被动连接(PASV)
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接建立一条命令链路。当需要传送数据时客户 端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条 数据链路来传送数据
PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接建立一条命令链路。当需要传送数据时服务 器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”于是客户端向服務器的XXXX端口发送连接请求,建立一条数据链路来 传送数据
换一种通俗点的方式说:
在主动模式下,FTP客户端随机开启一个大于1024的端口N向服務器的21号端口发起连接然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1进行数据传输。
在被动模式下FTP库户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口嘫后向服务器发送PASV命令,通知服务器自己处于被动模式服务器收到命令后,会开放一个大于1024的端口P进行监听然后用PORT P命令通知客户端,洎己的数据端口是P客户端收到命令后,会通过N+1号端口连接服务器的端口P然后在两个端口之间进行数据传输。
总的来说主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口