文件传输协议:FTP、TFTP、SFTP有什么区别?
一个执着于技术的公众号
FTP
提供一种在服务器和客户机之间上传和下载文件的有效方式;是基于TCP的传输,FTP采用双TCP连接方式;支持授权与认证机制,提供目录列表功能。
---控制连接使用TCP端口号21;用于在FTP客户端和FTP服务器之间传输FTP控制命令及命令执行信息;控制连接在整个FTP会话期间一直保持打开
---数据连接使用TCP端口号(主动模式下20,被动模式下随机);用于传输数据,包括数据上传、下载、文件列表发送等。数据传输结束后数据连接将终止
ASPF机制(主动模式下被防火墙限制)和长会话机制(文件传输到99%时中断)
FTP传输模式:ASCII模式和二进制模式
ASCII模式用于传输文本。发送端的字符在发送前被转换成ASCII码格式之后进行传输,接收端收到之后再将其转换成字符。
二进制模式常用于发送图片文件和程序文件。发送端在发送这些文件时无需转换格式,即可传输。
FTP采用两种数据传输方式:主动方式和被动方式
主动方式也称为PORT方式,是FTP协议最初定义的数据传输连接方式。
主要特点是:
1、FTP客户端通过向FTP服务器发送PORT命令,告诉服务器该客户端用于传输数据的临时端口号
2、当需要传送数据时,服务器通过TCP端口号20与客户端的临时端口建立数据传输通道,完成数据传输;在建立数据连接的过程中,由服务器主动发起连接,因此被称为主动方式。
具体交互过程如下:
被动方式也称为PASV方式,被动方式的主要特点是:
1、FTP客户端通过向FTP服务器发送PASV命令,告诉服务器进入被动方式。服务器选择临时端口号并告知客户端
2、当需要传送数据时,客户端主动与服务器的临时端口号建立数据传输通道,完成数据传输;在整个过程中,由于服务器总是被动接收客户端的数据连接,因此被称为被动方式。
具体交互过程如下:
TFTP
简单文件传输协议,也是采用客户机/服务器模式的文件传输协议;TFTP承载在UDP之上,端口号69
TFTP封装:Ethernet 2/IPv4/UDP/FCS
TFTP适用于客户端和服务器之间不需要复杂交互的环境
TFTP仅提供简单的文件传输功能(上传、下载)
TFTP没有存取授权与认证机制,不提供目录列表功能
TFTP协议传输是由客户端发起的
安全文件传送协议SFTP
可以为传输文件提供一种安全的网络的加密方法。SFTP 是SSH的其中一部分,是一种客户端传输文件至服器的安全方式。
其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用ssh守护进程(端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。
SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。
结语
如果您看完本文后有所收获, 还希望您随手点个在看
、或者分享转发
。您的支持是我坚持分享的最大动力!
往期精彩
好文和朋友一起看~
最新文章
- SSIS 包部署 Package Store 后,在 IS 中可以执行,AGENT 执行却报错
- Redis系列(三)-Redis发布订阅及客户端编程
- ASP.NET MVC Json()处理大数据异常解决方法,字符串的长度超过了为 maxJsonLength
- ANSI_NULLS、QUOTED_IDENTIFIER
- SQL Server里如何随机记录集
- The prefix ";mvc"; for element ";mvc:annotation-driven"; is not bound 的解决方法
- [原创]java WEB学习笔记82:Hibernate学习之路---映射 一对多关联关系,配置,CRUD方法测试及注意点
- [SAP ABAP开发技术总结]ABAP程序之间数据共享与传递
- c++将引用作为函数的参数---6
- 爱维帮---LVS
- C#读取Visual FoxPro(*.dbf)数据并使用SqlBulkCopy插入到SqlServer 2008 R2数据表中
- CentOS 7 ARM 版发布:支持树莓派2/香蕉派/CubieTruck
- 一个C++基于boost简单实现的线程池
- OD: Writing Small Shellcode
- c语言:链表排序, 链表反转
- C# 获取与解析枚举类型的 DescriptionAttribute
- jQuery EasyUI API - Grid - DataGrid [原创汉化官方API]
- Java 六种异常处理的陋习(转)
- 23 服务的绑定启动Demo3
- [Leetcode]100. Same Tree -David_Lin
热门文章
- SpringDataJdbc使用数据库默认值的解决方法
- select poll和epoll
- (转载)mos管电压规格是什么,什么是VMOS管栅极
- PACT 在微服务架构中的用途是什么?
- ZAB 协议?
- 在 Spring AOP 中,关注点和横切关注的区别是什么?
- 规范之“用流中的Stream.Of(arr1,arr2)将两个集合合并”
- JavaScript的取值小技巧之“中括号[]取值法”
- Java 值传递 or 引用传递?
- Python入门-面向对象三大特性-继承