F T P是另一个常见的应用程序。它是用于文件传输的 I n t e r n e t标准。我们必须分清文件传送(file transfer)和文件存取 (file access)之间的区别,前者是 F T P提供的,后者是如 N F S(S u n的网络文件系统,第 2 9章)等应用系统提供的。由 F T P提供的文件传送是将一个完整的文件从一个系统复制到另一个系统中。要使用 F T P,就需要有登录服务器的注册帐号,或者通过允许匿名F T P的服务器来使用(本章我们将给出这样的一个例子)。 与Te l n e t类似,F T P最早的设计是用于两台不同的主机,这两个主机可能运行在不同的操作系统下、使用不同的文件结构、并可能使用不同字符集。但不同的是,Te l n e t获得异构性是强制两端都采用同一个标准:使用7比特A S C I I码的N V T。而F T P是采用另一种方法来处理不同系统间的差异。F T P支持有限数量的文件类型(A S C I I,二进制,等等)和文件结构(面向字节流或记录)。参考文献959 [Postel 和 Reynolds 1985] 是F T P的正式规范。该文献叙述了近年来文件传输的历史演变。
F T P是文件传输的 I n t e r n e t标准。与多数其他 T C P应用不同,它在客户进程和服务器进程之间使用两个 T C P连接—一个控制连接,它一直持续到客户进程与服务器进程之间的会话完成为止;另一个按需可以随时创建和撤消的数据连接。
F T P使用的关于数据连接的连接管理让我们更详细地了解 T C P连接管理需求。我们看到T C P在不发出P O RT命令的客户进程上对2 M S L等待状态的作用。
F T P使用NVT ASCII码做跨越控制连接的所有远程登录命令和应答。数据传输的默认方式通常也是NVT ASCII码。我们看到较新的U n i x客户进程会自动发送命令来查看服务器是否是 8b i t字节的U n i x主机,并且如果是,那么就使用二进制方式来传输所有文件,那将带来更高的效率。
我们也展示了匿名F T P的一个例子,它是在I n t e r n e t上分发软件的常用形式。