news 2026/6/13 16:17:52

WebDAV概述、原理、拓展:SMB、ZeroByte

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
WebDAV概述、原理、拓展:SMB、ZeroByte

概述

官网,Web-based Distributed Authoring and Versioning缩写,基于Web的分布式编写与版本管理,GitHub,一种基于HTTP协议的扩展,允许用户通过互联网来管理远程服务器上的文件,可执行文件复制、移动、删除、创建等操作。还支持文件锁定机制,以防止多人同时编辑导致丢失更新的问题。已被广泛应用于多用户协作编辑和文件存储同步。

相关RFC协议:

  • RFC 4918:核心协议,https://datatracker.ietf.org/doc/html/rfc4918
  • RFC 5689:扩展,https://datatracker.ietf.org/doc/html/rfc5689
  • RFC 3744:ACL权限,https://datatracker.ietf.org/doc/html/rfc3744
  • RFC 5842:绑定,https://datatracker.ietf.org/doc/html/rfc5842

设计目标

目标说明
资源创建在服务器上创建新文件/目录
资源修改上传、覆盖、修改服务器文件
资源删除删除服务器上的文件/目录
资源复制/移动COPY、MOVE操作
属性管理读取/设置文件的元数据(创建时间、作者等)
锁定机制防止多用户同时编辑造成冲突(Lock/Unlock)
集合操作批量处理(MKCOL创建集合/目录)

主要功能

  • 文件管理:通过新增HTTP方法,可在远程服务器上执行文件和目录的创建、删除、复制和移动等基本操作;
  • 元数据处理:用户可创建、查询和修改文件的元数据(如作者、创建日期等);
  • 资源锁定:通过LOCK和UNLOCK方法,可以实现对文档的互斥锁或共享锁,避免多人同时修改的冲突;
  • 跨平台兼容:支持多种操作系统和应用,例如Windows文件资源管理器(通过映射网络驱动器)、MacOS Finder、Linux文件浏览器以及许多第三方应用(如Zotero、Notability、WPS等);
  • 安全优势:与FTP等传统协议相比,可利用HTTP/HTTPS的安全特性,并使用单一TCP端口进行通信,从而提供更灵活的安全选项。

工作原理

  • WebDAV服务器:运行在服务器端,负责响应客户端的连接和读写请求;
  • WebDAV客户端:运行在用户设备上的程序,可以是操作系统内置的功能,也可以是第三方应用,用于连接和操作WebDAV服务器上的文件。

HTTP拓展

WebDAV在标准HTTP方法基础上,扩展以下8个新方法:

方法说明类比文件系统操作
PROPFIND查询资源属性(文件名、大小、创建时间等)ls/stat
PROPPATCH批量修改资源属性chmod/touch
MKCOL创建集合(目录)mkdir
DELETE删除资源或集合rm -r
COPY复制资源到目标位置cp
MOVE移动/重命名资源mv
LOCK对资源加锁文件锁
UNLOCK解锁资源文件解锁

WebDAV引入一组多状态响应码:

状态码含义说明
102 Processing处理中扩展状态码,请求正在处理
207 Multi-Status多重状态返回多个资源的状态(PROPFIND使用)
422 Unprocessable Entity无法处理请求格式正确但语义错误
423 Locked资源已锁定无法修改已锁定的资源
424 Failed Dependency依赖失败操作依赖的其他操作失败
507 Insufficient Storage存储不足服务器存储空间不足

原理

WebDAV的请求和响应大量使用XML格式进行结构化数据传输,PROPFIND请求与响应:

PROPFIND /docs/ HTTP/1.1 Host: example.com Depth: 1 Authorization: Basic dXNlcjpwYXNz Content-Type: application/xml; charset="utf-8"<?xml version="1.0" encoding="utf-8" ?><D:propfindxmlns:D="DAV:"><D:prop><D:displayname/><D:getcontentlength/><D:getlastmodified/><D:resourcetype/><D:creationdate/></D:prop></D:propfind>

响应:

