FTP的主动模式和被动模式
参考地址: https://blog.51cto.com/13688966/2105893
FTP文件传输分为两种模式,主动(PORT)模式和被动(Passive)模式,用户应该用哪种?
简单粗暴,直接上答案
1)如果不是必须需要,不要使用FTP服务,主动/被动模式,命令/数据端口,初学者很容易一下子就被搞蒙。
2)如果一定要使用FTP服务,在今天的互联网环境里面,使用FTP被动模式进行连接传输。不要使用主动模式,除非你真的知道你在做什么
如果只是想知道答案的朋友,看到这里就可以了。对技术和原理感兴趣的朋友,请继续往下。
FTP两种模式协议过程和原理
被动模式
从上图中可以看到,被动模式是FTP服务器返回数据传输需要的端口,FTP客户端去连接FTP服务端。
绝大部分的互联网应用(比如Web/Http),都是客户端向服务端发起连接。换句话说,绝大部分互联网应用都是被动模式。
主动模式
从上图中可以看到,主动模式是FTP客户端向FTP服务器发送数据传输需要的端口,FTP服务端去连接FTP客户端的端口,与被动模式刚好相反。
需要注意的是,被动模式和主动模式的登录过程,都是FTP客户端去连接FTP服务器。
为什么绝大部分互联网应用都是被动模式
因为大部分客户端都是在路由器后面,没有独立的公网IP地址,服务器想要主动连接客户端,难度太大,在现在真实的互联网环境里面几乎是不可能完成的任
博主理解与经验
1. 主动模式不安全
根据资料参考, 主动模式不安全的原因是数据传输端口是固定20, 会被黑客利用
但是博主特意没有放行服务器的20端口, FTP照样可以连接, 难道是自动开放了20端口
2. 被动模式开启需要注意的地方
参考了资料, 都只告诉你怎么去开启被动模式
但是没有指出, 被动模式, 是需要开放一些特定端口的
至于是哪些端口, 根据配置文件来, 例如下面博主的配置
这段配置的意思是被动模式采用 3000-3200 的随机一个端口进行数据传输
所以这里是需要防火墙放行3000-3200端口的
但是主动模式下为什么不需要放行20端口
博主也没弄清楚, 希望知道的不吝告知