FTP协议FTP(FileTransferProtocol)在TCP/IP协议族中属于应用层协议,是文件传输的Internet标准。主要功能是向用户提供本地和远程主机之间的文件传输,尤其在进行版本升级、日志下载、文件传输和配置保存等业务操作时,广泛地使用FTP功能。FTP协议基于相应的文件系统实现。FTP采用C/S(Client/Server)结构,如图1所示。图1FTP采用的Client/Server结构在S9300系统中提供的FTP功能包括:FTPServer:运行于交换机上的FTP服务。提供远程客户端访问和操作的功能,用户可以通过FTP客户端程序登录到交换机上,访问交换机上的文件。FTPClient:FTP的客户端,提供本地交换机对远程服务器的文件进行操作的命令。用户在PC上通过终端程序或Telnet程序与交换机建立连接后,可以输入FTP命令建立与远程FTPServer的连接并访问远程主机上的文件,对远程主机上的文件进行操作。FTP除了完成文件传输基本功能外,同时还提供了交互存取、格式规范和验证控制等超出传输功能的配置功能。FTP实现主机间文件的传输,并提供常用的文件操作命令,供用户进行文件系统的简单管理。客户可以利用交换机外部的FTP客户端程序与交换机进行文件的上传、下载和目录访问等操作;还可以使用交换机内部的FTP客户端程序与其他交换机或其他设备的FTP服务器端的程序进行文件传输。IPv6支持情况:当前FTP的实现支持客户端访问IPv6主机地址,服务器端支持接收IPv6连接。FTP协议的基本概念在介绍FTP协议之前,先介绍文件传输中的几个基本概念:文件类型ASCII码文件类型:即文本文件以ASCII码格式在数据连接中传输。发送方将本地文本文件转换成ASCII码格式,接收方收到该文件后再将ASCII码格式还原成本地文本文件格式。EBCDIC文件类型要求文件传输的两端都是EBCDIC系统。二进制文件类型即传输的是一个连续的比特流。通常用于传输图像文件和程序文件。本地文件类型用于在具有不同文件系统的主机之间传输二进制文件。每一字节的比特流由发送方规定。说明:FTP支持ASCII码、二进制文件类型。二者的区别是:ASCII传输使用ASCII字符,把回车键和换行符分开;二进制不用转换或格式化就可传字符。FTP传输模式由客户端进行选择,系统默认ASCII方式。客户端可使用模式切换命令进行切换(ASCII和Binary)。文件结构字节流也称为文件结构。文件被认为是一个连续的字节流。记录结构该结构只用于文本文件(ASCII或EBCDIC)。页结构发送单位为页,每页发送时都带有页号,以便接收方可以随机存储页。说明:FTP支持字节流和记录结构。传输方式流方式文件以字节流的形式传输。对于文件结构,发送方在文件结尾提示关闭数据连接;对于记录结构,有专用的两字节序列码标识记录结束和文件结束。块方式文件以一系列块来传输,每块前面都带有一个或多个首部字节。压缩方式即压缩连续出现的相同字节。说明:S9300仅支持流方式。PORT命令用于打开端口的命令。格式为PORTa,b,c,d,e,f。其中a,b,c,d为点分十进制形式的IP地址;e,f表示端口号,为2个10进制数字,用以标识e×256+f运算出来的端口号。例如:ftpdebugDebuggingOn.ftpls---PORT10,164,9,96,5,28这里10.164.9.96就是IP地址,5,28通过公式计算:5*256+28=1308就是选定的端口号。FTP中的连接如图2显示了FTP文件传输的处理过程。图2FTP中的文件传输FTP采用2个TCP连接来传输文件。控制连接以客户端/服务器方式建立。服务器以被动方式打开用于FTP的公共端口21,等待客户端来连接;客户端则以主动方式打开公共端口21,发起连接的建立请求。控制连接始终等待客户端和服务器之间的通信,并且将相关命令从客户端传送给服务器,同时将服务器的应答传送给客户端。数据连接服务器的数据连接端使用端口20。服务器执行主动打开数据连接,通常也执行主动关闭数据连接,但是,当客户端向服务器发送流形式的文件时,则需要客户端关闭数据连接。FTP中传输方式是流方式,并且文件结尾以关闭数据连接为标志,所以对每一个文件传输或目录列表来说,都要建立一个全新的数据连接。因此,当一个文件在客户端与服务器之间传输时,一个数据连接就建立起来了。FTP协议当前系统FTP通过用户协议解析(User-PI:UserProtocolInterpretation)和服务器协议解析(Server-PI:ServerProtocolInterpretation)配合进行控制连接的管理,通过用户数据传输处理(User-DTP:UserDataTransportProcess)和服务器数据传输处理(Server-DTP:ServerDataTransportProcess)完成数据连接的文件传输。客户端FTP的用户接口(UI)给用户提供了一个交互式的命令行操作界面,接收并解释用户输入的命令行,给出帮助信息等。在接收到用户接口发出的命令后,触发用户端协议解析(User-PI)将命令转化成FTP标准的命令格式,然后对FTP用户端进行控制连接管理。用户输入的是登录命令,用户端协议解析(User-PI)负责创建与FTPServer的控制连接;用户输入的是目录操作命令,用户端协议解析(User-PI)完成与FTPServer之间控制数据的传送与接收;用户输入文件传输命令,用户端协议解析(User-PI)启动User-DTP以完成与FTP-Server之间文件数据的传输。用户数据传输处理(User-DTP)负责与FTPServer建立起数据连接,向FTPServer发送或接收数据,完成数据的传输。数据连接是临时建立的。它在FTPServer与FTPClient之间需要进行文件或目录列表等数据传输时建立,传输完成后或接收到中断请求时关闭。服务器端服务器协议解析(Server-PI)监听FTP标准端口(21)等待客户的连接,收到登录连接则触发处理客户端发来的控制命令,并返回应答。如果收到的是登录命令,则触发启动登录认证过程,认证通过后创建与FTPClient的控制连接。如果收到包含文件数据的传送,则触发启动并控制服务器数据传输处理(Server-DTP)和用户数据传输处理(User-DTP)创建数据连接来传输文件。服务器数据传输处理(Server-DTP)支持主动和被动两种数据连接请求。缺省时服务器数据传输处理(Server-DTP)处于主动状态。如果客户端先发送PORT命令,服务器数据传输处理(Server-DTP)先计算出客户端的数据端口,然后主动发起连接。如果客户端不发出PORT命令,服务器将向正被客户使用的同一端口号发起主动打开。如果设置了被动模式,则FTPServer在FTP数据端口20侦听和处理数据连接请求。服务器数据传输处理(Server-DTP)在传输数据时,支持用户的强行中断请求,停止数据传输并关闭数据连接。正常状态时,文件传输结束自动关闭数据连接。FTP连接建立过程建立FTP数据连接的过程如下:1.服务器以被动方式打开端口21启动监听,等待连接。2.客户端主动发起控制连接的建立请求,建立连接。3.客户端用于控制连接的临时端口,与服务器21号端口之间的控制连接建立完毕。4.客户端发起建立数据连接的命令。5.客户端为该数据连接选择一个临时端口号,并且使用PORT命令通过控制连接把端口号发送给服务器。6.服务器通过控制连接的接收端口号,向客户端发布一个主动的数据连接的打开。7.客户端用于数据连接的临时端口,与服务器的20号端口之间的数据连接建立完毕。图3FTP连接建立过程FTP连接建立过程如图3所示。假设客户端用于控制连接的临时端口号为2345,用户数据连接的临时端口号是2346。父主题:原理描述华为专有和保密信息版权所有©华为技术有限公司