HTTP/1.1 207 Multi-Status Content-Type: application/xml; charset="utf-8"<?xml version="1.0" encoding="utf-8" ?><D:multistatusxmlns:D="DAV:"><D:response><D:href>/documents/</D:href><D:propstat><D:prop><D:displayname>Documents</D:displayname><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2024-01-01T00:00:00Z</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response><D:response><D:href>/documents/report.pdf</D:href><D:propstat><D:prop><D:displayname>report.pdf</D:displayname><D:getcontentlength>1048576</D:getcontentlength><D:getlastmodified>Mon, 01 Jan 2024 12:00:00 GMT</D:getlastmodified><D:resourcetype/><D:creationdate>2024-01-01T08:00:00Z</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response></D:multistatus>

Locking,锁定机制,解决多用户同时编辑同一文件的冲突问题:

用户 B用户 A用户 B用户 A锁定文件返回令牌[正在编辑 report.doc...][等待...]上传修改成功解锁完成[文件已更新,版本同步]LOCK report.docLock-TokenPUT report.doc200 OKUNLOCK204 No Content

支持两种锁类型

  • 独占锁:Exclusive,同一时间只有一个用户能编辑
  • 共享锁:Shared,允许多个用户同时编辑

RFC 3744定义WebDAV的访问控制列表(ACL)机制:

<D:acl><D:ace><D:principal><D:href>/principals/users/alice/</D:href></D:principal><D:grant><D:privilege><D:read/></D:privilege><D:privilege><D:write/></D:privilege></D:grant></D:ace><D:ace><D:principal><D:authenticated/></D:principal><D:grant><D:privilege><D:read/></D:privilege></D:grant></D:ace></D:acl>

每个WebDAV资源都有一套关联的属性:

  • DAV:命名空间的死属性:存储在服务器端,不可被服务器解释
属性说明
getcontentlength文件大小
getlastmodified最后修改时间
resourcetype资源类型(文件/集合)
displayname显示名称
creationdate创建日期
getcontenttypeMIME类型
getetag实体标签(用于缓存)
  • 活属性:由服务器动态计算和维护
    • 服务器根据资源内容动态计算,如getcontentlength
    • 每次资源修改后自动更新

完整操作时序图

WebDAV ServerClientWebDAV ServerClient[编辑文件...]OPTIONS / HTTP/1.1 (查询服务器能力)200 OK (DAV: 1, 2)PROPFIND /docs/ (Depth: 1, 浏览目录)207 Multi-Status ([XML: 文件列表和属性])MKCOL /docs/md/ (创建目录)201 Created (Location: /docs/md/)PUT /docs/md/readme.md (上传文件)201 CreatedLOCK /docs/md/readme.md(锁定文件)200 OK (Lock-Token: urn:uuid:xxx)PUT /docs/md/readme.md(更新文件, If: <urn:uuid:xxx>)204 No ContentUNLOCK /docs/md/readme.md(解锁)204 No ContentCOPY /docs/md/ (复制目录,Destination: /docs/md_bak/)201 CreatedMOVE /docs/md/ (重命名目录, Destination: /docs/project_v2/)201 CreatedDELETE /docs/project_v2/ (删除目录)204 No Content

应用

应用场景

  • 远程文件管理:像访问本地硬盘一样管理云存储上的文件;
  • 多人协同编辑:允许多个用户在同一个文档上进行协作;
  • 数据同步:支持将特定应用的数据(如笔记、文献库等)同步到远程WebDAV服务器上。

支持WebDAV的网盘:

  • 国外:Box、Dropbox、teracloud、yandex、TransIP…
  • 国内:坚果云、阿里云盘、123云盘…
  • 私有云:OwnCloud、Seafile、Synology…

某度网盘并不支持WebDAV。

支持WebDAV的应用

  • Zotero:一款文献管理工具
  • PDF Expert:PDF文件阅读工具,使用WebDAV可以直接阅读网盘中的pdf文件
  • 格志日记:手机日记记录app,可以通过WebDAV同步数据
  • 一本日记:同上
  • Notability:iPad上的手写笔记软件,可通过WebDAV导出数据
  • WPS:可通过WebDAV访问网盘的办公文档
  • 纯纯写作:支持Markdown的写作软件
  • Solid Explorer、ES文件管理器:支持WebDAV的手机文件管理器
  • joplin:支持全平台的Markdown编辑器
  • keepass:支持WebDAV的密码管理器
  • 专注笔记:支持全平台强化编辑功能的的笔记软件
  • Tampermonkey:使用WebDAV同步油猴脚本
  • Enpass:知名的全平台密码管理应用
  • 沙拉词典:浏览器插件,支持多种翻译引擎,WebDAV同步生词本
  • 静读天下:支持多种电子书籍格式的阅读软件
  • Floccus:解决不同浏览器书签同步
  • 麻雀记:一款功能丰富的个人笔记应用,可以使用看板,标签以及四象等功能来实现多类型笔记记录
  • 薄荷记账:一款支持WebDAV同步的记账软件
  • 那样记账:同上
  • MWeb:专业Markdown写作软件
  • 卡片日记:以卡片为概念的日记应用
  • 书伴:一款支持OCR文本识别功能的书籍管理应用
  • Nova Launcher:经典Android桌面启动应用
  • Documents:iOS平台支持WebDAV的文件管理工具

