840 likes | 1.04k Views
分散オーサリング/バージョニング プロトコル. WebDAV. TUNEBiZ.Net 早川 仁 hayakawa@tunebiz.net cz8cb01@linux.or.jp. はじめに. UNIX は米国およびその他の国における米国 X/Open, Inc. の登録商標です。 Linux は Linus Torvalds 氏の米国およびその他の国における登録商標あるいは商標です。 X Window System は X Consortium, Inc. の商標です。 その他、記載されている会社名、製品名は各社の登録商標または商標です。
E N D
分散オーサリング/バージョニング プロトコル WebDAV TUNEBiZ.Net早川 仁hayakawa@tunebiz.netcz8cb01@linux.or.jp
はじめに • UNIX は米国およびその他の国における米国X/Open, Inc.の登録商標です。 • Linux はLinus Torvalds 氏の米国およびその他の国における登録商標あるいは商標です。 • X Window System は X Consortium, Inc.の商標です。 • その他、記載されている会社名、製品名は各社の登録商標または商標です。 • 本資料の著作権は早川 仁に帰属します。
WebDAVとは? • Web-based Distributed Authoring and Versioning • 略してWebDAV • 時にはDAVとも呼ばれる • RFC2518(HTTP Extensions for Distributed Authoring -- WEBDAV)
WebDAVの目標 • 分散オーサリングを実現するためにHTTPを拡張 • Webを書き込み可能なメディアにする • HTMLやイメージファイルだけではなく、あらゆる種類のファイルを対象 • コラボレーションツールとしての利用も考慮
Acrobat5におけるコラボレーションの例 • DAVサーバ上のPDFファイルを開いて注釈を追加
WebDAVの例 HTTPの例 WebDAVサーバ(Webサーバ) Webサーバ WebDAVプロトコル HTTPプロトコル WebDAVクライアント Webブラウザ WebDAV概要(1/4)-プロトコル • WebDAVはプロトコル • サーバとクライアント間の通信の取り決め • 特定のアプリケーションの名前ではない
WebDAV HTTP WebDAV概要(2/4)-HTTPの拡張 • WebDAVはHTTP/1.1の拡張 • HTTP/1.1にメソッドを追加 • HTTPの特徴をそのまま引き継ぐ • 認証と暗号化 • プロキシ/ファイアウォール • 世界中からアクセス可能
WebDAV概要(3/4)-追加されたメソッド • HTTP/1.1(RFC2616) • OPTIONS/GET/HEAD/POST • TRACE/CONNECT • DELETE/PUT • WebDAV(RFC2518) • COPY/MOVE/MKCOL • PROPFIND/PROPPATCH • LOCK/UNLOCK
XMLデータ XMLデータ XMLデータ WebDAVサーバ WebDAV概要(4/4)-XML • 通信データフォーマットにXMLを使用 • パーサの利用により、OS・言語に依存しない • 未知の要素は単純に無視される クライアント サーバ Libxmlexpat XML::Parser XMLパーサ Perl C言語
HTTPの通信 • HTTP通信例 GET / HTTP/1.1 Accept: */* Accept-Language: ja Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; NetCaptor 6.5.0B4) Host: 192.168.10.5 Connection:Keep-Alive 送信 HTTP/1.1 200 OK Date: Wed, 16 May 2001 10:53:37 GMT Server: Apache/1.3.14 (Unix) (Red-Hat/Linux) mod_ssl/2.7.1 OpenSSL/0.9.5a DAV/1.0.2 PHP/4.0.1pl2 mod_perl/1.24 Last-Modified: Wed, 18 Oct 2000 22:31:33 GMT Accept-Ranges: bytes Content-Length: 2890 Content-Type: text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <TITLE>Test Page for the Apache Web Server on Red Hat Linux</TITLE> </HEAD> <!-- Background white, links blue (unvisited), navy (visited), red (active) --> 受信 HTML
WebDAVの通信 • WebDAV通信例 PROPFIND /DAV/Readme.txt HTTP/1.1 Accept-Language: ja,en-us;q=0.2 Content-Type: text/xml Content-Length: 380 Depth: 1 User-Agent: Microsoft Data Access Internet Publishing Provider DAV 1.1 Host: 192.168.10.5 送信 HTTP/1.1 207 Multi-Status Date: Wed, 16 May 2001 10:25:31 GMT Server: Apache/1.3.14 (Unix) (Red-Hat/Linux) mod_ssl/2.7.1 OpenSSL/0.9.5a DAV/1.0.2 PHP/4.0.1pl2 mod_perl/1.24 MS-Author-Via: DAV Keep-Alive: timeout=15, max=99 Content-Type: text/xml; charset="utf-8” <?xml version="1.0" encoding="utf-8"?> <D:multistatus xmlns:D="DAV:"> <D:response xmlns:lp0="DAV:" xmlns:lp1="http://apache.org/dav/props/"> <D:href>/DAV/Readme.txt</D:href> <D:propstat><D:prop> <lp0:creationdate>2001-05-02T06:35:45Z</lp0:creationdate> <lp0:getcontentlength>3199</lp0:getcontentlength> <lp0:getlastmodified>Wed, 02 May 2001 06:35:45 GMT</lp0:getlastmodified> 受信 XML
WebDAVが提供する機能 • リソースとコレクションの管理 • プロパティ管理 • 上書きの保護
リソース管理(1/6)-リソースとは • Resorce = 資源 • コレクション内にあるファイルなど リソース
リソース管理(2/6)-取得と登録 • リソースの登録、コピー、移動、削除が可能 取得(GET) 登録(PUT) Server Server GET Client Client PUT
リソース管理(3/6)-移動と削除 • リソースの移動と削除 移動(MOVE)(コピー(COPY)も同様) 削除(DELETE) Server Server Client MOVE Client DELETE
DAV foo bar コレクション リソース リソース管理(4/6)-コレクションとは • ファイルシステムにおけるディレクトリ http://foo.example.com/DAV/foo/bar/baz.pdf
リソース管理(5/6)-コレクションの作成 • コレクションの作成と削除 作成(MKCOL) 削除(DELETE) Server Server foo foo foo foo bar bar baz baz Client Client MKCOL DELETE 階層構造の場合、親コレクションから順番に作成する必要がある 削除するコレクションの子コレクションとリソースも同時に削除される
Server DAV DAV リソース管理(6/6)-階層管理 • WebDAVはコレクション単位で処理可能 • コレクション内の全ファイルの移動やプロパティ取得など Client
リソース管理-HTTPのリソース管理 • HTTPは個別のリソースのみを対象 Server Client
更新日時 2001年6月1日 18:00:00 Date サイズ Subject Test mail Mon, 14 May 2001 03:04:05 +0900 223,309 プロパティ管理(1/5)-プロパティとは • プロパティ = 属性 • 名前と値の組の総称 名前 値 c:\home\WebDAV\rfc2518.txt 場所 テキストファイル 名前 値 foo@foo.example.com From E-mail
プロパティ管理(2/5)-各種のプロパティ • テキストファイルの場合 • サイズ、日付、形式(Text/TeX/HTML) • E-mailの場合 • To, From, Subject, Message-ID • 共同作業用ファイルの場合 • 作成者名、最終編集者、最終更新日時 • 検索エンジンへのキーワード
プロパティ管理(3/5)-プロパティの種類 • Live Property • サーバが管理している • 基本的にクライアントからは変更できない • 最終アクセス日時、ファイルサイズ • Dead Property • クライアントが管理している • サーバは値を登録するだけで内容は関知しない • ファイルへのコメント • ロックを保持している人の連絡先など
プロパティ管理(4/5)-プロパティの取得 • プロパティの取得 プロパティの取得 プロパティの設定 Server Server XML形式プロパティ一覧 XML形式のコメントなど PROPFIND PROPPATCH Client Client
プロパティ管理(5/5)-Dead Propertyの扱い • サーバ • 値の内容は考慮しない • 単に値を登録/返すだけ • PROPPATCH時には登録する • PROPFIND時には値を返す • クライアント • 書式や値のチェックなど全ての責任を負う • PROPFIND時には対応する値のみ扱う • 非対応のプロパティは単に無視
上書きの保護(1/8)-コリジョンとは • 作業のコリジョン Aさん Bさん Aさん Bさん 1) あるリソースを 同時に編集 2) 先に書き込んだ「Aさん」の内容を 後に書き込んだ「Bさん」の内容で上書き
上書きの保護(2/8)-ロックによるコリジョンへの対策上書きの保護(2/8)-ロックによるコリジョンへの対策 • ロックを行い、LockTokenを取得 LOCK LockToken LOCKメソッドにより LockToken を取得
上書きの保護(3/8)-書き込み • ロックされたリソースへの書き込み 上書き不可能 LockToken ロックされているリソースに書き込む時には、LockTokenが必要
上書きの保護(4/8)-読み込み • ロックと読み込み 読み込み時には、ロックの有無は考慮されない。GET/COPY/PROPFINDの処理はロックの有無に左右されない
上書きの保護(5/8)-ロックの種類 • Exclusive LockとShared Lock LOCK LOCK LockToken(ロックの有無に関係なくロックごとに常に一意の値) Exclusive Lock一時点でロックは1つ Shared Lock複数のロックを設定可能
上書きの保護(6/8)-ロックの成否 • ロックの成否マトリックス SharedLock Exclusive Lock ロックの状態 なし ○ ○ × Shared Lock ○ Exclusive Lock × × ○:ロックに成功×:ロックに失敗
PROPFIND LOCK LockInfo ロック所有者連絡先タイムアウト時間など ロック情報 LockToken ロックの有無やロック所有者の連絡先などの情報を取得できる ロック時にLockInfoプロパティを指定 上書きの保護(7/8)-Shared Lockの用途 • Shared Lock の用途
上書きの保護(8/8)-アンロック • ロックの解放(アンロック) UNLOCK UNLOCK LockToken LockTokenが必要 ロックの解放時には、ロック時のLockTokenが必要Exclusive Lock/Shared Lock 共に、処理は同じ
Access Control(Access Control Protocol Sub-group) WebDAV規格 HTTP/1.1 (RFC2616) PUT/DELETEのみ WebDAV (RFC2518) (INTERNET-DRAFT) Versioning(Delta-V Working Group) Searching(DASL Working Group)
WebDAVのCompliance Classes • COPY/MOVE • DELETE • MKCOL • PROPFIND/PROPPATCH • LOCK/UNLOCK Class1 Class2 Class2がClass1を包含しているのはたまたま仮にClass3ができた場合、Class1や2を含むとは限らない
WebDAVクライアント Firewall Firewall WebDAVサーバ WebDAVの利点(1/4)-特定Portのみ使用 • HTTP/1.1を拡張 • Port80(SSLの場合443)のみ使用 • Port80しか開けなくても良い(サーバ側) • FirewallでHTTP(Port80)しかアクセスできないようになっていても使用できる(クライアント側) DSTPort80 DSTPort80
WebDAVの利点(2/4)-セキュア • HTTPでの通信と同じ考えでセキュリティを強化できる • Port forwarding • SSL/TLS • IPSec • PPTP/L2F/L2TP
アプリケーション層 トランスポート層 インターネット層 ネットワークインターフェース層(物理層) TCP/IPプロトコルスタック • TCP/IPプロトコルスタック telnet/http/一般アプリケーション TCP/UDP/SSL/TLS IP/ICMP Ethernet/TokenRing/ATMなど ある層をセキュアにすると、それより上の層はセキュア →専用線、L2TP、SSL/TLS、port forwarding
WebDAVの利点(3/4)-OS/言語非依存 • サーバやクライアントのOS・言語に依存しない • サーバ: Linux(Apache), Windows(IIS5), Java(Jigsaw) • クライアント:Windows(WebFolder), Linux(DAVExplorer), Mac(Goliath), Java(SkunkDAV) • ライブラリ:Perl(HTTP::DAV),Java(Slide), C(neon/Linux),C++(DAVLib/Linux&Mac) 一覧は WebDAV Implementations を参照 (http://www.ics.uci.edu/pub/ietf/webdav/)
WebDAVの利点-XML • XML形式でのデータ交換 • OSや言語、アプリケーションに依存しない • 拡張性の高さ • 未知の要素は無視される コメント 無視
Server Server Client Client WebDAVの利点(4/4)-効率的 • コピーや移動はサーバ内で完結 • 無駄なファイル転送が発生しない SMB/CIFS(SAMBA) WebDAV
WebDAVの利点-まとめ • Webアクセスと同等の簡単さ(HTTP) • 拡張性(XML) • ファイル転送の効率(COPY/MOVE)
Linux Macintosh Windows WebDAVの適用例(1/4)-現在 • ファイルサーバ • クライアントOSを問わない WebDAVサーバ(IIS5/Apache/Jigsaw)
WebDAVの適用例(2/4)-現在 • 簡単で安全なファイル転送 • FTPやSSHの代替 • インターネット越しのFTP,SAMBAは不安 • SFTP/SCPは敷居が高い • WebDAVをサポートするISPも出てきた • Spoke Technologies, Inc.(http://www.spoke.net/)
www.spoke.netへのDAVアクセス-参照 • 勝手にDAVアクセスしてみた
www.spoke.netへのDAVアクセスー更新 • (当然ながら)更新には認証が必要
インターネット 同期 WebDAVでアクセス Global ステージングサーバ 本番サーバ LAN DMZ Firewall クライアント WebDAVの適用例(3/4)-現在 • Webサイトのステージングサーバとのファイル送受信 • リソースの格納場所 = Webの場所URI: http://www.example.com/foo/bar/hoge.html • FTPなどの場合、ディレクトリ構造とURIとのマッピングを考慮する必要がある
WebDAVの適用例(4/4)-現在 • コラボレーションツール • 分散オーサリング
WebDAVを利用できるアプリケーション • サーバ • mod_dav(Apache) • IIS5 • Jigsaw • クライアント • IE5/Windows2000/Office2000/WindowsXP • Acrobat5 • SkunkDAV 一覧はWebDAV Implementations を参照 (http://www.ics.uci.edu/pub/ietf/webdav/)
設定/使用例 • Windows2000(クライアント) • mod_dav • Acrobat5 • Nautilus • SkunkDAV
Windows2000からの利用(1/3) • マイネットワークを開く