关于ftp操作中被动模式(Passive Mode)是什么意思?
FTP协议
FTP协议是建立在TCP协议基础上的,所以client与server的每次交互都要经过三次握手(TCP Three-Way Handshake),通过两张图进行解释:
1、主动模式(也叫做PORT模式、standard模式,需要利用服务器的21端口进行资料传输)
说明:client端利用>1024的任意端口发起于server的21端口建立连接,建立“命令联系通道”,如果要发生资料传输,通过21告知server数据联系通道端口(也是一个>1024的端口例如1333),并进行listen,server利用20端口向client的1333端口发起连接,并建立“资料联系通道”。
局限性:client端在防火墙或IP分享服务器后面时,其“命令联系通道”可以顺利建立,但“资料联系通道”无法顺利建立。
2、被动模式
说明:建立“命令联系通道”的方式和主动模式基本一样,也是连接server的21端口。但是如果需要传输资料,client会送出PASV指令,告诉server要利用被动模式建立“资料联系通道”,然后server会打开一个>1024端口,并开始listen,并把这个端口好通过“命令联系通道”告知client,client再打开一个>1024的端口,与server建立“资料连接通道”。“资料连接通道”是由server被动建立的,所以称作“被动模式”。
3、FTP命令行连接设置主动和被动模式
windows的ftp命令默认是使用的主动方式连接FTP serer。
linux默认是PASV模式,并通过passive on | off 来进行切换主动和被动模式。
4、在处理实际问题中主动模式和被动模式的切换
在被动模式下,数据连接是由客户程序发起的,和主动模式相反。是否采取被动模式取决于客户程序,在ftp命令行中使用passive命令就可以关闭/打开被动模式。主动模式是从服务器端向客户端发起连接;被动模式是客户端向服务器端发起连接。