协议扩展

WebDAV有两大重要扩展标准,广泛用于日历和联系人同步。

CalDAV

参考RFC 4791,基于WebDAV的日历扩展协议,允许客户端通过HTTP访问、管理和同步远程服务器上的日历数据,并使用iCalendar格式存储事件信息。支持多用户共享、搜索和跨设备同步,常用于Apple Calendar、Thunderbird、Google Calendar等应用。

核心HTTP方法

  • OPTIONS:查询服务器支持的功能
  • PROPFIND:获取资源及属性(如ctagsynctoken
  • REPORT:批量获取资源详情或增量数据
  • PROPPATCH:修改或删除资源属性
  • PUT:创建或更新日历事件
  • MKCALENDAR:创建日历集合(部分服务不支持)
  • DELETE:删除日历或事件

同步机制

  • 全量同步:PROPFIND获取所有事件的href和etag,再用REPORT拉取详情
  • 增量同步:利用ctag判断日历集合是否变化,变化时用synctoken+REPORT拉取更新
  • etag:标识单个事件唯一性
  • ctag:标识日历集合变化
  • synctoken:支持增量同步的游标

Google CalDAV特性

  • 支持GET、PUT、DELETE、PROPFIND、PROPPATCH、REPORT等
  • 不支持MKCALENDAR、VTODO、VJOURNAL、忙闲查询
  • 连接需HTTPS+OAuth 2.0认证

部分客户端

兼容客户端说明
macOS日历原生支持CalDAV
iOS日历原生支持CalDAV
Thunderbird Lightning插件支持
Evolution(Linux)原生支持
Google Calendar部分支持(通过GData API)
Microsoft Outlook需第三方插件

CardDAV

参考RFC 6352,旨在提供一个开放、标准化的方式来管理个人和共享的地址簿数据,存储vCard格式联系人信息。

协议对比矩阵

维度WebDAVSFTPFTP/SNFSSMB/CIFS
协议基础HTTPSSHFTPTCP/IPSMB
默认端口80/4432221/9902049445/139
穿越防火墙✅极易⚠️需开放22⚠️多端口❌困难⚠️困难
加密传输HTTPS(TLS)内置SSHFTPS/TLS❌/SSHSMB3加密
文件锁定✅LOCK/UNLOCK✅SMBLock
属性管理✅PROPFIND⚠️基础⚠️基础⚠️基础
目录列举✅PROPFIND
目录操作✅MKCOL⚠️有限
版本控制⚠️DeltaV扩展
Web直连✅浏览器可访问
原生系统支持macOS/WindowsLinux/macOS全平台Linux/Unix全平台
速度中等中等中等最快
NAT友好⚠️

SMB

Server Message Block,服务器消息块,一种网络协议,用于在计算机之间共享文件、打印机、串口等资源。最初由IBM的贝瑞·费根鲍姆(Barry Feigenbaum)开发,旨在将DOS操作系统中的本地文件接口改造为网络文件系统。

通过SMB协议,客户端应用程序可在各种网络环境下读写服务器上的文件,并对服务器程序提出服务请求。应用程序还可访问远程服务器端的文件、打印机、邮件槽和命名管道等资源。

SMB协议最初设计在NetBIOS协议上运行,而NetBIOS本身则运行在NetBEUI、IPX/SPX或TCP/IP协议上。微软对SMB协议进行多次改进,1996年,微软将SMB改名为CIFS(Common Internet File System,通用互联网文件系统),并加入许多新功能,如符号链接、硬链接和提高文件大小等。

SMB协议有多个版本:

  • SMB 1.0:最初版本,存在传输效率低和传输空间小等缺陷;
  • SMB 2.0:在1.0基础上改进文件传输效率、文件缓存空间和文件并发传输等问题;
  • SMB 3.0:在Windows Server 2012和Windows 8中引入,极大提升性能、可靠性和安全性。

目前最常用的局域网共享协议。

NFS

Network File System,一种分布式文件系统协议,目前主要应用于Linux系统服务。

ZeroByte

官网,开源(GitHub,6.5K Star,165 Fork)自动化备份工具,基于Restic构建,支持跨多个存储后端保存数据。提供现代化的Web界面,用于安排、管理和监控远程存储的加密备份; 支持从NFS、SMB、WebDAV或本地目录等方式进行备份。

实战

modprobe fuse

把FUSE功能所需的内核模块加载进内存,使系统支持FUSE文件系统。

基于Docker Compose部署,docker-compose.yaml示例:

services:zerobyte:image:ghcr.io/nicotsx/zerobyte:v0.22container_name:zerobyterestart:unless-stoppedcap_add:-SYS_ADMINports:-"4096:4096"devices:-/dev/fuse:/dev/fuseenvironment:-TZ=Asia/Shanghai# Set your timezone herevolumes:-/etc/localtime:/etc/localtime:ro-/var/lib/zerobyte:/var/lib/zerobyte-~/.config/rclone:/root/.config/rclone-/backup/zerobyte:/mydata

rclone.conf配置文件示例:

[m4webdav] type = webdav url = http://192.168.31.222:25000 vendor = rclone

RaiDrive

目前在国内支持WebDAV的网盘非常非常少,懂得都懂。可通过自建网盘,实现WebDAV服务。

将支持WebDAV网盘映射为本地磁盘的工具,轻松地在本地安装FTP、WebDAV、OneDrive、Dropbox和其他网络磁盘,并将其转换为本地硬盘使用。通过RaiDrive,可更好地利用支持WebDAV的网盘,或将常见的网络硬盘映射到本地磁盘上来使用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/13 16:16:52

深入解析MC68881/68882浮点协处理器:IEEE 754标准与硬件指令集实现

1. 项目概述&#xff1a;深入MC68881/68882浮点协处理器指令集与IEEE 754实现 如果你在80年代末到90年代初接触过基于Motorola 68000系列处理器的系统&#xff0c;比如早期的Macintosh、Amiga、Atari ST&#xff0c;或者一些工作站和嵌入式控制系统&#xff0c;那么你很可能直接…

作者头像 李华
网站建设 2026/6/13 16:11:51

简单三步解决Realtek 8922AE WiFi 7网卡在Linux上的驱动问题

简单三步解决Realtek 8922AE WiFi 7网卡在Linux上的驱动问题 【免费下载链接】rtw89 Driver for Realtek 8852AE, an 802.11ax device 项目地址: https://gitcode.com/gh_mirrors/rt/rtw89 你是否在Linux系统上遇到了Realtek 8922AE WiFi 7网卡无法正常工作的问题&#…

作者头像 李华
网站建设 2026/6/13 16:10:51

BetterNCM-Installer快速指南:5分钟掌握网易云音乐插件一键安装

BetterNCM-Installer快速指南&#xff1a;5分钟掌握网易云音乐插件一键安装 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 还在为网易云音乐功能不足而烦恼吗&#xff1f;BetterNCM-I…

作者头像 李华
网站建设 2026/6/13 16:06:21

2026年AI写作辅助网站全景评测:这5款工具如何提升论文写作效果

从文献阅读到论文成稿&#xff0c;现代学术写作已经进入智能协作新时代。本文将带你了解当前最实用的 5 款 AI 写作工具&#xff0c;助你构建高效的科研工作流。 深夜的实验室里&#xff0c;键盘敲击声此起彼伏。作为即将毕业的博士生&#xff0c;我深知论文写作的艰辛&#xf…

作者头像 李华
网站建设 2026/6/13 16:06:19

Vue轻量级DXF图纸在线预览项目,含完整构建配置与部署脚本

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;一个基于Vue 3构建的DXF文件前端查看器开源项目&#xff0c;开箱即用&#xff0c;支持本地启动&#xff08;npm run serve&#xff09;和生产打包&#xff08;npm run build&#xff09;。项目结构清晰&#xf…

作者头像 李华