Рабочая группа IETF WebDAV
WebDAV (от англ. Web Distributed Authoring and Versioning — «веб-распределённое создание и управление версиями») — это расширение протокола HTTP, определяющее набор методов и заголовков для коллективного редактирования файлов и управления документами на удалённых веб-серверах. Разработка спецификации велась под эгидой Инженерного совета Интернета (IETF) в рамках рабочей группы, официально именуемой WebDAV Working Group. Данная группа была сформирована в 1996 году и завершила свою активную деятельность в 2007 году после публикации основного набора стандартов.
История создания
Предпосылки и формирование группы
К середине 1990-х годов HTTP стал основным протоколом для передачи гипертекста, однако его возможности для управления файлами ограничивались операциями чтения (GET) и простой загрузки (POST/PUT). Для совместной работы над документами — редактирования, перемещения, блокировки и управления версиями — требовались дополнительные механизмы. Инициатива по созданию такого расширения была выдвинута Джимом Уайтхедом (Jim Whitehead) и другими участниками сообщества IETF.
В 1996 году была сформирована рабочая группа IETF WebDAV. Её целью стало создание стандарта, который бы позволял веб-браузерам и клиентским приложениям выполнять операции, характерные для файловых систем, непосредственно через HTTP. Группа работала в рамках направления «Прикладные области» (Applications Area) IETF.
Основные этапы работы
- 1996 год: Формирование рабочей группы. Первые черновики спецификации.
- 1998 год: Публикация черновика RFC 2291 («Requirements for a Distributed Authoring and Versioning Protocol for the World Wide Web»), определившего функциональные требования.
- 1999 год: Выход RFC 2518 («HTTP Extensions for Distributed Authoring — WEBDAV»), который стал основой протокола. В нём были определены новые методы (PROPFIND, PROPPATCH, MKCOL, MOVE, COPY, LOCK, UNLOCK) и расширения заголовков.
- 2002 год: Публикация RFC 3253 («Versioning Extensions to WebDAV») — расширение для управления версиями. Работа над ним велась параллельно с основным стандартом.
- 2007 год: Публикация RFC 3744 («Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol») — расширение для контроля доступа. После этого группа завершила активную работу, передав поддержку стандарта в ведение других рабочих групп IETF (например, CalDAV и CardDAV).
Состав и методология
Рабочая группа WebDAV была открытой и включала представителей ведущих IT-компаний того времени: Microsoft, Netscape, IBM, Xerox, Sun Microsystems, а также независимых разработчиков и академических исследователей. Работа велась через почтовые рассылки и очные встречи (обычно в рамках конференций IETF). Решения принимались на основе консенсуса (rough consensus), что характерно для IETF. Ключевыми редакторами спецификаций выступили Джим Уайтхед, Юэн Голдман (E. James Whitehead, Jr.), Джон Штайн (John Stein) и другие.
Основные спецификации
Рабочая группа WebDAV разработала и опубликовала серию RFC (Request for Comments), которые составляют ядро протокола.
RFC 2518 — базовый протокол WebDAV
Этот документ (1999 год) определил фундаментальные расширения HTTP:
- Новые методы HTTP: PROPFIND (получение свойств ресурса), PROPPATCH (изменение свойств), MKCOL (создание коллекции — аналога папки), MOVE (перемещение), COPY (копирование), LOCK (блокировка), UNLOCK (снятие блокировки).
- Понятие коллекции: Ресурс, который может содержать другие ресурсы (аналог каталога файловой системы).
- Свойства ресурсов: Метаданные, прикрепляемые к файлам или коллекциям (например, автор, дата создания, тип содержимого).
- Механизм блокировок: Предотвращение одновременного редактирования одного файла несколькими пользователями. Поддерживались эксклюзивные и разделяемые блокировки.
- Расширения DAV: Заголовок
DAV, указывающий на поддержку протокола сервером.
RFC 3253 — управление версиями
Дополнение (2002 год), которое вводило:
- Системы управления версиями: Возможность сохранять историю изменений файлов, откатываться к предыдущим версиям.
- Рабочие пространства (workspaces): Изолированные копии репозитория для разработки.
- Операции слияния: Базовые механизмы объединения изменений из разных веток.
- Новые методы: VERSION-CONTROL, REPORT, CHECKOUT, CHECKIN, UNCHECKOUT, MERGE.
RFC 3744 — контроль доступа
Расширение (2007 год) для управления правами пользователей:
- Принципалы (principals): Пользователи или группы, которым назначаются права.
- ACE (Access Control Entries): Записи, определяющие, какие операции (чтение, запись, блокировка) разрешены или запрещены для конкретного принципала.
- ACL (Access Control Lists): Списки таких записей, прикреплённые к ресурсам.
Дополнительные RFC
- RFC 4709 (2006): «Mounting WebDAV Servers» — описание механизма автоматического монтирования WebDAV-ресурсов в операционных системах.
- RFC 4918 (2007): Обновление RFC 2518 — исправление ошибок, уточнение семантики, добавление новых свойств (например,
DAV:quota-available-bytes). Этот RFC заменил RFC 2518 и стал актуальным базовым стандартом.
Архитектура и принципы работы
Модель клиент-сервер
WebDAV работает по классической клиент-серверной модели поверх HTTP/1.1. Клиент (например, веб-браузер, файловый менеджер, текстовый редактор) отправляет HTTP-запросы с расширенными методами. Сервер (например, Apache с модулем mod_dav, Nginx с модулем ngx_http_dav_module, Microsoft IIS) обрабатывает эти запросы, выполняя операции над файловой системой или специализированным хранилищем.
Ключевые понятия
- Ресурс: Любой объект, доступный по URL (файл, изображение, документ).
- Коллекция: Ресурс, который может содержать другие ресурсы. Идентифицируется URL, заканчивающимся на
/. Аналог каталога. - Свойства (properties): Метаданные ресурса, представленные в формате XML. Каждое свойство имеет имя (пространство имён + локальное имя) и значение. Примеры:
DAV:getcontentlength(размер файла),DAV:creationdate(дата создания). - Блокировка (lock): Временное ограничение доступа к ресурсу для предотвращения конфликтов. Блокировка может быть эксклюзивной (только один клиент может редактировать) или разделяемой (несколько клиентов могут одновременно редактировать, но с согласованием).
- Состояние ресурса: Ресурс может находиться в разных состояниях (например, «заблокирован», «не заблокирован»), что влияет на допустимые операции.
Пример взаимодействия
- Клиент отправляет запрос
PROPFIND /documents/ HTTP/1.1для получения списка файлов в коллекции/documents/. - Сервер отвечает XML-документом, содержащим URL и свойства каждого ресурса (например,
D:getcontenttype,D:getlastmodified). - Клиент выбирает файл
report.docxи отправляет запросLOCK /documents/report.docx HTTP/1.1с XML-телом, указывающим тип блокировки. - Сервер возвращает токен блокировки (lock token) в заголовке
Lock-Token. - Клиент редактирует файл и отправляет запрос
PUT /documents/report.docx HTTP/1.1с заголовкомIf: (<lock token>). - После завершения клиент отправляет
UNLOCK /documents/report.docx HTTP/1.1для снятия блокировки.
Применение
Совместная работа с документами
WebDAV широко использовался в системах управления контентом (CMS) и корпоративных порталах. Например:
- Microsoft SharePoint (организация признана иноагентом в РФ) — использует WebDAV для доступа к документам через проводник Windows.
- Apache Jackrabbit — реализация WebDAV для Java-приложений.
- ownCloud / Nextcloud — облачные платформы, предоставляющие доступ к файлам через WebDAV.
Файловые менеджеры и операционные системы
- Windows: Проводник поддерживает WebDAV как сетевой диск (через протокол WebDAV Redirector).
- macOS: Finder может монтировать WebDAV-ресурсы как сетевые тома.
- Linux: Многие дистрибутивы поддерживают монтирование через
davfs2.
Разработка и веб-серверы
- Apache HTTP Server: Модуль
mod_dav(включён в стандартную поставку) реализует базовый WebDAV. - Nginx: Модуль
ngx_http_dav_module(ограниченная реализация, не поддерживает блокировки и управление версиями). - Microsoft IIS: Встроенная поддержка WebDAV.
Ограничения и критика
- Сложность реализации: Полная реализация WebDAV (с управлением версиями и контролем доступа) требует значительных усилий. Многие серверы поддерживают только базовый набор методов.
- Производительность: XML-формат свойств и блокировок может приводить к избыточности данных и снижению скорости, особенно при большом количестве мелких файлов.
- Безопасность: Базовый WebDAV не шифрует данные (используется HTTP). Для безопасной передачи требуется HTTPS (HTTP over TLS). Кроме того, механизмы аутентификации (Basic, Digest) могут быть уязвимы.
- Конкуренция: С развитием RESTful API, JSON и облачных хранилищ (например, Google Drive, Яндекс.Диск) WebDAV утратил доминирующую роль. Тем не менее, он остаётся стандартом для многих корпоративных систем и встроенных решений.
Наследие и влияние
Рабочая группа IETF WebDAV заложила основы для более специализированных протоколов:
- CalDAV (RFC 4791) — расширение для управления календарями (на базе WebDAV).
- CardDAV (RFC 6352) — расширение для управления адресными книгами.
- DeltaV (RFC 3253) — управление версиями, которое повлияло на системы контроля версий (например, Subversion использует WebDAV как транспортный протокол).
Хотя группа прекратила активную работу в 2007 году, разработанные ею спецификации остаются актуальными. WebDAV поддерживается во многих современных продуктах, включая облачные хранилища (ownCloud, Nextcloud) и веб-серверы. Протокол продолжает использоваться в корпоративной среде и образовательных учреждениях для организации совместного доступа к файлам.
Источники
- RFC 2518 — HTTP Extensions for Distributed Authoring — WEBDAV (1999).
- RFC 4918 — HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV) (2007).
- RFC 3253 — Versioning Extensions to WebDAV (2002).
- RFC 3744 — Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol (2007).
- Whitehead, J. (1997). «WebDAV: IETF Standard for Collaborative Authoring on the Web». IEEE Internet Computing.
- Документация Apache HTTP Server — модуль mod_dav.
- Документация Microsoft IIS — поддержка WebDAV.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →