您的位置:首页 > 编程语言 > PHP开发

FTP工作方式介绍

2012-06-28 08:10 134 查看
本文参考了维基百科中ftp的条目。

FTP server

早期的FTP server都是命令行形式的。后来发展出了图形化ftp工具。常用的有CuteFTP, Filezilla等。

很多linux,solaris都自带ftp工具。

FTP的两个连接

FTP(file transfer protocol) 位于OSI模型的应用程序层,用于传输文件,它是基于TCP/TP的

因此,一个FTP server必须持续运行,并等待来着客户端的请求。建立连接后,客户端可以通过21端口和服务器通信。这个连接被称为“控制连接”(controller connection),该端口在整个会话过程中保持打开。第二个连接,被称为“数据连接”(data connection), 可以是服务器主动打开的20端口(active mode),也可以是一个随机的端口(passive mode)。该连接用于传输数据。

控制连接用于管理会话,例如各种命令,身份验证以及密码在服务器和客户端之间的交换(且基于一种类似telnet的协议)。由于这种双端口的结构,ftp被认为是out-of-band 协议,与http这样的in-band 协议相反。

FTP的两中工作模式

ftp有两种模式,分别为active模式和passive模式。这两种模式都是由ftp client初始化的(决定的),之后由ftp server将使用它们。

主动模式

在主动模式中,data connection永远使用20端口。一般ftp的默认工作方式就是主动模式。

被动模式

在被动模式中,ftp客户端会使用一个Ephemeral Port

此时,客户端会侦听它的ephemeral port + 1,同时通过21端口将port + 1发送给ftp服务器。

例如,如果当前正在使用的ephemeral port是1026, 客户端开始侦听1027端口。一旦完成,ftp server就会建立一个到ftp client 1027端口的连接。

passive模式的意义就在于数据传输使用的端口一直在变化,这样可以绕开一些防火墙。例如防火墙仅放开了21,8080等几个端口(没有打开20端口),被动模式就可以自动找到可用端口并使用。

另外提一点,所谓的Out-of-band就是说控制数据和真正的数据传输是分离的。ftp这样的协议就是使用的out-of-band控制。

匿名连接

很多ftp server都提供匿名连接,用户可以直接使用匿名方式连接上ftp server,当然权限有限。很多时候这种功能是为了软件自动更新。

安全ftp协议

如果我没有记错,ftp传输是明文的。


因此出于安装因素,衍生出了多种安全的ftp协议。主要有:FTPS,SFTP, FTP over SSH 三种。大家自己看wiki吧。



浏览器支持

常用浏览器都支持ftp协议,我们可以使用浏览器查看ftp server上的文件,但一般不支持其他功能如,上传,删除等。对于firefox来说,提供了一个插件fireftp,可以让firefox和ftp客户端一样支持多种操作。

同时浏览器未必支持扩展的ftp协议如ftps等。也就是说如果ftp站点使用的是ftps协议的话,你的浏览器也许就无法访问ftp站点了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: