潮目编辑梁春丽 mal{黼一 E- 软件服务lianglizi505@163.63 COn3com:目 ■EI 一 ■中国人民银行徐州市中心支行王文选 在搭建FTP文件传输服务器时,使用最多的是向导 傻瓜式的配置方式。近日由于业务拓展的需要,笔者在 防火墙的DMZ| ̄搭建了一个FTP文件传输平台。借此机 会,笔者对FTP的数据传输方式进行了研究,并特别对 FTP数据连接的主动方式与被动方式作了深入分析。 一、FT?@2L作原理 FTP(File Transfer Protocol,文件传输协议)的会话 建立时包含了2个通道,一个叫控制通道,另一个叫数据 通道。控制通道是与FTPJ] ̄务器进行沟通的通道,连接 FTP和发送FTP指令都是通过控制通道来完成的。数据 通道是与FTPHE务器进行文件传输或列表通道。与其他 网络服务不同的是FTP使用2个端口,一个数据传输端口 和一个命令端口(也叫做控制端口)。通常来说,这2个 FTPHE务器的21端口到大于1 024的客户端端口(服务器 响应客户端的控制端MServer-- ̄Client);FTP服务器的 20端口到大于l 024的客户端端口(服务器端初始化数 据连接到客户端的数据端HServer---}Client);大于1024 客户端端口到FTP服务器的20端口(客户端发送ACKH ̄ 应到服务器的数据端VIServer+--Client)。基本连接过程 如图1所示 端口代码是21(命令端口)和20(数据传输端口)。 二 F'i P数握连接的王作方式 FTP ̄JE务器处理防火墙和其他网络连接问题时,最 常见的一个难题是明确主动FTP与被动FTP的区别,以 及如何完美地支持它们。FTP是仅基于TcP协议的网络 服务,而不支持UDP协议。在FTP协议会话中,控制连 接均由客户端发起,而数据连接有2种工作方式,下面 分别详解这2种方式。 (一)FTP主动方式(PORT) 1.主动方式FTP的工作原理 客户端从一个任意的非特权端口N(N>1 024)连接  ̄IJFTPJ]E务器的命令端口,l ̄P21端口;然后客户端开始 监听^r+1端13,并发送FTP命令“port N+I”到FTPJ] ̄务 器;接着服务器会从数据端口(20)连接到客户端指定 的数据端口(Ⅳ+1)。 针对FTPJ]E务器前面的防火墙来说,必须允许以下 图1主动方式FTP的基本连接过程 图l中各步行为具体过程描述为: 第1步,客户端的命令端口与FTPH ̄务器的命令端 口建立连接,并发送命令“PORT 1027”; 通信才能支持主动方式FTP:任何客户端端口到FTP服 务器的2l端口(客户端初始化的连接Server+--Client); 第2步,FTPJ]E务器给客户端的命令端口返回一个 “ACK”(应答代码); FINANcIAL coMPUTER 蓑 I 45 目 服 第3步,FTPH ̄.务器发起一个从数据端口(20)到客 务一 第4步,客户端给服务器端返回一个‘'ACK”。 2.主动方式FTP分析 户端先前指定的数据端口(1027)的连接; 一 主动方式FTP面临的问题实际上在客户端,FTP的 客户端并没有实际建立一个到服务器数据端口的连接, ~ 只是简单地告诉服务器自己监听的端口号,服务器再回 来连接客户端这个指定的端口。对于客户端操作系统的 防火墙来说,这是从外部系统建立到内部系统客户端 的连接,通常来讲这是会被阻塞的。 (二)被动FTP方式(PASV) 为了解决服务器发起到客户的连接问题,人们开发 了一种不同的FTP连接方式一一被动方式(PASV),当 客户端通知服务器处于被动模式时才启用。在被动方 图2被动方式FTP的基本连接过程 第3步,客户端初始化一个从数据端口到服务器端 指定的数据端口的数据连接; 第4步,服务器给客户端的数据端口返回一个 “ACK”响应。 2.被动方式FTP分析 式FTP中,命令连接和数据连接都由客户端发起,这样 就可以解决从服务器端到客户端的数据端口的人方向 连接被防火墙过滤掉的问题。 1.被动方式FTP的工作原理 被动方式FTP解决了客户端的许多问题,但同时给 服务器端带来了更多的问题。最大的问题是需要允许 从任意远程终端到服务器高位端口的连接。幸运的是, 许多FTP守护程序,允许管理员指定FTPH ̄务器使用的 端口范围。第二个问题是有的客户端支持被动模式,有 的不支持被动模式,必须考虑如何能支持这些客户端。 例如,Solaris提供的FTP命令行工具就不支持被动模 式,需要第三方的FTP客户端;大多数浏览器只在访问 ftp:HURL地址时才支持被动模式。 当开启一个FTP连接时,客户端打开2个任意的非 特权本地端口(N>1 024和^ 1)。第一个端口连接服务 器的2l端口,但与主动方式的FTP不同,客户端不会提 交PORT命令并允许服务器来回连它的数据端口,而是 提交PASv命令。这样做的结果是服务器会开启一个任 意的非特权端口(P>1 024),并发送“PORT P”命令给 客户端,然后客户端发起从本地端口^r+1到服务器的端 151P的连接,用来传送数据。 对于服务器端的防火墙来说,必须允许下面的通 信才能支持被动方式的FTP:从任何客户端端口到服 务器的21端口(客户端初始化的连接Server ̄---Client); 服务器的21端口到任何大于l 024的客户端端口(服务 器响应到客户端的控制端口的连接Server--- ̄Client); 三、主动方式与被动方式的比较分析 主动方式FTP对FTPJ] ̄务器的管理有利,但对客户 端的管理不利。因为FTPJ] ̄务器企图与客户端的高位随 机端口建立连接,而这个端口很有可能被客户端的防火 墙阻塞。被动方式FTP对FTP客户端的管理有利,但对 服务器端的管理不利。因为客户端要与服务器端建立2 从任何客户端端口到服务器的大于1 024端口(客户端 初始化数据连接到服务器指定的任意端口Server— Client);服务器的大于l 024端口到远程的大于l 024的 客户端端口(服务器发送ACK响应和数据到客户端的数 据端口Server—Client)。基本连接过程如图2所示。 个连接,其中一个连到高位随机端口,而这个端口很有 可能被服务器端的防火墙阻塞。 经过不断的探索研究,人们找到了一种折衷的办 法。既然FTP服务器的管理员需要有最多的客户端连 接,那么必须支持被动方式FTP,可以通过为FTPJ] ̄务 图2中各步行为具体过程描述为: 第1步,客户端的命令端口与服务器的命令端口建 立连接,并发送命令“PASV”; 第2步,服务器返回命令“PORT 2024”,告诉客户 端服务器端用哪个端口侦听数据连接; 器指定一个有限的端口范围来减小服务器高位端口的 暴露。这样,不在这个范围的任何端口会被服务器的防 火墙阻塞,虽然没有彻底消除所有针对服务器的危险 连接,但已经大大降低了风险程度。 46 l; oMPUTER oF HUANAN