Raysync文件传输协议(FTP)

文件传输协议(FTP)在RFC 959中定义,于1985年10月发布。文件传输协议(FTP)被设计成为一个跨平台的、简单且易于实现的协议。文件传输协议(FTP)有一个漫长的演化史,是互联网上最重要的应用之一,但时至今日,却已江河日下。本文作者从各方面列举了一些文件传输协议(FTP)为人诟病的缺点。

1、数据传输模式不合理

不考虑文件自身的内容,一味使用ASCII模式传输数据是不合理的。文件传输协议(FTP)应该具有自动检测功能,当然用户也可以进行自定义。

虽然现在许多Linux和Windows客户端已经支持自动传输模式,但多达数代的UNIX和Windows客户端都默认使用ASCII传输模式,这种传输模式甚至会造成文件损坏。

2、工作方式设计不合理

文件传输协议(FTP)可以在主动模式(PORT)或被动模式(PASV)下工作,这决定了数据链接建立的方式。

在主动模式下,客户端首先向服务器端发送IP地址和端口号,然后等待服务器端建立TCP链接。在被动模式下,客户端同样首先建立到服务器的链接,但服务器端会开启一个端口(1024到5000之间),等待客户端传输数据。

文件传输协议(FTP)中最让人不可思议的是,客户端会侦听服务器端!

3、与防火墙工作不协调

在文件传输协议(FTP)诞生在网络地址转换(NAT)和防火墙之前,那时的网络还不存在恶意***。今天大多数最终用户的IPv4地址已不可路由,这是因为防火墙的使用和IPv4地址的短缺。

这对FTP意味着什么呢?这意味着如果FTP客户端IP地址不可路由,或者位于防火墙之后,那么就只能使用被动传输模式进行数据传输。

如果服务器端的IP地址也不可路由,或者位于防火墙之后呢?FTP将无法进行数据传输!

现在,许多防火墙适用于NAT环境,可以使用一些特殊的技巧(hacks)允许FTP在防火墙之后正常工作。当然,这需要对防火墙进行配置。

4、密码安全策略不完善

在互联网早期,文件传输协议(FTP)并没有对密码安全作出规定。在FTP客户端和服务器端,数据以明文的形式传输,任何对通讯路径上的路由具有控制能力的人,都可以通过嗅探获取你的密码和数据。

我们当然可以使用SSL封装FTP,但FTP是通过建立多次链接进行数据传输的,我们即便是保护了密码安全,也很难保护数据传输的安全性。

自文件传输协议(FTP)发布以来,安全的数据传输也经历了长足发展,推荐使用SCP取代FTP进行文件传输。

5、FTP协议效率低下

从FTP服务器上检索一个文件,包含繁复的交换握手步骤:
客户端建立到FTP服务器端控制端口的TCP Socket链接,并等待TCP握手完成
客户端等待服务器端发送回执
客户端向服务器端发送用户名并等待响应
客户端向服务器端发送密码并等待响应
客户端向服务器端发送SYST命令并等待响应
客户端向服务器端发送TYPE I命令并等待响应
如果用户需要在服务器端切换目录,客户端仍然发送命令并等待响应
主动模式下,客户端需要发送PORT命令到服务器端,然后等待响应(被动模式与主动模式相反)
建立数据传输链接(需要经过三次握手,建立一条TCP Socket连接)
通过链接传输数据
客户端等待服务器端从控制连接发送2xx指令,以确保数据传输成功
客户端发送QUIT命令,并等待服务器响应

同样的情形,我们来看看HTTP协议:
HTTP客户端向HTTP服务器端建立一条TCP Socket连接
HTTP客户端向HTTP服务器端发送GET命令,包含URL、HTTP协议版本、虚拟主机名等等,并等待响应
HTTP服务器端的响应包含了所有想要的数据,完成!

传输一个文件,FTP需要往复10次,而HTTP只需要2次!如果传输多个文件,FTP可以省略发送用户名和密码的步骤,而HTTP则可以使用固定的套接字(Socket),在相同的TCP连接中传输文件。

综上所述,虽然文件传输协议(FTP)曾经显赫一时,但现在已经过时了,它是一个既不不安全,也不不友好,而且效率低下的协议,势必被取而代之。

原文地址:https://blog.51cto.com/13609234/2402022

时间: 2024-11-09 02:38:54

Raysync文件传输协议(FTP)的相关文章

第9章 应用层(5)_文件传输协议FTP

6. 文件传输协议FTP 6.1 FTP主动和被动模式 (1)FTP协议 ①与其他协议不同,FTP协议在客户端访问FTP服务器时需要建立两个TCP连接.一个用来传输FTP命令,一个用来传输数据. ②在FTP服务器上需要开放两个端口,一个命令窗口(或称为控制窗口)和一个数据窗口.通常命令端口为21,数据端口为20.当考虑主动/被动模式时,数据端口可能不是20. (2)主动模式(建立传输数据的TCP连接由FTP服务器主动发起) ①工作过程 A.第1步中,FTP客户端提交PORT命令并允许服务器来回连

文件传输协议FTP、SFTP和SCP

网络通信协议分层 应用层: HTTP(Hypertext Transfer Protocol 超文本传输协议,显示网页) DNS(Domain Name System) FTP(File Transfer Protocol) SFTP(SSH File Transfer Protocol,和FTP不一样) SCP(Secure copy,based on SSH) SSH (Secure Shell) 通信层: TCP(Transmission Control Protocol 三次握手传输协议

文件传输协议FTP

之前已经了解了TCP/IP这种低级别的协议,还有一些网络协议包括文件传输(FTP,STP).阅读Usenet新闻组(NNTP).电子邮件发送(SMTP).从服务器上下载电子邮件(POP3.IMAP)等. 一.文件传输 1.文件传输网际协议 因特网中最流行的事情就是文件交换. 文件交换无处不在.有很多协议可以供因特网上传输文件使用. 最流行的有文件传输协议(File Transfer(转移) Protocol,FTP).Unix-to-Unix复制协议(Unix-to-Unix Copy Prot

FTP文件传输协议之vsftpd服务

一.FTP服务概述 FTP(File Transfer Protocol,文件传输协议)是典型的C/S结构的应用层协议,需要由服务端软件.客户端软件共同实现文件传输功能 FTP服务器默认使用TCP协议的20.21端口与客户端实现通信.20端口用于建立数据连接,并传输数据文件:21端口用于建立控制连接,并传输FTP控制命令.FTP数据连接分为主动模式和被动模式 主动模式:服务器主动发起数据连接 被动模式:服务器被动等待数据连接 vsftpd软件 vsftpd是目前在Linux/Unix领域应用十分

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

第一个RFC的FTP协议发布通过网络使用FTP协议(由RFC 959或更高版本)的文件传输始于1980年,FTP提供上传,下载和删除文件,创建和删除目录,读取目录内容的功能.虽然FTP是非常受欢迎的,它有一些缺点,使其更难使用.主要的缺点是缺乏目录列表的统一格式(这个问题已经通过引入MLST命令部分解决,但是一些服务器不支持)和辅助连接(DATA连接)的存在.FTP中的安全性通过对RFC 2228中定义的信道加密采用SSL / TLS协议来提供.FTP的安全版本称为FTPS. 在UNIX系统中,

文件传输协议之FTP

FTP FTP叫做FILE Transfer Protocol,文件传输协议,是比较古老的传输协议之一,它是以明文的方式来进行工作的,因此,它不够安全,后续我们主要介绍安全的ftp叫做vsftp.一般的ftp服务器能够支持三种用户的访问: 本地用户 匿名用户 虚拟用户 当然,不同的用户的权限也不一样.对于本地用户和匿名用户的设置只需要修改ftp的配置文件即可.这个将在后文介绍:而对于虚拟用户需要借助mysql数据库来完成账号和密码的认证,这个过程在下一遍文章来介绍. ftp的工作原理: ftp是

FTP文件传输协议两种方式的工作原理

FTP是一种文件传输协议,它支持两种模式,一种方式叫做Standard (也就是 Active,主动方式),一种是 Passive (也就是PASV,被动方式). Standard模式 FTP的客户端发送 PORT 命令到FTP server.Passive模式FTP的客户端发送 PASV命令到 FTP Server. 下面介绍一个这两种方式的工作原理: Standard模式 FTP 客户端首先和FTP Server的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个

文件传输协议(FTP、TFTP)

FTP <1>FTP协议是互联网上广泛使用的文件传输协议. <2>客户端/服务器模式基于TCP(Transmission Control Protocol 传输控制协议,面向连接的.可靠的.基于字节流的传输层通信协议) <3>FTP采用双TCP连接方式 控制连接使用TCP端口号21(控制连接在整个FTP回话期间一直保持打开) 数据连接使用TCP端口号20(数据上传.下载.文件列表发送等.数据传输结束后数据连接将终止) <4>FTP有两种文件传输模式 ASCI

FTP文件传输协议(二)

FTP文件传输协议(二) 3.访问控制列表 [[email protected] vsftpd]# ls ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh [[email protected] vsftpd]# cat user_list 查看用户列表的配置文件 # vsftpd userlist # If userlist_deny=NO, only allow users in this file //如果使用userlist_den