[来自iPc.me] FTP – 文件传输协议必将消亡

标签: ipc me ftp | 发表时间:2012-02-08 11:44 | 作者:[email protected] (投稿者)
出处:http://www.ipc.me

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

投稿者
来自读者的投稿与分享
据说此人要保持低调,还没添加个人说明……
关于本文的小编

相关 [ipc me ftp] 推荐:

android跨进程通信(IPC):使用AIDL

- - CSDN博客移动开发推荐文章
AIDL (Android Interface Definition Language) 是一种IDL 语言,用于生成可以在Android设备上两个进程之间进行进程间通信(interprocess communication, IPC)的代码. 如果在一个进程中(例如Activity)要调用另一个进程中(例如Service)对象的操作,就可以使用AIDL生成可序列化的参数.

进程间通信(IPC):共享内存

- - CSDN博客推荐文章
共享内存允许两个不相关的进程访问同一个逻辑内存. 第一个程序创建一个共享内存段,然后把写到它里面的数据都显示出来. 第二个程序将连接一个已有的共享内存段,并允许我们向其中输入数据. After the headers the shared memory segment (the size of our shared memory structure) is created with a call to shmget, with the IPC_CREAT bit specified.

李宇春:Why me

- 海小呆 - 南都周刊-热点新闻
  记者_ 石宴瑜  北京报道.         还是不断有人问起“超女”的话题.   对于这个被问过可能有几百上千遍的问题,李宇春坐直了身子,直视答道:“那是我的历史,这个是不能回避的,可能很多人会觉得不愿提,但我没所谓.   那是一段有关荣耀和汗水的历史,也夹带着青涩、狼狈.   2005年盛夏,一头刺猥般根根竖起的黄色短发,成了“超女”李宇春最引人注目的标签.

用wget同步ftp

- - 天空极速
wget 可以下载整个网站或者ftp. 如果有两个ftp站点,需要同步,可以使用以下命令:. 解释下,前面是ftp的授权用户,密码,ftp的站点,端口. -r 是表示递归,-x表示强制创建目录,-c表示断点续传. Tags - windows , wget , ftp , 备份 , 同步.

ftp自动下载

- - 运维技术的个人空间

FTP之PASV与PORT

- - 行业应用 - ITeye博客
FTP是File Transfer Protocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件. 相比于HTTP,FTP协议要复杂得多. 复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据. FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式.

《Don’t make me think》笔记

- Tizen - 老邓态度
很多年前就看过《Don’t make me think》的第一版,第二版在书架上很久了,这两天才翻看. 某个东西越是需要投入大量时间(或者看起来会这样),它将来用到的可能性越小. 我们使用web的第一个事实:我们不是阅读,而是扫描,一般会关注“与手头任务有关的”或者“当前或接下来的个人兴趣”或者“长久的兴趣,如免费、美女等”这些文字和短语.

Linux下自动FTP脚本

- - ITeye博客
前面写了一个Windows下自动FTP的脚本:. 今天新增Linux下的简单脚本,还待优化. 已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.

Leave Me:比Love You还美的句子

- yalei - 有意思吧
我相信它不是一个广告,它也没得过广告奖. 他在手心写下LEAVE ME. 他在相机的内存里狂奔大叫,告诉端着相机的父亲“请前进. ”当他发觉自己可以选择呆在那一张相片的时间和地点里的时候,其实一切都确定了. 他带着自己的身体踩着相片的时间一路向着她跑过去,向着已经和时间没有关系的他的爱人. 在她死去之后,他不知道可以用它拍什么.

(转)ftp的port和pasv模式

- - 非技术 - ITeye博客
转自:http://hi.baidu.com/xianyang1981/item/20d68be050a50aaccf2d4f8e. 一、ftp的port和pasv模式的工作方式.        FTP使用2个TCP端口,首先是建立一个命令端口(控制端口),然后再产生一个数据端口. 国内很多教科书都讲ftp使用21命令端口和20数据端口,这个应该是教书更新太慢的原因吧.