[C#之Ftp]RFC959笔记01

文件传输协议(File Transfer Protocol, FTP)
1. 介绍
FTP 的目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用
户透明和可
靠高效地传送数据。虽然我们也可以手工使用它,但是它的主要作用是供程序使
用的。在阅读本文之前最好能够阅读 TCP 协议标准规范和 Telnet 协议标准规范。

2. 概览
在本节中我们将讨论一些表面上的问题,有些名词的定义请参阅 TCP 和 Telnet参考文献。我
们先介绍一下

(1)字节大小,在 FTP 中字节大小有两个:逻辑字节大小和用于传输的字节
大小。后者通常是 8 位,而前者可不一定是多少了。传输字节不必等于逻辑字节
大小,也不必对数据结构进行解释。

(2)控制连接是建立在 USER-PIT 和 SERVER-PI 之间用
于交换命令与应答的通信链路。

(3)数据连接是传输数据的全双工连接。传输数据可以发生在服务器DTP 和用户 DTP 之间

也可以发生在两个服务器 DTP 之间。

(4)DTP:数据传输过程(DTP)建立和管理数据连接,DTP 可以是主动的也可以是被动的。

(5)EOR 代表记录尾。
(6)NTV 代表网络虚拟终端,它的定义与在 Telnet 协议中的定义一致。

(7)NVFS 代表网络虚拟文件系统 。

( 8)FTP 可以传输非连续的文件,这些文件的一部分称为页。

(9)PI 代表协议解释器
( 10)服务器 DTP 代表一种传输过程,它通常处于“主动”状态,它和侦听端口建立数据
连接,它还可以为传输和存储设置参数,并根据 PI 的指令传输数据。当然,DTP也可以转入
“被动”状 态 。

(11)服务器 FTP 进程,它是和用户 FTP 进程一起工作的,它由PI和 DTP 组成
。至于用户 FTP 进程则是由 PI,DTP 和用户接口组成的。下图是 FTP 服务示意图 :
注意:数据连接是双向的,它不用整个时间都存在。上图中用户 PI 开始控制连接,控制连
接与 Telnet 协议很象。在开始阶段,标准 FTP 命令由用户 PI 产生并通过控制连
接传送到服务器进程。服务器 PI 向用户 PI 返回标准应答。FTP 命令指定数据连接参数和文件
系统操作。用户 DTP 在特定数据端口侦听,服务器开始数据连接并以指定的参数开始数据传
输。数据端口不必在开始 FTP 命令的机器上,但用户或用户 FTP 进程必须确定它在指定的数据
端口上侦听
。这个数据连接是全双工的。

在另外一种情况下,用户或许希望在两个主机间传送文件,不是两个本地主机。
用户在两台主机间建立控制连接,然后规划数据连接。用这种方式,控制信息由用户 PI
获得,但是数据在服务器 DTP 之间传送。

下面就是一个例子:协议要求数据传输在处理时打开控制连接。在完成 FTP 服务后由用户中止控制连
接,而服务器具体操作。如果在未接收命令时关闭了控制连接,服务器也会关闭数据传输。
FTP 和 Telnet 很有联系,FTP 使用 Telnet 协议进行控制连接,可有两种方法达到目的:用
户 PI 或服务
器 PI 可以在自己的过程中实现 Telnet 协议的功能;第二种方法是利用系统中现
有的 Telnet
模块。实现上,FTP 对 Telnet 协议的依赖也不多,即使重新实现,代码量也不
大。

原文地址:https://www.cnblogs.com/xcf007/p/2763781.html