java ftp主动模式与被动模式

首先介绍一下主动模式与被动模式:

1、PORT(主动模式)

ftpClient.enterLocalActiveMode();

PORT中文为主动模式,工作的原理:FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据的时候,客户端随机开放一个端口(1024以上),发送PORT命令道FTP服务器,告诉服务器客户端采用主动模式并开放端口;

FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的宽口连接,发送数据,原理如下图:

java ftp主动模式与被动模式

2、PASV(被动模式)

// ftpClient.enterLocalPassiveMode();

PASV是Passive的缩写,中文称为被动模式,工作原理:FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,发送PASV命令道FTP服务器,服务器在本地随机开放一个端口(1024以上),然后把开放的宽口告诉客户端,客户端再次连接到服务器开放的端口进行数据传输,原理如下图:

java ftp主动模式与被动模式

两种模式的比较

从上面的运行来看,主动模式和被动模式的不同简单的可以概述为:

主动模式传输数据时是“服务器”连接到“客户端”的端口;

被动模式是“服务器”开放端口给客户端连接;

建议

内网使用被动模式,外网使用主动模式,服务器相应改动

上一篇:bzoj:1687;poj 2434:[Usaco2005 Open]Navigating the City 城市交通


下一篇:The J1850 Core