多迈知识库
第二套高阶模板 · 更大气的阅读体验

FTP服务器主动模式和被动模式区别

发布时间:2026-01-11 04:51:41 阅读:29 次

FTP的两种连接方式:主动与被动

用过FTP传文件的人都可能遇到过连不上服务器的情况,尤其是通过路由器或防火墙时。问题往往出在FTP的工作模式上——主动模式(Active Mode)和被动模式(Passive Mode)。这两种模式的核心区别在于数据连接由谁发起。

主动模式:服务器主动连你

在主动模式下,客户端先和FTP服务器建立命令连接(通常是端口21),然后告诉服务器:“我要传数据了,用哪个端口接收?” 客户端会告诉服务器自己的IP和一个用于接收数据的端口(比如20端口)。接着,服务器从自己的20端口主动发起连接,去连客户端上报的端口。

听起来没问题,但在实际中容易出状况。比如你在家里用宽带上网,路由器做了NAT转换,服务器看到的是你的公网IP,但根本不知道你内网的真实IP和端口。更麻烦的是,本地防火墙很可能直接拦截这个“外来”的连接请求,导致数据传不了。

被动模式:你自己来连我

被动模式就是为了解决这个问题设计的。还是先建立命令连接,但这次客户端请求数据传输时,服务器不再主动出击,而是回复:“你要连我,就去连我的某个高端口吧,比如50000。” 然后客户端自己发起连接,去连服务器的这个高端口获取数据。

这种模式下,所有连接都是由客户端发起的,经过NAT和防火墙时不会被拦,因为是“我自己发出去的请求”,回来的数据自然被允许通过。

举个生活中的例子

可以类比打电话点外卖。主动模式就像你打给商家说“我要下单”,然后商家反打你电话告诉你配送信息——但如果你手机设置了拒接陌生来电,那这通回拨就失败了。而被动模式是你打过去下单,商家只回复一句“等你来取”,然后你自己再打一次电话或者上门取餐,全程你掌握主动权。

配置上的差异

服务器端如果启用被动模式,需要开放一段高端口范围,并在配置中指定。比如在vsftpd中,你会看到这样的设置:

pasv_enable=YES
pasv_min_port=50000
pasv_max_port=51000

而主动模式虽然不需要开一堆端口,但对客户端网络环境要求高,如今大多数实际场景都推荐使用被动模式。

很多FTP客户端软件(如FileZilla)默认就是被动模式,你甚至不用手动设置。但如果在企业内网或特殊网络环境下传不了文件,不妨检查一下是不是模式选错了,或者防火墙没放行对应的端口范围。