FTP被动模式、主动模式
共同点
FTP客户端连接到FTP服务器的21端口
主动模式
FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,客户端随机开放一个端口(1024以上),发送 PORT命令到FTP服务器,告诉服务器客户端采用主动模式并开放端口;FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口连接,发送数据。
被动模式
FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,发送PASV命令到FTP服务器, 服务器在本地随机开放一个端口(1024以上),然后把开放的端口告诉客户端, 客户端再连接到服务器开放的端口进行数据传输
如何选择主动还是被动
如果工作中一定要使用FTP服务器,在今天的互联网环境里面,使用FTP被动模式进行连接传输就可以了。
因为大部分客户端都是在路由器后面,没有独立的公网IP地址,服务器想要主动连接客户端,难度太大。
总结
如果客户端和FTP服务器之间有防火墙,FTP服务器使用被动模式【服务器开放端口(大于1024)让客户端端口(大于1024)来连接传输数据】。
如果客户端和FTP服务器之间没有防火墙,FTP服务器使用主动模式【服务器使用20端口去连接客户端端口(大于1024)来传输数据】。
Windows防火墙配置入站规则实现被动模式
放行21、50000-56635