被动模式:又称Passive模式,建立控制通道时与主动模式一样,但客户端口发出的不是PORT命令而是PASV,服务器收到这个命令后随机打开一个大于1024的端口并通知客户端在这个端口上收发数据。
这两种模式的主要区别是由谁确定服务端数据端口。
9.网络虚拟终端(NVT):网络虚拟终端(NVT)是一种虚拟的终端设备,它被客户和服务器所采用,用来建立数据表示和解释的一致性。 包括两个部分:输出设备:输出远程数据,一般为显示器输入设备:本地数据输入在NVT上传输的数据格式,在网络虚拟终端NVT上传输的数据采用8bit字节数据,其中最高位为0的字节:一般数据;最高位为1的字节:用于NVT命令 。
10.NVT ASCII:用来替代ASCII码在客户和服务器间传输的编码形式。
11.FTP执行(FTP实现):FTP是文件传输标准,要具体实现文件传输功能需要用各种编程语言编写服务端和客户端程序。
注:数据连接是双向的,且无需总是存在。
2.客户端控制两台主机,在两台主机间传输数据:
注:完成服务后,用户的责任是请求关闭控制连接,而实际的关闭动作由两服务器进行。
三.数据传输功能
文件通过数据连接传输,控制连接用来交换指令和回应,指令由user发出,服务端执行并回应。
1.数据的表示和存储
通常不同主机的数据表示不同,所以有时需要对数据进行转换。另外因为主机字长不同,32位机传送数据给36们机时,也需要转换。
1.1 数据表示类型
ASCII类型:这是所有FTP执行都必须承认的默认类型。它主要用于传输文本文件,除非两台主机间用EBCDIC类型更方便。
EBCDIC类型:这种类型在使用EBCDIC作为内部字符的主机间能够提供高效地传输。
IMAGE类型,其中IMAGE格式用于有效地传送和存储文件与二进制数据,推荐所有的FTP在执行时支持此类型。
数据类型由TYPE指令指定,默认是IMAGE。
1.2 格式控制:一个字符文件传输到目标主机是为了三种目的,打印、存储和以后信息的检索、处理。如果是为打印而传送,那就要知道纵向格式如何表示;第二种目的需要能够在主机存储,并在检索时格式正确;第三种要求这个文件能够移动到其他主机,且在以后的处理中不会出错。这三种目的需要三种格式来区分
非打印:这种格式用来存储和处理文件,必须被所有的FTP实现所支持。
TELNET格式控制:没看懂。
走纸控制:应该是和打印有关的,具体没看懂。
1.3 文件的结构
文件结构:没有内部结构,文件由连续的数据字节组成。
记录结构:文件由连续有序的记录组成。
页结构:文件由独立的索引页组成,页与页之间无序。
文件的结构由STRU指令指定,默认是文件结构。
2. 传输模式,有三种可选择的传输模式:一是格式化数据并允许重新开始程序;二是为有效地传输而压缩数据;三是对数据进行少量的处理或不进行处理。所有的数据传输必须以一个文件结束符EOF结束,它可以显式地给出,也可以通过关闭连接隐式地给出。FTP定义了以下传输模式:
流模式:数据以字节流方式传送,使用的数据表示类型没有限制,允许记录结构。在记录结构中以EOR和EOF表示双字节控制码。控制码第一个字节全是0,第二个字节是1时表示EOR,2表示EOF,3表示同时传输了EOR和EOF。在文件结构中,关闭连接表示EOF。
块模式:文件以一系列数据块的方式传送,有一个或多个头字节,头字节包括一个计数域的描述符代码。计数域指出数据块的总长度,以此标记下一个块的开始。描述符定义了文件的最后块(EOF),记录的最后块(EOR),重新开始标记和可疑数据。
压缩模式:ftp可以传输的数据有三种,常规数据,用字节串方式传送;压缩数据;控制信息,用双字节的escape序列发送。
3. 建立数据连接
建立连接前需要指定适当的端口和选择传输参数,客户端和服务端有缺省的数据端口。用户进程缺省数据端口与控制连接端口相同,服务进程缺省数据端口与服务端控制连接端口相邻。
4. 关闭数据连接
数据连接的初始化和关闭都是服务端负责的;在以下情况之一,服务器会关闭数据连接:
user-DTP发出关闭连接指令ABORT;
数据传输已传输完全毕;
用户用一个指令改变了端口;
控制连接关闭;
发生了无可挽回的错误。
四.文档定义的FTP指令
指令的格式:指令 空格 参数 结束符,有些指令可能有多个参数
4.1 访问控制指令
USER
PASS
ACCT
CWD
CDUP
SMNT
QUIT
REIN
4.2 传输参数设置指令
PORT
PASV
TYPE
STRU
MODE
4.3 FTP服务指令
RETR
STOU
APPE
ALLO
REST
RNFR
RNTO
ABOR
DELE
RMD
MKD
PWD
LIST
NLIST
SYST
NOOP