FTPS==>FTP over ssl
SFTP==>ssh + ftp;
FTP
一、两种传输方式
ASCII传输方式
假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。
但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝。
二进制传输方式
在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。
如在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会损坏数据。(ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果传输二进制文件,所有的位都是重要的。)
二、两种工作模式
主动模式(PORT)
1.FTP 客户端首先和服务器的TCP 21端口建立连接,用来发送命令;
2.客户端需要接收数据的时候在这个通道上给服务器发送PORT命令。PORT命令包含了客户端用来接收数据的端口号;
3.在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。(FTP server必须和客户端建立一个新的连接用来传送数据。)
被动模式(PASV)
1.FTP 客户端首先和服务器的TCP 21端口建立连接,用来发送命令(建立控制通道和Standard模式类似);
2.建立连接后发送Pasv命令。
3.服务器收到Pasv命令后,打开一个临时端口(端口号大于1023小于65535)并且通知客户端在这个端口上传送数据的请求;
4.客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口传送数据。
简而言之,主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口。
被动模式的FTP通常用在处于防火墙之后的FTP客户端访问外界FTP服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防火墙之后的主机发起的连接请求通过。因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。(相反,客户端访问处于防火墙之后的FTP服务器则要用到主动模式)
FTPS与SFTP的对比
1.都是为ftp连接加密,协议非常相似。
2.FTPS是借助ssl协议加密,SFTP是借助ssh加密。ssl是为http/smtp等加密设计的,ssh是为telnet/ftp等加密、建立传输通道而设计的。
3.其实ssh建立传输通道就是为了加密和传输,而且这个通道是可以用来远程登录。
4.如果只说它们的功能,通俗的讲,ssh就像铺管子,ssl就像打包裹,铺管子和打包裹都会使数据安全,都是一个制作密钥的过程,而因为ssh是一个管子所以它很适合ftp的安全传输。
简单的讲:sftp协议是ssh中的一条独立的协议,利用sftp服务器就可以传输数据。
而ftps是ftp-over-ssl的意思,即ftp借助ssl协议加密传输,不但要用ftp服务器还要用ssl协议加密。(如果是ftp-over-ssh,就是完全不同于sftp的传输方式了,就是利用ftp服务器和ssh协议加密传输数据。 )