转载:FTP、SFTP、TFTP,文件传输协议怎么选?

FTP

FTP(File Transfer Protocol,文件传输协议)是用于在计算机网络中传输文件的标准协议。FTP是一种客户端/服务器协议,我们一般都通过FTP客户端软件将客户端连接到服务器,并使用FTP协议来上传和下载文件。

文件传输过程如下图所示:

传输过程

  1. 服务器打开用于FTP控制连接的TCP(Transmission Control Protocol,传输控制协议)端口21(标准),等待FTP客户端的连接。当客户端需要登录FTP服务器时,与服务端(端口21)建立控制连接,该连接始终等待客户端和服务器之间的通信,将命令从客户端传递到服务器,并传回服务器的应答。
  2. 每当需要文件传输时,就创建一个数据连接。
  • 举例

寄件人文档君相当于FTP客户端,收件人相当于FTP服务器。

文档君需要寄快递,只需要在手机上操作,就可以让快递小哥上门取件,也可以随时取消取件订单,这个过程类似于控制连接。也就是说,控制连接用于传输控制指令,也可以在传输途中终止传输的指令。

快递小哥取到件之后,需要负责包裹(数据)的转运,直至派送。这个过程类似于数据连接,也就是说,数据连接用于实际的文件传输, 在传输完毕后关闭数据连接,结束整个文件传输流程。

特点

  • 安全性:FTP传输过程采用TCP明文传输,存在安全隐患,对于安全性要求较高的数据,不建议采用FTP服务。

  • 可靠性:FTP使用TCP作为传输层协议进行数据传输,保证了数据传输的可靠性。

  • 面向连接:FTP建立连接后会一直保持连接状态,直到连接被关闭。

  • 需要身份验证:FTP服务器通常需要用户进行身份验证后才能进行文件传输,以保护数据的安全性。

  • 支持的传输模式:支持二进制模式ASCII模式,可以适应不同类型的文件传输。

    二进制模式应用场景:

    ASCII模式应用场景:文本文件、HTML 文件、CGI 脚本、级联样式表文件、javascript 文件。

  • 支持文件列表:支持列出目录内容的操作。

  • 支持传输大文件:可以传输GB(Gigabyte,千兆字节)大小的文件。

STFP

SFTP(Secure File Transfer Protocol,安全文件传输协议)是用于在计算机网络中安全传输文件的协议,其实就是加强版的FTP,专门采用了一个加密传输技术,来提高数据传输的安全性。

传输过程

  1. 客户端通过密钥对要传输的文件进行加密,然后发送给SFTP服务器。
  2. SFTP服务器使用密钥对加密文件进行解密,最终得到原文件。

特点

  • 安全性:SFTP使用SSH(Secure Shell,安全外壳协议)的加密机制,SSH可以在不安全的网络中对网络服务提供安全的传输环境,相当于给文件传输通道加上了一个保护罩,从而保证了数据的安全传输。
  • 可靠性:SFTP的传输过程是可靠的。如果传输中断,它可以从上一次中断的地方恢复,而无需重新传输整个文件
  • 面向连接:SFTP建立连接后会一直保持连接状态,直到连接被关闭。
  • 需要身份验证:SFTP 提供了两种验证连接的方法。
    • 与 FTP 一样,连接时只需要验证用户 ID 和密码就可以了,但是,与FTP不同的是,这些凭据是加密的,这是 SFTP 最主要的安全优势。
    • 除密码外,还可以通过 SSH 密钥来验证并通过 SFTP 协议连接。
  • 支持的传输模式:二进制模式和ASCII模式,可以适应不同类型的文件传输。
  • 支持文件列表:支持列出目录内容的操作。
  • 支持传输大文件:可以传输GB(Gigabyte,千兆字节)大小的文件。

TFTP

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是一个用来在客户端与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务,它只能从服务器上获得或写入文件。

传输过程

