Skip to main content

2.3 FTP模型 (THE FTP MODEL)

考虑到上述定义, 可以为FTP服务绘制以下模型 (如图1所示)。

                                    -------------
|/---------\|
|| User || --------
||Interface|<--->| User |
|\----^----/| --------
---------- | | |
|/------\| FTP Commands |/----V----\|
||Server|<---------------->| User ||
|| PI || FTP Replies || PI ||
|\--^---/| |\----^----/|
| | | | | |
-------- |/--V---\| Data |/----V----\| --------
| File |<--->|Server|<---------------->| User |<--->| File |
|System| || DTP || Connection || DTP || |System|
-------- |\------/| |\---------/| --------
---------- -------------

Server-FTP USER-FTP

注意: 1. 数据连接可以在任一方向使用。
2. 数据连接不需要始终存在。

图1 FTP使用模型

在图1描述的模型中, user-protocol解释器发起控制连接。控制连接遵循Telnet协议。在用户的启动下, user-PI生成标准FTP命令并通过控制连接传输到服务器进程。(用户可以直接从TAC终端例如建立到server-FTP的直接控制连接, 并独立生成标准FTP命令, 绕过user-FTP进程。) 标准回复从server-PI通过控制连接发送到user-PI以响应命令。

FTP命令指定数据连接的参数 (数据端口、传输模式、表示类型和结构) 以及文件系统操作的性质 (存储、检索、追加、删除等)。user-DTP或其指定者应在指定的数据端口上"侦听", 服务器根据指定的参数发起数据连接和数据传输。应注意, 数据端口不必在通过控制连接发起FTP命令的同一主机中, 但用户或user-FTP进程必须确保在指定的数据端口上"侦听"。还应注意, 数据连接可用于同时发送和接收。

在另一种情况下, 用户可能希望在两个主机之间传输文件, 两者都不是本地主机。用户建立到两个服务器的控制连接, 然后安排它们之间的数据连接。以这种方式, 控制信息传递给user-PI, 但数据在服务器数据传输进程之间传输。以下是此服务器-服务器交互的模型。

            Control     ------------   Control
---------->| User-FTP |<-----------
| | User-PI | |
| | "C" | |
V ------------ V
-------------- --------------
| Server-FTP | Data Connection | Server-FTP |
| "A" |<---------------------->| "B" |
-------------- Port (A) Port (B) --------------

图2

协议要求在数据传输进行时控制连接保持打开。当完成使用FTP服务时, 用户有责任请求关闭控制连接, 而服务器采取操作。如果控制连接在没有命令的情况下关闭, 服务器可能会中止数据传输。

FTP与Telnet的关系

FTP在控制连接上使用Telnet协议。这可以通过两种方式实现: 第一, user-PI或server-PI可以直接在其自己的过程中实现Telnet协议的规则; 或者第二, user-PI或server-PI可以使用系统中现有的Telnet模块。

易于实现、共享代码和模块化编程支持第二种方法。效率和独立性支持第一种方法。实际上, FTP依赖Telnet协议的很少部分, 因此第一种方法不一定涉及大量代码。