很多人在用FTP传文件时,遇到连接不上、上传失败的问题,第一反应是网络不行或者密码错了。其实,问题可能出在端口上。FTP并不是只用一个端口工作,而是有两个核心端口在背后配合——21和20。
21端口:发号施令的“指挥官”
当你用FTP客户端(比如FileZilla)登录服务器时,第一步就是连接21端口。这个端口负责处理控制命令,比如输入用户名密码、列出目录、创建文件夹等操作。你可以把它理解成“前台接待”,不直接搬数据,但负责沟通和调度。
20端口:搬运数据的“搬运工”
真正传输文件时,用的是20端口。它专门负责发送和接收文件内容。比如你上传一个10MB的图片,实际走的就是20端口。不过这里有个坑:只有在“主动模式”(Active Mode)下,服务器才会用20端口来连接客户端传数据。
被动模式是怎么回事?
现在很多FTP客户端默认用“被动模式”(Passive Mode)。这是因为大多数用户都在路由器或防火墙后面,服务器没法主动连上来。在被动模式下,服务器会打开一个随机高端口(比如50000以上),告诉客户端:“你来连我这个新端口传文件吧”。这时候20端口反而不怎么用了。
所以到底有几个端口?
严格来说,FTP标准定义了两个端口:21用于控制,20用于数据。但实际使用中,尤其是被动模式下,除了21端口,还会动态开放一批高端口用于数据传输。如果你在服务器上做防火墙限制,光开21和20可能还不够,得预留一个端口范围给被动模式用。
常见问题场景
比如你在公司上传网站素材,连上了但列不出文件,或者上传到一半断掉。很可能是防火墙拦了被动模式的高端口。解决办法是在FTP服务器配置里设置被动模式端口范围,然后在防火墙上放行这些端口。
以vsftpd为例,配置文件可以这样写:
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=51000
然后在防火墙里放开50000-51000这个区间,问题通常就能解决。
别再以为FTP只靠一个端口干活了。21端口管命令,数据传输却可能涉及多个端口。搞清楚这点,下次传文件卡住,你就知道该查哪了。