TFTP客户端和TFTP服务器都是数据的发出者与接收者,一方传输数据接收应答,另一方发出应答接收数据。

  • 举例

类似于我们生活中和小伙伴打语音电话,一方发出语音请求,另一方可以接收语音。

个人觉得上述例子不恰当,因为TFTP基于UDP协议,无法建立连接,可以举例:发微信消息。

特点

  • 安全性:TFTP不支持任何身份验证机制,因此安全性较差,需要在安全的网络中使用。
  • 可靠性:TFTP基于UDP(User Datagram Protocol,用户数据报协议)协议实现,没有错误恢复和重传机制是不可靠的
  • 面向无连接:TFTP是面向无连接的,即每个TFTP包都是独立的,不需要建立连接。
  • 不支持身份验证:TFTP不支持任何身份验证机制,因此安全性较差,需要在安全的网络中使用。
  • 支持的传输模式:支持二进制模式和ASCII模式,可以适应不同类型的文件传输。二进制模式和ASCII模式,可以适应不同类型的文件传输。
  • 不支持文件列表:TFTP不支持列出目录内容的操作,用户需要知道需要下载或上传的文件名。
  • 不支持传输大文件:TFTP只能传输较小的文件,因为它限制了数据包的大小。

应用场景

假设文档君需要将一份公司文件从你的电脑上传到公司服务器。这是一个常见的文件传输场景,可以用FTP、SFTP或TFTP协议进行传输。

  • 当文档君需要传输团建VLOG视频文件,可以使用FTP客户端连接到公司服务器,输入用户名和密码进行身份验证,然后上传文件。因为FTP传输不加密,如果VLOG视频中包含敏感信息,需要考虑其它安全性更高的协议。
  • 当文档君需要传输机密会议录屏文件,可以使用SFTP客户端连接到公司服务器,输入用户名和密码或SSH密钥进行身份验证,然后使用加密传输将文件上传到服务器。这种方式更加安全,适用于需要保护数据安全性的场合。
  • 当文档君需要传输固件(固化在集成电路内部的程序代码),可以使用TFTP客户端通过公司内部的本地网络上传到公司服务器中。因为TFTP传输速度快,占用带宽少,因此可以快速完成上传过程。但需要注意,TFTP在安全性方面较弱,因此不适用于传输敏感信息。

FTP、SFTP、TFTP,文件传输协议怎么选?的更多相关文章

  1. FTPS (FTP over SSL) vs. SFTP (SSH 文件传输协议): 我们如何做出选择

    第一个RFC的FTP协议发布通过网络使用FTP协议(由RFC 959或更高版本)的文件传输始于1980年,FTP提供上传,下载和删除文件,创建和删除目录,读取目录内容的功能.虽然FTP是非常受欢迎的, ...

  2. 文件传输协议:FTP、TFTP、SFTP有什么区别?

    一个执着于技术的公众号 FTP 提供一种在服务器和客户机之间上传和下载文件的有效方式:是基于TCP的传输,FTP采用双TCP连接方式:支持授权与认证机制,提供目录列表功能. ---控制连接使用TCP端 ...

  3. 文件传输协议FTP、SFTP和SCP

    网络通信协议分层 应用层: HTTP(Hypertext Transfer Protocol 超文本传输协议,显示网页) DNS(Domain Name System) FTP(File Transf ...

  4. 【传输文件】文件传输协议FTP、SFTP和SCP

    网络通信协议分层 应用层: HTTP(Hypertext Transfer Protocol 超文本传输协议,显示网页) DNS(Domain Name System) FTP(File Transf ...

  5. FTP(文件传输协议)工作原理

    目前在网络上,如果你想把文件和其他人共享.最方便的办法莫过于将文件放FTP服务器上,然后其他人通过FTP客户端程序来下载所需要的文件. 1.FTP架构 如同其他的很多通讯协议,FTP通讯协议也采用客户 ...

  6. 【知识强化】第六章 应用层 6.3 文件传输协议FTP

    这节课我们来学习一下文件传输协议FTP. 我们知道一个文件的传输过程呢一定需要协议的规定,那在文件传送协议这一块呢有很多个协议.比较主要的两个一个是文件传送协议FTP,一个是简单文件传送协议TFTP. ...

  7. TFTP服务[精简版]:简单文件传输协议

    简单文件传输协议(Trivial File Transfer Protocol,TFTP)是一种基于 UDP 协议在客户端 和服务器之间进行简单文件传输的协议.顾名思义,它提供不复杂.开销不大的文件传 ...

  8. 安全文件传输协议之SFTP的使用

    一.SFTP概述 在前几篇文章,我们讲到了文件传输协议FTP(File Transfer Protocol),那也是使用比较广泛的文件服务器,但是我们需要知道,Linux系统并不自带FTP程序 如果要 ...

  9. Tftp文件传输服务器(基于UDP协议)

    一个简单的UDP服务端与客户端 服务端: from socket import * #创建套接字 udp_server = socket(AF_INET,SOCK_DGRAM) msg_server ...

  10. ftp (文件传输协议)

    ftp (文件传输协议) 锁定 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议” ...

随机推荐

  1. 研发LLM模型,如何用数值表示人类自然语言?

    上一篇:<人工智能--自然语言处理简介> 序言:人工智能大语言模型(LLM)如何理解人类的自然语言?这个过程的核心在于将文本转化为计算机能处理的数值形式,经过计算,最终达到对语言的理解.起 ...

  2. Spring AI + ollama 本地搭建聊天 AI

    Spring AI + ollama 本地搭建聊天 AI 不知道怎么搭建 ollama 的可以查看上一篇Spring AI 初学. 项目可以查看gitee 前期准备 添加依赖 创建 SpringBoo ...

  3. Python网络爬虫实践案例:爬取猫眼电影Top100

    以下是一个Python网络爬虫的实践案例,该案例将演示如何使用Python爬取猫眼电影Top100的电影名称.主演和上映时间等信息,并将这些信息保存到TXT文件中.此案例使用了requests库来发送 ...

  4. golang读取文件

    golang 按行读取文件 file, err := os.Open("app-2019-06-01.log") if err != nil { log.Fatal(err) } ...

  5. (Python基础教程之七)Python字符串操作

    Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...

  6. MySQL之批量更新多条记录不同值

    之前文章:https://www.cnblogs.com/xingxia/p/mysql_basic.html mysql更新语句很简单,更新一条数据的某个字段,一般这样写: UPDATE mytab ...

  7. golang之类型转换cast

    Go 语言作为强类型语言,在使用 Golang 开发项目时,经常会遇到类型转换的场景,整型之间可以直接转换,字节切片和字符串之间也可以直接转换. 但是,如果整型和字符串之间做类型转换,则需要使用 st ...

  8. MongoDB之用户管理

    注意点: 验证库: 建立用户时use到的库及用户的验证库,在使用用户时,要加上验证库才能登陆. 对于管理员用户,必须在admin下创建. 1. 建用户时,use到的库,就是此用户的验证库 2. 登录时 ...

  9. HarmonyOS Next 集成支付宝SDK后无法在模拟器上安装调试的问题

    之前使用模拟器调试都正常,在集成支付宝SDK后,同事说在模拟器上无法安装调试,因为真机资源不够,模拟器不能用实在耽误事,所以就花了点时间研究一下. 报错原因 官方文档的解释 根据文档的说明,应该是cp ...

  10. .NET 使用 ZXing.Net 生成二维码,并识别

    .NET 使用 ZXing.Net 生成二维码,并识别 前言 前面已经分享给很多创建二维码,条形码...等一系列的方式 各有优缺点,暂时不做评价.今天推荐ZXing.Net .也是比较全面的一种方式, ...