FTP、FTPS 与 SFTP 简介

FTP

FTP 即 文件传输协议(英语:File Transfer Protocol 的缩写)是一个用于计算机网络上在客户端和服务器之间进行文件传输的应用层协议。完整的 FTP 是由 FTP 服务器 和 FTP 客户端组成的,客户端可以将本地的文件通过 FTP 协议上传到服务器,也可以将服务器的文件下载到本地。它是当今使用的最古老的文件传输协议之一,是一种非常便捷的移动文件的方式。

FTP 的工作原理

FTP 连接需要 FTP 服务器和客户端两方在网络上建立通信。建立 FTP 连接时会有两个不同的通信通道。一个被称为命令通道,它的作用是发出和响应指令。另一个为数据通道,用于客户端和服务器端进行数据交互。

使用 FTP 传输文件时,用户需要通过向 FTP 服务器提供凭据来获得文件传输许可。当然某些公共 FTP 服务器可能不需要凭据即可访问其文件,但是无法保证数据传输的安全性,任何未加密公共网络上的数据发送都是非常危险的,所以为了保护传输数据的安全,由 FTP 衍生而出的就是下面的两种协议:FTPS 与 SFTP。

FTPS

接下来二狗子查询了一下,发现 FPTS 有 FTPS 隐式 SSL 和 FTPS 显示 SSL 两种模式,两者都是用 SSL 加密。那么两者有什么区别呢?

FTPS 隐式 SSL:该模式通常在端口 990 上运行。在这个模式下全部数据的交换都需要在客户端和服务器之间建立 SSL 会话,并且服务器会拒绝任何不使用 SSL 进行的连接尝试。

FTPS 显式 SSL:显示 SSL 下服务器可以同时支持 FTP 和 FTPS 会话。开始会话前客户端需要先建立与 FTP 服务器的未加密连接,并在发送用户凭证前先发送 AUTH TLS 或 AUTH SSL 命令来请求服务器将命令通道切换到 SSL 加密通道,成功建立通道后再将用户凭证发送到 FTP 服务器,从而保证在会话期间的任何命令都可以通过 SSL 通道自动加密。

给大家简单快速的总结一下。当启用隐式模式时,FTP 的默认端口就被改为 TCP/990,服务器自动建立安全连接,并且要求客户端也必须支持安全连接模式也就是使用 SSL 进行连接。当启用显式模式时,与 FTP 连接方式和默认端口一样,但是需要以命令 AUTH SSL/TLS 类型的命令进行激活安全连接后才能正常传输数据。

SFTP

最后大家来一起看看 SFTP,SFTP 是 Secure File Transfer Protocol 的缩写,也叫作安全文件传送协议。

如果说 FTPS 是在 FTP 协议上增加了一层 SSL ,那么 SFTP 就是是基于网络协议SSH(安全外壳)的协议与前面所说的 FTP 完全不同。SFTP 不使用单独的命令通道和数据通道,而是数据和命令都会通过单个连接以特殊格式的数据包进行传输。

SFTP 提供了两种验证连接的方法。

与 FTP 一样,连接时只需要验证用户 ID 和密码就可以了。但是,与FTP不同的是,这些凭据是加密的,这是 SFTP 最主要的安全优势。

除密码外,还可以通过 SSH 密钥来验证并通过 SFTP 协议连接。

了解了这几个协议之后,二狗子使用 FTP 客户端工具就更加顺手了,他可以根据自己的需求更改协议以及加密方式,而不用为不懂某个设置而烦恼。

但是,新的疑问又出现了,二狗子看到这里的传输设置中的传输模式,有主动和被动之分,这又是什么意思呢。不懂就问的他又打开了 Google…

FTP 软件的主动模式和被动模式的区别

主动模式

一般 FTP 的默认模式就是主动模式,也称为 port 模式。

它是通过两个步骤来进行工作的:

首先客户端上的随机端口与服务器上的 FTP 端口 21 建立命令通道,客户端发送 PORT 命令,指定服务器与客户端其中一个端口连接,并建立数据通道。

然后服务器从端口 20 连接到为数据通道指定的客户端端口。建立连接后,即可通过这些客户端和服务器端口进行文件传输。

被动模式

在传输方式栏,你还可以手动调整为被动传输模式,在该模式下用户端进行文件传输时,会先通过随机端口 A 连接到服务器上的端口 21,并发出 PASV 命令建立命令通道,告诉服务端这次是被动模式连接。之后服务器会打开一个随机端口用于数据传输,而客户端通过与发出命令的端口不同的随机端口 B 建立数据通道,从而进行文件传输。

被动模式与主动模式不同的地方就是客户端启动数据连接。在主动模式下,客户端在命令通道上建立连接后,服务器将启动与客户端的数据连接。而在被动模式下,建立命令通道后,由客户端启动与服务器的数据连接。

因为这个区别,可以得出两者的优势和缺陷。比如主动模式有利于管理 FTP 服务端,因为只需要打开 21 端口的“准入”、20 端口的“准出” 即可,但是由于服务器连接到客户端的端口随机,所以客户端有可能会触发防火墙,甚至直接被防火墙拦截掉。反之被动模式则有利于管理客户端。

