2008/09/17
Windows XP Professional SP3からWebDAVサーバにアクセスする必要があって、ネットワークプレースでWebDAVサーバを追加しました。
すると初回接続時に異様に時間がかかり(約20秒)、これでは実用に耐えないと思って原因を調べてみました。
クライアント - サーバ間のパケットをキャプチャしてみると、本来不要であるnetbios-ssn(139/tcp)、いわゆるファイル共有のリクエストがサーバに発行されていました。
サーバ側ではそのサービスを提供していないので同リクエストが失敗して3秒後にリトライ、再び失敗して6秒後にリトライ、三たび失敗して12秒後にようやくHTTPアクセスを行っていました(ここまで合計21秒)。
この場合のネットワークプレースのアイコンはファイル共有と同じものになっており、リンク先はUNC(Universal Naming Convention)パスになっていました。
\\XXX.XXX.XXX.XXX\public
クライアントのUser-Agentは以下のようになっていました。
Microsoft-WebDAV-MiniRedir/5.1.2600
そこで試しにポート番号まで指定してWebDAVサーバを追加してみると今度はすぐにHTTPアクセスが発生してすぐに接続完了、アイコンはWebフォルダ、リンク先はURLになりました。
http://XXX.XXX.XXX.XXX:80/public
クライアントのUser-Agentは以下のようになっていました。
Microsoft Data Access Internet Publishing Provider DAV 1.1
どうやら前者はWindows XPから追加されたWebClientというサービスが動作していると有効になるようで、このサービスを止めればポート番号を指定しなくても後者のWebフォルダとして機能しました。
結論として、以下の2通りのどちらかを実施すれば遅延問題は発生しません。