FTP的主动模式和被动模式

参考地址: https://blog.51cto.com/13688966/2105893

FTP文件传输分为两种模式,主动(PORT)模式和被动(Passive)模式,用户应该用哪种?

简单粗暴,直接上答案

1)如果不是必须需要,不要使用FTP服务,主动/被动模式,命令/数据端口,初学者很容易一下子就被搞蒙。

2)如果一定要使用FTP服务,在今天的互联网环境里面,使用FTP被动模式进行连接传输。不要使用主动模式,除非你真的知道你在做什么

如果只是想知道答案的朋友,看到这里就可以了。对技术和原理感兴趣的朋友,请继续往下。

FTP两种模式协议过程和原理

被动模式

ftp被动模式nginx FTP被动模式没有禁止_FTP 主动模式

从上图中可以看到,被动模式是FTP服务器返回数据传输需要的端口,FTP客户端去连接FTP服务端。

绝大部分的互联网应用(比如Web/Http),都是客户端向服务端发起连接。换句话说,绝大部分互联网应用都是被动模式。

主动模式

ftp被动模式nginx FTP被动模式没有禁止_FTP 主动模式_02

从上图中可以看到,主动模式是FTP客户端向FTP服务器发送数据传输需要的端口,FTP服务端去连接FTP客户端的端口,与被动模式刚好相反。

需要注意的是,被动模式和主动模式的登录过程,都是FTP客户端去连接FTP服务器。

为什么绝大部分互联网应用都是被动模式

因为大部分客户端都是在路由器后面,没有独立的公网IP地址,服务器想要主动连接客户端,难度太大,在现在真实的互联网环境里面几乎是不可能完成的任

博主理解与经验

1. 主动模式不安全

根据资料参考, 主动模式不安全的原因是数据传输端口是固定20, 会被黑客利用

但是博主特意没有放行服务器的20端口, FTP照样可以连接, 难道是自动开放了20端口

2. 被动模式开启需要注意的地方

参考了资料, 都只告诉你怎么去开启被动模式

但是没有指出, 被动模式, 是需要开放一些特定端口的

至于是哪些端口, 根据配置文件来, 例如下面博主的配置

ftp被动模式nginx FTP被动模式没有禁止_FTP 主动模式_03

这段配置的意思是被动模式采用 3000-3200 的随机一个端口进行数据传输

所以这里是需要防火墙放行3000-3200端口的

但是主动模式下为什么不需要放行20端口

博主也没弄清楚, 希望知道的不吝告知