没想到一个看似简单的存储工具居然还有着这么多的分类和区别,不同的模式不同的方式都可以对应不同的需求,看来以后在使用工具的时候还是可以多少了解一点相关知识,能让工具用起来更顺手更舒心~

详解 FTP、FTPS 与 SFTP 的原理相关推荐

  1. cpu多核 node 单线程_详解node单线程实现高并发原理与node异步I/O

    一.node单线程实现高并发原理 众所周知nodejs是单线程且支持高并发的脚本语言.可为什么单线程的nodejs可以支持高并发呢?很多人都不明白其原理,下面我来谈谈我的理解: 1. node的优点: ...

  2. 【视频】详解HDFS的HA高可用原理

    详解HDFS的HA高可用原理

  3. 详解FTP服务完成Linux和WIN10之间的信息传输(实验详解)

    详解FTP服务完成Linux和WIN10之间的信息传输(实验详解) 一.FTP简介 1. FTP服务--用来传输文件的协议 2.端口 3.数据连接模式 二.相关配置 1.安装FTP服务 2.设置匿名用 ...

  4. Python中常见的__init__.py是什么意思?详解Python import的方式和原理

    Python中常见的__init__.py是什么意思?详解Python import的方式和原理 1 什么是模块化编程? 2 __init__.py文件的作用 3 Python如何import第三方库 ...

  5. 详解数据库的锁机制及原理

    详解数据库的锁机制及原理 1.数据库锁的分类 2.行锁 共享锁(读锁S锁) 排他锁(写锁X锁) 更新锁 3.意向锁(IX/IS锁) 4.锁机制解释数据库隔离级别 5.元数据锁(MDL锁) 6.间隙锁 ...

  6. 专家详解甲型H1N1流感疫苗生产原理过程

    为什么80%的码农都做不了架构师?>>>    http://www.hinews.cn/news/system/2009/12/03/010624808.shtml 专家详解甲型H ...

  7. ftp改为sftp_科普!一文详解 FTP、FTPS 与 SFTP 的原理

    FTP.FTPS 与 SFTP 简介 FTP FTP 即 文件传输协议(英语:File Transfer Protocol 的缩写)是一个用于计算机网络上在客户端和服务器之间进行文件传输的应用层协议. ...

  8. 详解“FTP文件传输服务”安装配置实例

    "FTP文件传输服务"安装配置实例 家住海边喜欢浪:zhang789.blog.51cto.com 目录 简介 ftp工作原理 常见的FTP服务 Vsftpd服务器的安装 Vsft ...

  9. Java程序员从笨鸟到菜鸟之(一百)sql注入攻击详解(一)sql注入原理详解

    前段时间,在很多博客和微博中暴漏出了12306铁道部网站的一些漏洞,作为这么大的一个项目,要说有漏洞也不是没可能,但其漏洞确是一些菜鸟级程序员才会犯的错误.其实sql注入漏洞就是一个.作为一个菜鸟小程 ...

最新文章

  1. CSP 201912-2 回收站选址 python实现+详解
  2. 马上开始写 react ES6 --- 基于gulp 和 Babel 的脚手架
  3. 如何高效的学习TensorFlow代码?
  4. oracle: to_char,to_date
  5. 关于0基础磁盘管理(gpt UEFI...)最好的一篇文章(来自gentoo linux)
  6. DI / CDI –基础
  7. 【开发软件】推荐一款MAC OS X 下php集成开发环境mamp
  8. ssh连接虚拟机的linux_openstack系列之运维排障:虚拟机SSH连接失败
  9. 在CentOS 7上利用systemctl添加自定义系统服务 /usr/lib/systemd/
  10. 循环增加li id_循环老化对于锂离子电池中锂和电解液分布的影响
  11. 使用DataSet Datatable 更新数据库的三种方式及DataTable不同状态的取值
  12. ChinaDDoS BGP 流量牵引二层VLAN回注配置
  13. python简明教程中文pdf-简明Python教程-中文版.pdf
  14. niceScroll 滚动条的用法
  15. 会议论文出版地和出版者
  16. 【零基础入门MyBatis系列】第三篇——使用MyBatis完成CRUD
  17. 解析面试常问题之JavaScript中的闭包概念及应用,顺便普及一下大家口中常说的内存泄漏问题
  18. XV6 RISCV源码阅读报告之 锁
  19. Flutter如何集成第三方插件
  20. HTML5与Flash对比

热门文章

  1. 责任链设计模式介绍及实战
  2. Python math.perm() 方法
  3. 装几只“加密狗”都无妨:活用打印机共享器
  4. [转]深度剖析闪电网络
  5. gvim 二进制_GVim配置文件_vimrc
  6. Ax、Bx、Cx、Dx、AL、BL、CL、DL、AH、BH、CH、DH
  7. Android 错把setLayerType当成硬件加速
  8. 关于使用fluxion工具破解wifi密码的详细教程
  9. 【推导】线性变换与在基下的矩阵一一对应
  10. 如何查看linux系统的jdk版本