1、 FTP协议:采用2个TCP连接来传输一个文件。
(1) 控制连接:
控制连接通常以客户服务器方式建立。控制连接始终等待客户与服务器的通信,该连接将命令从客户端传给服务器,并传回服务器的应答。
(2) 数据连接:
该连接用于数据传输。
2、 数据表示:
(1) 文件类型:
◆ ASCII文件:默认以NVT ASCII形式传输。这要求发送方将本地文本文件转换为NVT ASCII码,而接收方将NVT ASCII码再还原为本地文本文件。用NVT ASVCII码传输的每一行都以一个回车和一个换行结束。
◆ EBCDIC文件:要求两端都是EBCDIC系统。
◆ 二进制文件类型:数据发送一个连续的比特流,通常用于传输二进制文件。
◆ 本地文件类型:再具有不同字节大小的主机之间传输二进制文件。
(2) 格式控制,只对ASCII和EBCDIC文件类型有效。
◆ 非打印(默认):文件中不含垂直格式信息。
◆ 远程登录格式控制:文件含有向打印机解释的远程登录垂直格式控制。
◆ Fortran回车控制:每行首字符是Fortran格式控制符。
(3) 结构:
◆ 文件结构(默认):文件被认为是一个连续的字节流,不存在内部的文件结构。
◆ 记录结构:该结构只用于文本文件。
◆ 页结构:每页都带有页号发送,以便收方能随机存储各页。
(4) 传输方式
◆ 流方式(默认):文件以字节流传输,对于文件结构,发送方在文件尾提示关闭数据连接。对于记录结构,有专用的两字节序列码标记记录结束和文件结束。
◆ 块方式:文件以一系列块来传输,每块前面都带有一个或多个首部字节。
◆ 压缩方式:
3、 FTP命令:
命令和应答在客户和服务器的控制连接上以NVT ASCII形式传送,这要求在每行结尾都要返回CR/LF。
4、 FTP应答:
应答都是ASCII码形式的3位数字,并跟有报文选项。一些典型的应答:
◆ 125:数据连接已打开,传输开始
◆ 200:就绪
◆ 214:帮助报文
◆ 331:用户名就绪,要求输入口令
◆ 425:不能打开数据连接
◆ 452:错写文件
◆ 500:未知语法错误
◆ 501:无效参数
◆ 502:未实现的MODE类型
5、 连接管理:
数据连接有3大用途:
(1) 从客户向服务器发送一个文件
(2) 从服务器向客户发送一个文件
(3) 从服务器向客户发送文件或目录列表。
每一个数据连接对传输一个文件或目录序列都要建立一个新的连接。
(1) 客户发出命令要求建立数据连接
(2) 客户在客户主机上未数据连接选择一个临时端口号
(3) 客户使用PORT命令从控制连接上把端口号发给服务器。
(4) 服务器在控制连接上接收端口号,并向客户端主机上的端口发出主动打开,服务器的数据连接使用端口20。
(1) 控制连接:
控制连接通常以客户服务器方式建立。控制连接始终等待客户与服务器的通信,该连接将命令从客户端传给服务器,并传回服务器的应答。
(2) 数据连接:
该连接用于数据传输。
2、 数据表示:
(1) 文件类型:
◆ ASCII文件:默认以NVT ASCII形式传输。这要求发送方将本地文本文件转换为NVT ASCII码,而接收方将NVT ASCII码再还原为本地文本文件。用NVT ASVCII码传输的每一行都以一个回车和一个换行结束。
◆ EBCDIC文件:要求两端都是EBCDIC系统。
◆ 二进制文件类型:数据发送一个连续的比特流,通常用于传输二进制文件。
◆ 本地文件类型:再具有不同字节大小的主机之间传输二进制文件。
(2) 格式控制,只对ASCII和EBCDIC文件类型有效。
◆ 非打印(默认):文件中不含垂直格式信息。
◆ 远程登录格式控制:文件含有向打印机解释的远程登录垂直格式控制。
◆ Fortran回车控制:每行首字符是Fortran格式控制符。
(3) 结构:
◆ 文件结构(默认):文件被认为是一个连续的字节流,不存在内部的文件结构。
◆ 记录结构:该结构只用于文本文件。
◆ 页结构:每页都带有页号发送,以便收方能随机存储各页。
(4) 传输方式
◆ 流方式(默认):文件以字节流传输,对于文件结构,发送方在文件尾提示关闭数据连接。对于记录结构,有专用的两字节序列码标记记录结束和文件结束。
◆ 块方式:文件以一系列块来传输,每块前面都带有一个或多个首部字节。
◆ 压缩方式:
3、 FTP命令:
命令和应答在客户和服务器的控制连接上以NVT ASCII形式传送,这要求在每行结尾都要返回CR/LF。
4、 FTP应答:
应答都是ASCII码形式的3位数字,并跟有报文选项。一些典型的应答:
◆ 125:数据连接已打开,传输开始
◆ 200:就绪
◆ 214:帮助报文
◆ 331:用户名就绪,要求输入口令
◆ 425:不能打开数据连接
◆ 452:错写文件
◆ 500:未知语法错误
◆ 501:无效参数
◆ 502:未实现的MODE类型
5、 连接管理:
数据连接有3大用途:
(1) 从客户向服务器发送一个文件
(2) 从服务器向客户发送一个文件
(3) 从服务器向客户发送文件或目录列表。
每一个数据连接对传输一个文件或目录序列都要建立一个新的连接。
(1) 客户发出命令要求建立数据连接
(2) 客户在客户主机上未数据连接选择一个临时端口号
(3) 客户使用PORT命令从控制连接上把端口号发给服务器。
(4) 服务器在控制连接上接收端口号,并向客户端主机上的端口发出主动打开,服务器的数据连接使用端口20。