阅读本文约需要10分钟,您可以先关注我们或收藏本文,避免下次无法找到。

FTP和SFTP都是文件传输协议,我们知道FTP使用的是20和21端口,SFTP使用的是22端口。另外,SFTP前面的S应该是Secure安全的意思。其他的区别可能就不太清楚了。

本文正好能够帮你补齐短板,梳理FTP和SFTP的各方面区别,明确各自的应用场景。

01 FTP协议

FTP(File Transfer Protocol)是主流的文件传输协议,能够实现文件的上传和下载功能。

FTP有两个信道:第一信道(控制信道)和第二信道(数据信道)。第一信道主要是信令的交互,用于协商FTP数据信道的传输模式和传输端口。第二信道用于传输文件。

FTP有两种传输模式:主动模式(Active Mode)和被动模式(Passive Mode)。两种模式都是从FTP服务器侧进行考虑的,如果第二信道由FTP服务器主动发起建立,则称之为主动模式。反之称之为被动模式。

FTP两个信道的协商和建立过程如下图所示。

(1)FTP客户端主动发起TCP请求,和FTP客户端建立TCP会话。

(2)经过TCP三次握手,FTP客户端和FTP服务器建立了第一信道的TCP会话。

(3)在FTP主动模式下,FTP客户端会主动向FTP服务器发送数据,用于第二信道的信息协商;在FTP被动模式下,FTP服务器开始向FTP客户端发送数据,用于第二信道的信息协商。

(4)至此,第一信道工作结束。

(5)在FTP主动模式下,FTP服务器主动发起TCP请求,和FTP客户端建立TCP会话,用于建立第二信道;在FTP被动模式下,FTP客户端主动发起TCP请求,和FTP客户端建立TCP会话,用于建立第二信道。

(6)第二信道建立完成后,进行FTP数据的传输。

另外,FTP的难点在于FTP服务器和客户端建立第二通道时可能会有问题,这受制于两端的网络环境,特别是存在防火墙的环境。

如果同学们想详细了解FTP的传输模式和防火墙对FTP传输的影响,可查找本号的《一文讲透防火墙对FTP传输的影响》文章进行学习,这里不再赘述。

02 SFTP协议

SFTP(Secure File Transfer Protocol)一种安全的文件传输协议,能够为文件传输提供安全的加密通道。

SFTP作为SSH的一部分,包含在SSH软件中。SFTP自身没有独立的守护进程,需要使用sshd守护进程来完成服务器的连接和文件传输。由于SFTP作为SSH的一个组件存在,SFTP能够直接使用SSH加密通道来传输数据。

在进行SFTP数据传输前,首先需要建立SSH加密通道,如下图所示。

(1)SSH客户端主动发起TCP请求,和SSH服务器建立TCP会话。

(2)SSH客户端和SSH服务器协商认证方式。当前SSH有两种认证方式:口令认证和秘钥认证。

(3)如果使用口令认证,则SSH秘钥协商过程如下。

SSH服务器主动发送公钥给SSH客户端。SSH客户端收到公钥后,使用公钥对登陆密码加密,并回送给SSH服务器。SSH服务器使用私钥进行数据解密,并验证SSH客户端的信息合法性,如果验证通过则建立连接,进行加密通信。

(4)如果使用秘钥认证,则SSH秘钥协商过程如下。

SSH客户端主动发送本端公钥给SSH服务器。SSH服务器收到信息后,检查本端的授权列表中是否包含SSH客户端的公钥。如果存在,则生成一个随机数,并使用SSH客户端的公钥加密,生成密文回送给SSH客户端。SSH客户单收到密文后,使用私钥解密,并将随机数发回SSH服务器。SSH服务器验证随机数,如果一致,则认证通过,连接建立。

(4)SSH加密通道建立完成后,SFTP即可进行数据传输,上传和下载文件。

03 二者区别

以下从名称、协议、安全性、架构、通道、模式、传输效率和是否开放八个方面对FTP和SFTP进行对比,总结出了两者主要的区别,如下表所示。

04 应用场景

FTP明文传输,可以不设置密码,任何人都能访问,适用于一些公共场合,比如用于公开信息的存放,可供使用者任意下载。同时,FTP不涉及加解密,传输效率高,适用于公司内部系统间要求的高速文件传输。

SFTP密文传输,必须进行加解密,安全性高,适用于公司机密文件的传输,以及在公网中传输私有信息。同时,SFTP只有一个通道,使用的端口22端口,信道协商简单,适用于复杂网络环境中,不容易出现协商问题。

好了,今天就讲到这里,请大家持续关注我们的后续内容哦!最后如果喜欢本章内容请不要忘了进行点赞、关注与转发哦!

--喜欢请记得点击@IT管理局关注哦--

本局精彩文章:

  • 一文讲透防火墙对FTP传输的影响
  • Wireshark数据包分析三板斧
  • 在国企做IT是一种什么样的体验

10自带sftp服务器_一文讲透FTP和SFTP的区别相关推荐

  1. 双线macd指标参数最佳设置_一文讲透双线MACD指标及其实战运用

    原标题:一文讲透双线MACD指标及其实战运用 船长的舍得交易体系技术理论模型中,我们要用到两大指标,分别是均线系统和双线MACD指标. 很多小伙伴都喜欢用双线MACD这个指标,但是90%的人都不知道其 ...

  2. cstring只获取到第一个数_一文讲透 Dubbo 负载均衡之最小活跃数算法

    (给ImportNew加星标,提高Java技能) 作者:why技术(本文来自作者投稿) 本文是对于Dubbo负载均衡策略之一的最小活跃数算法的详细分析.文中所示源码,没有特别标注的地方均为2.6.0版 ...

  3. itstime后面跟什么_一文讲透什么是引流

    这个问题老生常谈,都快腻了,还是有人时不时问老马.究其原因,很多人从想做引流.到动手操作,整个流程都是懵逼的状态. 引流不难,难的是一直卡在某个阶段,或者一直停留在那里.这样,你做再多次引流,还是患得 ...

  4. python方差分析误差棒_一文讲透,带你学会用Python绘制带误差棒的柱状图和条形图...

    Python数据可视化,作为数据常用的必备技能,是目前大数据和数据分析的一个热门,而matplotlib库作为Python中最为常用和经典的二维绘图库,受到了很多人的青睐,最近已经和大家共同探讨了多种 ...

  5. 反向传播算法(过程及公式推导)_一文讲透神经网络的反向传播,要点介绍与公式推导...

    神经网络的反向传播是什么 神经网络的反向传播,实际上就是逐层计算梯度下降所需要的$w$向量的"变化量"(代价函数$J(w1,b1,w2,b2,w3,b3...wn,bn)$对于$w ...

  6. c++模板类静态成员变量_一文讲透父子类中静态变量,成员变量初始化顺序原理...

    推荐: 从面试到入职到离职,我在B站工作的30天时光 爱了爱了,Alibaba顶级MySQL调优手册到手,加薪妥了 爱了爱了,Spring Cloud Alibaba内部微服务架构笔记真的太牛了 本文 ...

  7. python selenium自动化框架_一文讲透!实现一个Python+Selenium的自动化测试框架如此简单!...

    首先你得知道什么是Selenium? Selenium是一个基于浏览器的自动化测试工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium I ...

  8. python 多线程和协程结合_一文讲透 “进程、线程、协程”

    本文从操作系统原理出发结合代码实践讲解了以下内容: 什么是进程,线程和协程? 它们之间的关系是什么? 为什么说Python中的多线程是伪多线程? 不同的应用场景该如何选择技术方案? ... 什么是进程 ...

  9. 三菱四节传送带控制梯形图_一文讲透FX5U PLC程序控制指令及步进梯形图编程

    三菱PLC在80年代进入中国市场,已有30多年历史.由于三菱PLC编程易学,功能强大,深受中国用户喜爱.随着时间推移,市场上已经淘汰掉二代产品,关系图如下: 说明 90年代老型号 2000年代老型号 ...

最新文章

  1. 数学建模记录(如何组织,如何参加)(一)
  2. 实现点击空白关闭模态框
  3. Java 线程池的原理与实现
  4. 深入理解Kubernetes容器网络
  5. C# java 有关“字节序”的描述 .
  6. 感恩节活动促销海报模板,摆好借势感恩节的姿势
  7. 收藏一些常用下载地址
  8. sql azure 语法_Azure SQL数据同步–在Azure SQL数据库之间复制数据和架构更改
  9. SpringBoot + Vue 开发前后端分离的旅游管理系统
  10. 【明解C语言】之函数详解《上篇》
  11. 华为模拟器eNSP将防火墙配置成三层核心交换机
  12. DNN硬件加速器设计3 -- DNN Accelerators(MIT)
  13. windows10查看桌面壁纸路径
  14. MFC模态对话框和非模态对话框使用
  15. tensorflow 版本列表_TensorFlow 版本兼容性
  16. 人生就是个学习、思考与实践的过程
  17. pytorch一小时速成
  18. ruoyi增加导入导出
  19. Linux虚拟用户怎么建立,linux下ftp虚拟用户的创建方法
  20. Linux下分割、合并PDF(pdftk)

热门文章

  1. JavaScript 中一句话的思索:this是函数在执行时所处的作用域
  2. 安卓虚拟机启动后报错: 类似 SDK Manager] Error: Error parsing .....devices.xml 解决方案
  3. [转]Entity Framework 异常: ‘OFFSET‘ 附近有语法错误。\r\n在 FETCH 语句中选项 NEXT 的用法无效
  4. 无法远程访问Mysql的解决方案
  5. java 找不到或无法加载主类- 解决方案
  6. 解决运行pytorch程序多线程问题
  7. Redis 配置连接池,redisTemplate 操作多个db数据库,切换多个db,解决JedisConnectionFactory的设置连接方法过时问题。(转)
  8. 表格Table宽度设置无效的解决方法
  9. [异常笔记] zookeeper集群启动异常: Cannot open channel to 2 at election address ……
  10. Java ConcurrentModificationException异常原因和解决方法