FTP、SFTP与FTPS
文件传送协议(FTP、SFTP与FTPS)是TCP/IP协议簇中的一个成员,是使用最为广泛的文件传送协议。FTP、SFTP与FTPS的主要区别在于安全性、传输方式和应用场景
1、FTP(File Transfer Protocol)
FTP(File Transfer Protocol)即文件传输协议,用于在Internet上的控制文件的双向传输。同时,它也是一个应用程序。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件
在FTP的使用当中,用户经常遇到两个概念:下载(Download)和上传(Upload)。下载就是从远程主机拷贝文件至自己的计算机上;上传就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件
FTP使用两个TCP连接,21号端口负责控制连接,20号端口负责数据连接,FTP的任务是从一台计算机将文件传送到另一台计算机,不受操作系统的限制
支持FTP协议的服务器就是FTP服务器。与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机
FTP协议的工作方式支持两种模式:Standard(PORT,主动方式)和Passive(PASV,被动方式)
-
Port(主动方式):FTP客户端发送PORT命令连接FTP服务器
FTP客户端首先和服务器的TCP 21端口建立连接,用来发送命令,客户端需要接收数据时,在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口接收数据。在传送数据时,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。FTP Server必须与客户端建立一个新的连接用来传送数据 -
PASV(被动方式):FTP客户端发送PASV命令连接FTP服务器
建立控制通道和Port模式类似,但建立连接后发送Pasv命令。服务器收到Pasv命令后,打开一个临时端口(大于1024小于65535),并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口传送数据
很多防火墙在设置的时候都是不允许接受外部发起连接的,所以很多位于防火墙后或内网的FTP服务器不支持PASV方式,因为客户端无法穿过防火墙打开FTP服务器的端口;而很多内网的客户端不能用PORT方式登陆FTP服务器,因为从服务器的TCP 20端口无法和内网的客户端建立一个新的连接,造成无法工作
FTP的传输有两种方式:ASCII和二进制
-
ASCII传输方式:
假设用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时,FTP通常会自动地调整文件的内容以便于把文件解释成另外一台计算机存储文本文件的格式但通常会有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或压缩文件。在拷贝任何非文本文件之前,用
binary
命令告诉FTP逐字拷贝 -
二进制传输方式:
在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目标机器上包含位序列的文件是没意义的。例如,
macintosh
以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行如果在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会损坏数据。ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果传输二进制文件,所有的位都是重要的
2、FTPS(File Transfer Protocol Secure)
FTPS(File Transfer Protocol Secure)是FTP的安全扩展,通过在传输层使用SSL/TLS进行加密,默认端口号为21
FTPS是在安全套接层使用标准的FTP协议和指令的一种增强型FTP协议,为FTP协议和数据通道增加了SSL安全功能。FTPS也称作“FTP-SSL”或“FTP-over-SSL”。SSL是一个在客户机和具有SSL功能的服务器之间的安全连接中对数据进行加密和解密的协议
3、SFTP(Secure File Transfer Protocol)
SFTP(Secure File Transfer Protocol)即安全文件传送协议,是基于SSH(Secure Shell)协议的文件传输协议,可以为文件传输提供一种安全的加密校验
SFTP与FTP有着几乎一样的语法和功能。SFTP为SSH的一部分,在SSH软件包中,已经包含了一个叫SFTP的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd
守护进程(端口号默认为22)来完成相应的连接操作。所以,从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序
SFTP同样是使用加密传输认证信息和数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低,如果我们对网络安全性要求很高时,可以使用SFTP代替FTP
4、FTP、SFTP与FTPS的区别
综上所述,现对FTP、SFTP与FTPS的主要区别总结如下:
- FTP:使用明文传输,不加密,因此存在安全风险。FTP允许用户通过客户端软件与服务器进行交互,实现文件的上传、下载和其他文件操作。FTP有两种传输模式:ASCII和二进制。ASCII模式适用于文本文件,而二进制模式适用于非文本文件,如可执行文件、压缩文件等
- FTPS:是FTP的安全扩展,通过在传输层使用SSL/TLS进行加密。FTPS提供了数据加密、认证和数据完整性校验,可以有效保护传输的数据安全
- SFTP:基于SSH协议,SFTP通过加密和认证来保证传输的安全性。它使用SSH的加密算法对数据进行加密,确保数据在传输过程中的安全性。尽管SFTP的语法和功能与FTP相似,但其传输效率较低,因为安全措施增加了处理时间