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

783ced96c5a0054ceee576b0690071f4.png

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 客户端工具就更加顺手了,他可以根据自己的需求更改协议以及加密方式,而不用为不懂某个设置而烦恼。

190363d17a27201bdc3c98d0780ad262.png

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

ba91b52e9951a9bcbc1f5a4ce48ee948.png

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

主动模式

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

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

  • 首先客户端上的随机端口与服务器上的 FTP 端口 21 建立命令通道,客户端发送 PORT 命令,指定服务器与客户端其中一个端口连接,并建立数据通道。
  • 然后服务器从端口 20 连接到为数据通道指定的客户端端口。建立连接后,即可通过这些客户端和服务器端口进行文件传输。

被动模式

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

94f934b00e9521083d1cc7a08d5edc93.png

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

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

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

作者:又拍云
链接:https://my.oschina.net/upyun/...

如有错误或其它问题,欢迎小伙伴留言评论、指正。如有帮助,欢迎点赞+转发分享。

我是民工哥,一个爱折腾的IT技术老司机,欢迎关注我,我们一起学习,共同成长!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/410533.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动手学servlet(四) cookie和session

Cookie cookie是保存在客户端的一个“键值对”,用来存储用户的一些信息 cookie的应用: -在电子商务会话中标识用户 -对网站进行定制,比如你经常浏览哪些内容,就展示哪些页面给你 -网站广告,比如百度联盟,你…

[html] html标签中的lang属性有什么作用?

[html] html标签中的lang属性有什么作用? 根据lang属性来设定不同语言的css样式,或者字体告诉搜索引擎做精确的识别让语法检查程序做语言识别帮助翻译工具做识别帮助网页阅读程序做识别等等个人简介 我是歌谣,欢迎和大家一起交流前后端知识…

【C++ 学习笔记】:STL-map

查找 map<int,int>map_test;map_test.insert(pair<int,int>(1,2));map_test.insert(pair<int,int>(1,3));map_test.insert(pair<int,int>(2,2));inta map_test[1];intb map_test[3];map<int,int>::iterator p map_test.find(4);if(p map_test.en…

[html] 说说base标签有什么作用?

[html] 说说base标签有什么作用&#xff1f; base标签为页面上的所有链接规定默认地址. 例如<head> <base href"http://h-camel.com/show/" /> </head>//略过其中结构<a href"2679.html">说说base标签有什么作用</a>个人简…

16进制 转为图片 php_Python 十六进制hex-bytes-str之间的转换和Bcc码的生成

前言近期做测试模拟器用到了hex-bytes-str之间的转换bcc码的校验&#xff0c;这里总结了一些方法。实例直接上代码转为十六进制&#xff08;Hex&#xff09;字符串def 执行代码&#xff1a;方法&#xff1a;getStringFromNumber(size,value)参数一为生成几个batys&#xff0c;参…

C# 淘宝商品微信返利助手开发-(四)返利助手开发(2)淘宝分享的内容如何只取淘口令

系列教程一目录&#xff1a;返利助手原理 系列教程二目录&#xff1a;返利助手开放文档以及帐号申请地址 系列教程三目录&#xff1a;返利助手开发&#xff08;1&#xff09;API介绍 系列教程四目录&#xff1a;返利助手开发&#xff08;2&#xff09;淘宝分享的内容如何只取…

[html] 在head标签中必不少的是什么?

[html] 在head标签中必不少的是什么&#xff1f; 根据w3c文档&#xff0c;title是head 部分中唯一必需的元素。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

推荐一个国外SaaS产品-Olark

Olark www.olark.com 是国外非常出名的一个在线客服工具。 现在国内很多人创业失败的原因是&#xff1a;什么都想自己做&#xff0c;不利用现有资源&#xff0c;结果造成做出来的东西什么都有&#xff0c;什么都不好用。 我们应该好好学习国外的小团队&#xff0c;他们只做一件…

python sftp_python中实现sftp

python中想要实现sftp的话可以使用paramiko模块 paramiko很强大&#xff0c;通过python实现SSH协议。可以做到ssh远程登录&#xff0c;sftp上传下载文件。 sftp的实现 1.通过密码口令认证#!/usr/bin/python # -*- coding:utf-8 -*- import paramiko remotedir "/app/ftpu…

C# 淘宝商品微信返利助手开发-(三)返利助手开发(1)API介绍

系列教程一目录&#xff1a;返利助手原理 系列教程二目录&#xff1a;返利助手开放文档以及帐号申请地址 系列教程三目录&#xff1a;返利助手开发&#xff08;1&#xff09;API介绍 系列教程四目录&#xff1a;返利助手开发&#xff08;2&#xff09;淘宝分享的内容如何只取…

python之基础学习day01

今天是python学习的第一天&#xff0c;收获还是不少的&#xff0c;使用的编辑器为python3.7。 第一天学习知识总结&#xff1a; 1、编写的第一句python语句&#xff1a; print ( " hello world" ) 2、python的两种执行方式 --python解释器 py文件路径 --python进入解…

[html] 什么是空元素?常用的空元素有哪些?

[html] 什么是空元素&#xff1f;常用的空元素有哪些&#xff1f; 一个空元素&#xff08;empty element&#xff09;可能是 HTML&#xff0c;SVG&#xff0c;或者 MathML 里的一个不能存在子节点&#xff08;例如内嵌的元素或者元素内的文本&#xff09;的element。HTML&…

【JQuery】初始化页面当异步加载时构建页面元素的顺序

今日帮同事看JQuery页面初始化的一个问题时&#xff0c;由于自己没怎么了解过JQuery&#xff0c;所以遇到了一点小麻烦&#xff0c;实现的效果就是初始化页面时&#xff0c;默认选中页面里某表格数据集的某行数据&#xff0c;这种问题&#xff0c;在Java\Delphi等语言里实现起来…

粗暴,干就完了----徐晓冬似的C语言自学笔记-----实现一个链表结构

1 #include <stdio.h>2 #include <stdlib.h>3 #define N 54 /*N 假定数组长度为5*/5 typedef struct snode6 {7 int data;8 struct snode *next; 9 } SNODE;10 11 /*第一步&#xff0c;添加链表头信息*/12 SNODE *createhead(int a[])13 {14 SNODE *h,…

C# 淘宝商品微信返利助手开发-(二)返利助手开放文档以及帐号申请地址

系列教程一目录&#xff1a;返利助手原理 系列教程二目录&#xff1a;返利助手开放文档以及帐号申请地址 系列教程三目录&#xff1a;返利助手开发&#xff08;1&#xff09;API介绍 系列教程四目录&#xff1a;返利助手开发&#xff08;2&#xff09;淘宝分享的内容如何只取…

[html] 说说你对H5的ServiceWorker的理解,它有什么运用场景?

[html] 说说你对H5的ServiceWorker的理解&#xff0c;它有什么运用场景&#xff1f; 一个服务器与浏览器之间的中间人角色&#xff0c;如果网站中注册了service worker 那么它可以拦截当前网站所有的请求&#xff0c;进行判断&#xff08;需要编写相应的判断程序&#xff09;&…

[html] 你知道短链接的生成原理吗?

[html] 你知道短链接的生成原理吗&#xff1f; 目的将长度较长的链接压缩成较短的链接&#xff0c;并通过跳转的方式&#xff0c;将用户请求由短链接重定向到长链接上去1.二种方式生成短链hash-可能会重复发号器发号压缩 URL2.短链跳转方式301 - 用户第一次访问某个短链接后&a…

比较难的sql面试题,令我比较郁闷!

一组通话记录&#xff08;总共500万条&#xff09;:ID 主叫号码 被叫号码 通话起始时间 通话结束时间 通话时长1 98290000 0215466546656 2007-02-01 09:49:53.000 2007-02-01 09:50:16.000 232 98290000 021546654666 2007-02-01 09:50:29.000 2007-02-01 09:5…

阿里云ESC服务器数据快速转移至轻量应用服务器

ECS服务器的换ECS的服务器已有的数据转换就很简单了&#xff0c;直接创建自定义镜像&#xff0c;创建完成后新服务器直接更换系统盘然后选择你创建的镜像就直接吧你的数据可软件一起直接移到新的ECS的服务器了 可是坑爹的是&#xff0c;新买的轻量应用服务器里面左找右找也找…

js udp通信_nodejs源码分析第十九章 -- udp模块

udp不是面向连接的协议&#xff0c;所以使用上会比tcp简单&#xff0c;他和tcp一样&#xff0c;使用四元组来标记通信的双方&#xff08;单播的情况下&#xff09;。我们看看udp作为服务器和客户端的时候的流程。1 在c语言中使用udp1.1 服务器流程&#xff08;伪代码&#xff0…