文件传输协议(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)曾经显赫一时,但现在已经过时了,它是一个既不不安全,也不不友好,而且效率低下的协议,势必被取而代之。
|