返回信息流FTP看样子相当深入人心了。我们北理有个FTP联盟(简称“联盟”),人们用FTP架设自己的文件服务器,共享资源。FTP服务器架设也很容易(装个软件,稍微配置就能用了)。但是我也发现一些问题:
- 不能用代理。用socks当然可以,但是代理起不到缓存的作用。
- 字符集没有在协议里规定,需要预先知道。我见过有的FTP服务器上,文件的文件名(是文件名,不是内容)既有gb2312也有utf8,连接的时候设置哪个都会出错。
- 不安全,明文认证。当然,SFTP可以解决这个问题。
- 有状态。需要登录,然后切换目录,然后列举目录,然后设置模式,然后下载文件。这样,即使下载一个文件,也要很长的一系列对话,才能开始下载,延迟大的时候影响很大。
HTTP就好很多
+ 专用的HTTP代理,很成熟也很普遍。可以在某些有墙(指的是普通的公司用的防火墙,也可以是某种特殊的墙)的地方用。
+ 可以在HTTP头Content-Type中定义编码。
+ 可以使用SSL加密、认证,或者用cookie保存会话信息。
+ 一个HTTPRequest过去,服务器就知道给你什么文件了。而且,HTTP1.1可以Keep Alive,下载多个小文件也不需要建立多个TCP连接。
但是,用在文件传输这种业务上,我们需要协议支持以下功能:
* 浏览功能。不只是下载文件,还要浏览目录里有哪些文件。
* 文件上传。文件服务器不止是要下载,还要上传。
* 断点续传。传送大文件的时候,不能保证每次都成功。在故障之后要求从停止的地方继续传。
* 身份认证。根据权限限制行为。比如有的只能浏览,有的只能下载,有的可以上传。
** 以上几个功能都必须用标准的协议完成。一方面,便于专用的客户端软件操作。比如,我弄个FileZilla软件(假如它支持HTTP吧),同样的界面,可以对不同的文件服务器登录、浏览、下载、上传、续传。而不是每个网站都只提供人类可读的HTML页面,要求人去点击下载,用搜索框浏览,甚至编程操作还必须解析HTML。另一方面,可以支持:写一个脚本,无人值守地,就可以操作任意多个服务器。
我了解过WebDAV可以完成以上功能。维基百科说:WebDAV扩展了HTTP协议,提供更多的Method,可以浏览目录(PROPFIND),创建目录(MKCOL),以及拷贝(COPY)、移动(MOVE)文件。
除了协议以外,还需要有实现,才能将其应用。Apache HTTPD服务器支持WebDAV。客户端方面,Linux下,Nautilus内置WebDAV支持,Windows资源管理器也支持。
进一步地说,如果要很好地替代FTP,WebDAV的实现还必须:
- 服务器容易配置。要知道用户只关心文件共享,并不是很在意HTML网页的发布。一个专用的服务器(以及比较直观的人机界面)是较为理想的。我印象中FileZilla Server算是比较容易配置的(如果它不仅仅是FTP服务器的话)。具体的说,界面能直观地操作以下几方面,就比较好:
- 设置一个或多个本地目录,在网上共享
- 组织对网络公开的虚拟目录结构
- 配置访问控制
- 基于用户或者IP地址的流量限制
- 客户端需要一个类似传统FTP客户端的界面。Nautilus更像一个文件管理器,它关注与桌面的整合性,但是不是专门为文件传输设计的,不像FileZilla Client。客户端应至少包括以下功能:
- 服务器收藏夹。储存一系列经常使用的服务器,以及保存用户名和密码。
- 明确地管理连接。要让用户知道目前正在从那些服务器下载、上传文件,进度如何。当然,既然HTTP是无连接的,“连接”服务器就不必了。
- 断点续传。下载任务可以随时暂停、继续。
下面,就需要推荐一些好用的WebDAV服务器和客户端了。我只接触过Apache HTTPD和Nautilus,所以这里只能抛砖引玉了。听听大家的意见。
这是一条镜像帖。来源:北邮人论坛 / www-technology / #12080同步于 2011/1/1
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖
[集智]如何用HTTP(WebDAV?)代替FTP?
wks
2011/1/1镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
你好《我想问下,如果这个webdav移植到嵌入式设备中可否,而且需要apche2支持么???因为嵌入式设备内存很大限制,不知可否建立webdav服务器
[ema0]