FTP(File TransferProtocol,文件传输协议)用于在远端服务器和本地主机之间传输文件,是IP网络上传输文件的通用协议。在万维网(WWW,WorldWideWeb)出现以前,用户使用命令行方式传输文件,最通用的应用程序就是FTP。虽然目前大多数用户在通常情况下选择使用Email和Web传输文件,但是FTP仍然有着比较广泛的应用。
FTP协议在TCP/IP协议族中属于应用层协议,用于在远端服务器和本地客户端之间传输文件,使用TCP端口20和21进行传输。端口20用于传输数据,端口21用于传输控制消息。FTP协议基本操作在RFC959中进行了描述。
FTP有两种文件传输模式:
二进制模式,用于传输程序文件(比如后缀名为.app、.bin和.btm的文件);
ASCII码模式,用于传输文本格式的文件(比如后缀名为.txt、.bat和.cfg的文件)。
FTP有两种工作方式:主动方式(PORT)和被动方式(PASV)。相对于FTP服务器而言。
使用主动方式时,FTP客户端使用一个随机端口N(一般大于1024)向FTP服务器的端口21发送连接请求,FTP服务器接受请求,建立一条命令链路来传输控制消息。同时FTP客户端开始监听另一随机端口P(一般大于1024),并使用PORT命令通知FTP服务器。当需要传输数据时,FTP服务器从端口20向FTP客户端的端口P发送连接请求,建立一条数据链路来传输数据。
使用被动方式时,FTP客户端使用一个随机端口N(一般大于1024)向FTP服务器的端口21发送连接请求,FTP服务器接受请求,建立一条命令链路来传输控制消息。同时FTP客户端开始监听另一随机端口P(一般大于1024),并使用PASV命令通知FTP服务器,FTP服务器接到PASV命令后,开启一个随机端口Q(一般大于1024),并使用PORT命令通知FTP客户端。当需要传输数据时,FTP客户端从端口P向FTP服务器Q端口发送连接请求,建立一条数据链路来传输数据。
主动方式和被动方式建立命令链路的方法是相同的,但建立数据链路的方法完全不同,因此两种方式在实际使用中也各有利弊:
使用主动方式传输数据时,FTP服务器需要主动连接FTP客户端的端口,这种请求容易被FTP客户端的防火墙阻塞。
使用被动方式传输数据时,FTP客户端需要使用一个随机端口连接到FTP服务器的一个随机端口,这解决了主动方式中数据传输请求被FTP客户端防火墙阻塞的问题,但会暴露FTP服务器的一个端口,从而带来安全隐患,同时这种请求容易被FTP服务器的防火墙阻塞。
不同FTP客户端软件对主动方式和被动方式的支持情况可能不同,请在使用时以软件的实际情况为准。
设备在支持FTP协议上有两种方式:
设备作为FTP客户端:如下图所示,设备(Device)作为FTP客户端,PC作为FTP服务器。在Device上执行ftp命令,与PC建立FTP连接,完成文件的上传/下载操作。
设备作为FTP服务器:如下图所示,设备(Device)作为FTP服务器,PC作为FTP客户端。在PC上运行FTP客户端程序,与Device建立FTP连接,完成文件的上传/下载操作。
图 1FTP配置示意图
TFTP(Trivial File TransferProtocol,简单文件传输协议)也是用于在远端服务器和本地主机之间传输文件的,相对于FTP,TFTP没有复杂的交互存取接口和认证控制,适用于客户端和服务器之间不需要复杂交互的环境。TFTP协议的运行基于UDP协议,使用UDP端口69进行数据传输。TFTP协议基本操作在RFC1986中进行了描述。
TFTP传输文件有两种模式:
二进制模式,用于传输程序文件(比如后缀名为.app、.bin和.btm的文件)。
ASCII码模式,用于传输文本格式的文件(比如后缀名为.txt、.bat和.cfg的文件)。
FTP有两种工作方式:主动方式(PORT)和被动方式(PASV)。
使用主动方式时,FTP客户端使用一个随机端口N(一般大于1024)向FTP服务器的端口21发送连接请求,FTP服务器接受请求,建立一条命令链路来传输控制消息。同时FTP客户端开始监听另一随机端口P(一般大于1024),并使用PORT命令通知FTP服务器。当需要传输数据时,FTP服务器从端口20向FTP客户端的端口P发送连接请求,建立一条数据链路来传输数据。
使用被动方式时,FTP客户端使用一个随机端口N(一般大于1024)向FTP服务器的端口21发送连接请求,FTP服务器接受请求,建立一条命令链路来传输控制消息。同时FTP客户端开始监听另一随机端口P(一般大于1024),并使用PASV命令通知FTP服务器,FTP服务器接到PASV命令后,开启一个随机端口Q(一般大于1024),并使用PORT命令通知FTP客户端。当需要传输数据时,FTP客户端从端口P向FTP服务器Q端口发送连接请求,建立一条数据链路来传输数据。
主动方式和被动方式建立命令链路的方法是相同的,但建立数据链路的方法完全不同,因此两种方式在实际使用中也各有利弊:
使用主动方式传输数据时,FTP服务器需要主动连接FTP客户端的端口,这种请求容易被FTP客户端的防火墙阻塞。
使用被动方式传输数据时,FTP客户端需要使用一个随机端口连接到FTP服务器的一个随机端口,这解决了主动方式中数据传输请求被FTP客户端防火墙阻塞的问题,但会暴露FTP服务器的一个端口,从而带来安全隐患,同时这种请求容易被FTP服务器的防火墙阻塞。
不同FTP客户端软件对主动方式和被动方式的支持情况可能不同,请在使用时以软件的实际情况为准。