Nofeel FTP 服务器 3.0

网站导航 >> FTP - 参考


FTP 的目标
  File Transfer Protocol, for short 文件传输协议,简称 FTP,是一个国际标准协议,用于在因特网或局域网(LAN) 上的计算机之间传送文件。FTP是建立在TCP之上,所以是平台无关的,比如 Windows计算机可以从Unix计算机上下载文件,或者苹果计算机也可以将文件 上传到Windows计算机上,等等。

如果你希望将自己计算机上的文件分享给家人朋友或其他人,你应该运行一个 FTP服务器程序,这样其他人就可以运行FTP客户程序来从你的计算机上下载文件 或上传文件到你的计算机上。

FTP 细节
  要了解FTP全面的信息,请参考官方标准规范 RFC 959

像其他的TCP协议,FTP是一个客户端与服务器之间的对话规则。在了解 更多的内容之前,你应该先了解TCP/IP协议的基本知识,像IP地址,端口, 连接,请求,响应等等。

在解释FTP协议的若干概念前,我们先看一个典型的FTP会话过程:

C->S: 表示客户端发送命令给服务器。
C<-S: 表示服务器返回响应给客户端。

C<-S: 220 server ready.
C->S: USER anonymous
C<-S: 331 please send your e-mail as password.
C->S: PASS support@nftpserver.com
C<-S: 230 user anonymous logged in.
C->S: PWD
C<-S: 257 "/" is current directory.
C->S: TYPE A
C<-S: 200 Type set to A.
C->S: PASV
C<-S: 227 Entering Passive Mode (192,168,0,1,160,41).
C->S: LIST
C<-S: 150 Opening data connection for "/".
C<-S: 226 Transfer complete.
C->S: REST 0
C<-S: 350 Restarting at 0.
C->S: TYPE I
C<-S: 200 Type set to I.
C->S: PASV
C<-S: 227 Entering Passive Mode (192,168,0,1,160,42).
C->S: RETR /20030501.log
C<-S: 150 Opening data connection for "/20030501.log"
C<-S: 226 Transfer complete.
C->S: QUIT
C<-S: 221 bye-bye.

在会话的开始,服务器发送了一个欢迎消息给客户端,然后等待客户端发送命令, 处理完后,返回响应给客户端。最后,客户端发送了一个 "QUIT" 命令,表示结束, 服务器返回响应后,断开连接。这个会话很短,但它展现了FTP中许多重要的特性。

1 命令. 客户端的每个命令是一个文本字符串,以一个命令名开头, 如果有参数的话,命令后面跟一个空格字符<space>, 加参数字符串。每个命令都以回车换行<CRLF>结束。

2 响应. 服务器每个响应业是一个文本字符串,以三位数字开头,跟一个空格字符 <space>,后面跟可以阅读的描述字符串,以回车换行 <CRLF>结束。 三位数字是程序可以理解处理的命令结果, 不同数字代表不同的结果(成功或失败),FTP客户端程序能够识别它。如果后面的描述文本是多行的, 则除最后一行外每一行都以三位数字开头,跟减号字符'-', 再跟描述文本。例如:
C<-S: 220- Hello, user anonymous,
C<-S: 220- welcome to this FTP Server!
C<-S: 220 server ready.

3 控制连接和数据连接. 客户端和服务器之间的TCP连接 仅仅 用于 发送/接收 命令/响应,我们称之为控制连接。如果它们想要传送一个文件内容,或者 传送目录内容,它们之间必须建立另外一个临时的TCP连接,传送数据,然后断开,我们 称之为数据连接。FTP与其他流行的TCP应用协议(如HTTP,TELNET,SMTP,等等)之间最重要 的一个差别就是一个FTP会话同一时刻可以有两个TCP连接:控制连接和数据连接。

4 主动模式与被动模式. 为了传送一个文件,客户端与服务器之间必须建立一个数据连接。 默认情况下是服务器去连接客户端的20端口,但客户端可以通过命令 'PORT''PASV' 来改变 该默认情况。命令'PORT'告诉服务器它应该连接哪个IP地址。 在下面的例子中,服务器应该连接172.18.0.2:2560 来建立数据连接:
C->S: PORT 172,18,0,2,10,0
C<-S: 200 PORT command success.
默认情况以及命令 'PORT' 都使服务器连接客户端,我们称之为主动模式。
有些情况下主动模式并不够,比如客户端在局域网内,只有私有IP地址,而服务器在因特网上, 这种情况下(实际上这是多数情况),服务器无法去连接客户端。 命令 'PASV'可以解决该问题。命令 'PASV' 请求服务器进入被动模式。服务器的响应应该包含客户端要连接的地址。在下面的例子中, 客户端应该去连接 220.113.18.126:2560 来建立数据连接:
C->S: PASV 172,18,0,2,10,0
C<-S: 227 Entering Passive Mode (220,113,18,126,10,0).

现在你理解了FTP协议中最重要的四个概念,你可以更好的使用FTP服务器软件!

版权所有 © 2002 - 2005 NofeelSoft 软件。 保留所有权利。