目前在网络上,如果你想把文件和其他人分享。最方便的办法就是讲文件放在FTP服务器上,然后其他人通过FTP客户端程序来下载所需要的文件。
1. FTP—即文件传输协议
FTP(File Transfer Protocol)用于Internet上控制文件的双向传输。
FTP只通过TCP连接,没有用于FTP的UDP组件,FTP不同于其他服务的是它使用了两个端口, 一个数据端口和一个命令端口(或称为控制端口)。通常21端口是命令端口,20端口是数据端口。当混入主动/被动模式的概念时,数据端口就有可能不是20了。
1.1 主动模式FTP
主动模式的步骤
- 客户端命令端口(1026)与FTP服务器命令端口(21)立连接,并发送命令:PORT 1027。
- FTP服务器命令端口(21)给客户端的命令端口(1026)返回一个ACK。
- FTP服务器在数据端口(20)发起到客户端指定的数据端口(1027)的连接。
- 客户端(1027)端口给服务器数据端口(20)返回一个ACK。
主动模式的缺陷
主动方式FTP的主要问题实际上在于客户端,FTP的客户端并没有实际建立一个到服务器端口的连接,他只是简单告诉服务器自己监听的端口号(1027),服务端在回来连接客户端这个指定的接口。对于客户端的防火墙来说,这是从外部系统建立到内部客户端的连接,这是通常阻塞的。
1.2 被动模式FTP
为了解决服务器发起到客户端的连接的问题,人们开发了一种不同的FTP连接方式,这就是所谓的被动方式,或者叫做PSAV。当客户端通知服务器它处于被动模式时才启用。
被动模式的步骤
- 客户端的命令端口(1026)和服务器的命令端口(21)建立连接,并发送命令PSAV。
- 服务器返回命令:PORT 2024,告诉客户端:服务器将在这个端口进行数据监听。
- 客户端初始化一个从自己数据端口到服务器指定端口的数据连接。
- 服务器数据端口返回一个ACK。
被动模式的缺陷
被动莫斯解决了客户端的问题,却是给服务器端带来了更多的问题。最大的问题就是需要允许从任意远程终端到服务器高位端口的连接。幸运的是,许多括流行的WU-FTPD允许管理员指定FTP服务器使用的端口范围。
有的客户端支持被动模式,有的不支持被动模式,必须考虑如何能支持这些客户端,以及为他们提供解决办法。例如,Solaris提供的FTP命令行工具就不支持被动模式,需要第三方的FTP客户端,比如ncftp。
随着WWW的流行,许多人习惯web浏览器作为FTP客户端,大多数浏览器只在访问ftp://这样的URL时才支持被动模式。这到底是好还是坏取决于服务器和防火墙的配置。