文件传输协议(FTP)必将消亡

fmms 12年前
     <div id="OSChina_News_25415" class="NewsContent TextContent NewsType2">     <p>文件传输协议(FTP)在RFC 959中定义,于1985年10月发布。文件传输协议(FTP)被设计成为一个跨平台的、简单且易于实现的协议。<span style="font-weight:bold;">文件传输协议(FTP)有一个漫长的演化史,是互联网上最重要的应用之一,但时至今日,却已江河日下。本文作者从各方面列举了一些文件传输协议(FTP)为人诟病的缺点。</span></p>     <p><img style="cursor:pointer;" alt="文件传输协议(FTP)必将消亡" src="https://simg.open-open.com/show/98f1b5403e93151586db67308762b568.jpg" width="423" height="284" /><br /> <br /> <span style="font-weight:bold;">1.数据传输模式不合理</span><br style="font-weight:bold;" /> <br /> 不考虑文件自身的内容,一味使用ASCII模式传输数据是不合理的。文件传输协议(FTP)应该具有自动检测功能,当然用户也可以进行自定义。<br /> <br /> 虽然现在许多Linux和Windows客户端已经支持自动传输模式,但多达数代的UNIX和Windows客户端都默认使用ASCII传输模式,这种传输模式甚至会造成文件损坏。<br /> <br /> <span style="font-weight:bold;">2.工作方式设计不合理</span><br /> <br /> 文件传输协议(FTP)可以在主动模式(PORT)或被动模式(PASV)下工作,这决定了数据链接建立的方式。<br /> <br /> 在主动模式下,客户端首先向服务器端发送IP地址和端口号,然后等待服务器端建立TCP链接。在被动模式下,客户端同样首先建立到服务器的链接,但服务器端会开启一个端口(1024到5000之间),等待客户端传输数据。<br /> <br /> 文件传输协议(FTP)中最让人不可思议的是,客户端会侦听服务器端!<br /> <br /> <span style="font-weight:bold;">3.与防火墙工作不协调</span><br /> <br /> 在文件传输协议(FTP)诞生在网络地址转换(NAT)和防火墙之前,那时的网络还不存在恶意攻击。今天大多数最终用户的IPv4地址已不可路由,这是因为防火墙的使用和IPv4地址的短缺。<br /> <br /> 这对FTP意味着什么呢?这意味着如果FTP客户端IP地址不可路由,或者位于防火墙之后,那么就只能使用被动传输模式进行数据传输。<br /> <br /> 如果服务器端的IP地址也不可路由,或者位于防火墙之后呢?FTP将无法进行数据传输!<br /> <br /> 现在,许多防火墙适用于NAT环境,可以使用一些特殊的技巧(hacks)允许FTP在防火墙之后正常工作。当然,这需要对防火墙进行配置。<br /> <br /> <span style="font-weight:bold;">4.密码安全策略不完善</span><br /> <br /> 在互联网早期,文件传输协议(FTP)并没有对密码安全作出规定。在FTP客户端和服务器端,数据以明文的形式传输,任何对通讯路径上的路由具有控制能力的人,都可以通过嗅探获取你的密码和数据。<br /> <br /> 我们当然可以使用SSL封装FTP,但FTP是通过建立多次链接进行数据传输的,我们即便是保护了密码安全,也很难保护数据传输的安全性。<br /> <br /> 自文件传输协议(FTP)发布以来,安全的数据传输也经历了长足发展,推荐使用SCP取代FTP进行文件传输。<br /> <br style="font-weight:bold;" /> <span style="font-weight:bold;">5.FTP协议效率低下</span><br /> <br /> 从FTP服务器上检索一个文件,包含繁复的交换握手步骤:<br /> 客户端建立到FTP服务器端控制端口的TCP Socket链接,并等待TCP握手完成<br /> 客户端等待服务器端发送回执<br /> 客户端向服务器端发送用户名并等待响应<br /> 客户端向服务器端发送密码并等待响应<br /> 客户端向服务器端发送SYST命令并等待响应<br /> 客户端向服务器端发送TYPE I命令并等待响应<br /> 如果用户需要在服务器端切换目录,客户端仍然发送命令并等待响应<br /> 主动模式下,客户端需要发送PORT命令到服务器端,然后等待响应(被动模式与主动模式相反)<br /> 建立数据传输链接(需要经过三次握手,建立一条TCP Socket连接)<br /> 通过链接传输数据<br /> 客户端等待服务器端从控制连接发送2xx指令,以确保数据传输成功<br /> 客户端发送QUIT命令,并等待服务器响应<br /> <br /> 同样的情形,我们来看看HTTP协议:<br /> HTTP客户端向HTTP服务器端建立一条TCP Socket连接<br /> HTTP客户端向HTTP服务器端发送GET命令,包含URL、HTTP协议版本、虚拟主机名等等,并等待响应<br /> HTTP服务器端的响应包含了所有想要的数据,完成!<br /> <br /> 传输一个文件,FTP需要往复10次,而HTTP只需要2次!如果传输多个文件,FTP可以省略发送用户名和密码的步骤,而HTTP则可以使用固定的套接字(Socket),在相同的TCP连接中传输文件。<br /> <br /> 综上所述,虽然文件传输协议(FTP)曾经显赫一时,但现在已经过时了,它是一个既不不安全,也不不友好,而且效率低下的协议,势必被取而代之。(张志平/编译)CSDN</p>    </div>