yichao firstname, zeaster nickname, zhang lastname

active mode OR passive mode on FTP

自从给小黑装上了Mac OS X就再也不想用windows了,不管是xp还是vista,都太蹩脚了
在公司和同事传文件时,苹果自带的ftp服务器就派上了用途。
苹果自带的这个ftp服务器还是很好用的,不需要配置,只需要在sharing中启动ftp服务,打开防火墙就OK了。
但接下来也遇到了一点点麻烦:
同事使用windows自带的ftp命令行工具则可以访问我的ftp服务器,使用flashFXP则无法访问。
后来证实是因为ftp命令行使用active mode(主动模式)所以可以访问,而flashFXP选用passive mode(被动模式)无法访问,不选用被动模式则可以正常访问。

于是google之:
看到这篇文章,疑惑顿释。
主动模式和被动模式是相对于ftp服务器来说的,即是ftp服务器主动同客户端建立通讯socket或ftp服务器被动接受客户端发来的建立通讯socket请求。
ftp以及telnet等老式的通信协议使用了2种端口,一个是命令端口(Command Port),另一个是数据端口(Data Port)
ftp的命令端口是21,这个端口在苹果防火墙设置中被开放。但另一个数据端口是在通信时由客户端随机指定的,如果使用被动模式,客户端使用数据端口进行通信时就会被Mac的防火墙拦住。而使用主动模式时,是ftp服务器使用数据端口和同事的机器建立socket,而同事机器上没有防火墙,因此可以正常访问。

后来,在同事机器上装了天网防火墙,建立了若干规则,很容易就验证了上述想法。

No comments: