一些文件传输协议为人诟病的缺点

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

 

【编辑推荐】

  1. 网络协议X档案之BOOTP协议、TFTP协议和DHCP协议
  2. FTP协议服务器安装之ftp命令
  3. FTP协议的工具、网页浏览器和命令
  4. 浅述FTP协议的作用
  5. 学好三方面掌握FTP协议的工作原理
责任编辑:Writer 来源: tt网络
相关推荐

2012-04-05 13:24:30

2010-07-01 15:55:54

FTP文件传输协议

2010-06-28 14:25:16

2010-06-09 15:40:01

FTP文件传输协议

2011-08-24 10:18:56

2023-11-19 11:44:45

2010-06-28 11:15:45

BitTorrent协

2010-06-28 15:41:04

FTP文件传输协议

2010-06-09 15:55:20

FTP文件传输协议

2023-11-09 08:05:40

IDEA开发工具

2009-08-26 14:35:00

用C#实现HTTP协议

2014-05-04 11:17:39

Unix命令Linux命令

2021-02-20 17:16:39

Go语言Go开发者编程

2011-05-19 11:20:08

2010-06-09 17:13:12

IPv6协议路由协议

2017-02-20 16:28:30

DCISDN-WAN传输网络

2010-08-05 13:54:36

NFS协议

2010-12-08 12:34:46

文件传输

2021-02-25 15:09:24

微信文件传输助手录音

2018-07-23 15:55:28

协议自定义viewSwift
点赞
收藏

51CTO技术栈公众号