RFC 2518
RFC 2518 — это документ, опубликованный в феврале 1999 года Инженерным советом Интернета (IETF), который определяет расширение протокола HTTP для поддержки распределённой авторизации и управления версиями веб-ресурсов. Полное название документа — «HTTP Extensions for Distributed Authoring — WEBDAV». RFC 2518 лёг в основу протокола WebDAV (Web Distributed Authoring and Versioning), который позволяет пользователям совместно редактировать и управлять файлами на удалённых веб-серверах, используя стандартные HTTP-методы и расширяя их новыми возможностями. Документ был разработан рабочей группой IETF WebDAV и стал первым стандартом в этой области, заменив более ранние черновики.
История
Предпосылки создания
До появления WebDAV веб-серверы в основном предоставляли доступ к статическим документам через HTTP-запросы GET и POST. Пользователи могли просматривать веб-страницы, но не могли редактировать их напрямую на сервере без использования специализированных протоколов (например, FTP) или серверных скриптов. Это ограничивало возможности совместной работы над документами, особенно в корпоративных и образовательных средах.
В середине 1990-х годов возникла потребность в стандартизированном способе управления содержимым веб-сайтов. Разработчики из компаний, таких как Microsoft, Netscape и Novell, начали обсуждать расширения HTTP, которые позволили бы блокировать файлы для редактирования, получать метаданные и управлять коллекциями ресурсов. В 1996 году была сформирована рабочая группа IETF WebDAV, которая и подготовила RFC 2518.
Публикация и развитие
RFC 2518 был опубликован в феврале 1999 года как Proposed Standard (предлагаемый стандарт). Он определил базовые методы и свойства для распределённой авторизации, но не включал поддержку версионирования (управления версиями), которая была вынесена в отдельные документы (например, RFC 3253). После публикации RFC 2518 протокол WebDAV получил широкое распространение: он был реализован в веб-серверах Apache (через модуль mod_dav), Microsoft IIS, а также в клиентских приложениях, таких как Microsoft Windows (начиная с Windows 2000), macOS (через Finder) и различных файловых менеджерах.
В 2007 году RFC 2518 был заменён на RFC 4918, который уточнил и расширил спецификацию, исправив ошибки и добавив новые возможности, такие как поддержка заголовка Depth и улучшенная обработка ошибок. Однако RFC 2518 остаётся исторически важным документом, заложившим основы протокола.
Основные положения RFC 2518
Расширения HTTP-методов
RFC 2518 вводит несколько новых HTTP-методов, которые дополняют стандартные GET, PUT, DELETE и POST:
- PROPFIND — используется для получения свойств ресурса (например, даты создания, размера, типа) и структуры коллекций. Позволяет запрашивать как отдельные свойства, так и все сразу.
- PROPPATCH — применяется для изменения свойств ресурса, таких как имя, описание или права доступа.
- MKCOL — создаёт коллекцию (аналог каталога на веб-сервере). В отличие от PUT, который создаёт файл, MKCOL создаёт структуру для хранения других ресурсов.
- COPY — копирует ресурс или коллекцию на сервере, указывая целевой URI.
- MOVE — перемещает ресурс или коллекцию на сервере, что эквивалентно копированию с последующим удалением исходного.
- LOCK — устанавливает блокировку на ресурс, предотвращая его изменение другими пользователями до снятия блокировки.
- UNLOCK — снимает блокировку с ресурса.
Блокировки (Locking)
Одной из ключевых функций RFC 2518 является механизм блокировок, который обеспечивает эксклюзивный или разделяемый доступ к ресурсам. Блокировки предотвращают конфликты при одновременном редактировании. RFC 2518 определяет два типа блокировок:
- Эксклюзивная блокировка — ресурс может редактировать только владелец блокировки. Другие пользователи могут только читать его.
- Разделяемая блокировка — несколько пользователей могут одновременно редактировать ресурс, если они согласовали свои действия. Однако сервер может ограничить количество одновременных блокировок.
Блокировки могут быть временными (с указанием срока действия) или постоянными (до явного снятия). RFC 2518 также вводит понятие «токена блокировки» — уникального идентификатора, который клиент передаёт в запросах для подтверждения права на изменение.
Свойства (Properties)
RFC 2518 определяет систему свойств для ресурсов. Свойства делятся на два типа:
- Живые свойства (live properties) — вычисляются сервером динамически (например, дата последнего изменения, размер, тип MIME).
- Мёртвые свойства (dead properties) — задаются пользователем и хранятся вместе с ресурсом (например, автор, описание, ключевые слова).
Свойства представляются в формате XML и могут быть запрошены через PROPFIND или изменены через PROPPATCH. Это позволяет клиентам получать метаданные без загрузки всего содержимого ресурса.
Коллекции (Collections)
RFC 2518 вводит понятие коллекции — ресурса, который может содержать другие ресурсы (аналогично каталогу в файловой системе). Коллекции создаются с помощью метода MKCOL и могут быть вложенными. Для навигации по коллекциям используется метод GET, который возвращает список членов коллекции в формате HTML или XML. Коллекции поддерживают те же операции (COPY, MOVE, LOCK), что и обычные ресурсы.
Формат сообщений
Все запросы и ответы в RFC 2518 используют XML для структурирования данных. Например, запрос PROPFIND включает XML-тело, в котором перечислены запрашиваемые свойства, а ответ содержит их значения. Это обеспечивает гибкость и расширяемость, но также увеличивает размер сообщений по сравнению с простыми HTTP-запросами.
Применение
Совместная работа над документами
Основное применение RFC 2518 — организация распределённой авторизации, то есть совместного редактирования документов на веб-серверах. Протокол WebDAV, основанный на RFC 2518, используется в системах управления контентом (CMS), таких как SharePoint (Microsoft), и в облачных хранилищах, например, Nextcloud и ownCloud. Пользователи могут монтировать WebDAV-ресурсы как сетевые диски, редактировать файлы в офисных приложениях и сохранять изменения непосредственно на сервере.
Управление версиями
Хотя RFC 2518 не включает собственно версионирование, он стал основой для последующих стандартов, таких как RFC 3253 (Versioning Extensions to WebDAV), которые добавляют поддержку управления версиями. Это позволяет отслеживать изменения в документах, откатывать их к предыдущим состояниям и вести историю правок.
Интеграция с операционными системами
RFC 2518 реализован в качестве стандартного протокола для доступа к файлам в Windows (через службу WebDAV Redirector) и macOS (через Finder). Пользователи могут подключать WebDAV-серверы как сетевые диски, что упрощает работу с удалёнными файлами без использования дополнительных клиентов.
Критика и ограничения
Сложность реализации
RFC 2518 критикуется за сложность реализации по сравнению с базовым HTTP. Необходимость обработки XML-сообщений, управления блокировками и поддержки коллекций требует значительных усилий от разработчиков. Многие веб-серверы реализуют лишь подмножество функций WebDAV, что может приводить к несовместимости между клиентами и серверами.
Производительность
Использование XML для всех запросов и ответов увеличивает объём передаваемых данных и нагрузку на сервер. Для операций с большим количеством файлов (например, копирование целых коллекций) WebDAV может быть менее эффективным, чем специализированные протоколы, такие как FTP или SMB.
Безопасность
RFC 2518 не определяет механизмов аутентификации и шифрования, полагаясь на стандартные HTTP-методы (Basic, Digest, NTLM). При использовании без HTTPS пароли могут передаваться в открытом виде. Кроме того, блокировки могут быть использованы для атак типа «отказ в обслуживании» (DoS), если злоумышленник устанавливает эксклюзивные блокировки на критически важные ресурсы.
Замена на RFC 4918
В 2007 году RFC 2518 был заменён на RFC 4918, который исправил многие ошибки и неоднозначности. В частности, RFC 4918 уточнил поведение блокировок, добавил поддержку заголовка Depth для PROPFIND и улучшил обработку ошибок. Тем не менее, RFC 2518 остаётся важным историческим документом, который заложил основы для современных систем совместной работы.
Интересные факты
- RFC 2518 был одним из первых стандартов IETF, который активно использовал XML для структурирования данных в HTTP-запросах, что повлияло на последующие протоколы, такие как SOAP и XML-RPC.
- Разработка RFC 2518 велась в тесном сотрудничестве с компанией Microsoft, которая реализовала WebDAV в своих продуктах (например, в SharePoint и Internet Information Services).
- Несмотря на замену на RFC 4918, многие старые реализации WebDAV до сих пор ссылаются на RFC 2518, что может вызывать проблемы совместимости с новыми клиентами.
Источники
- RFC 2518 — HTTP Extensions for Distributed Authoring — WEBDAV (февраль 1999)
- RFC 4918 — HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV) (июнь 2007)
- IETF WebDAV Working Group — официальные документы и протоколы
- «WebDAV: Next Generation Collaborative Web Authoring» — статья в журнале IEEE Internet Computing (2000)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →