パスワードを忘れた? アカウント作成
4674 story

IEがとてつもなく速いわけ... (たまにだけだけど) 171

ストーリー by Oliver
ルールなんて飾りです 部門より

本家より:インターネットエクスプローラを使っていて、気がついただろうか。たまに、ページのロードが尋常じゃないくらいに速い事を。そして、それ以外ではとてつもなく遅いことに。遂にこのカラクリが解き明かされた。Peeve Farmのblogによると、TCPに関するRFCを無視しまくって、独自の汚いKeep-Alive方式を実装しているみたいだ。もちろん、その手が通用する相手はIISのみで、他のサーバ相手だと無駄なタイムアウトで遅くなる上に、ソケットをちゃんと閉じないので、無駄に資源を浪費させているという凶悪さ。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • 再現せず。 (スコア:3, 興味深い)

    by ahiguti (10103) on 2003年01月06日 21時29分 (#230882)
    MSIEでwindowsupdate.microsoft.comへ繋げたところを、マスカレしてるLinuxマシンでパケット観察してみましたが、件のページに書かれているようなおかしな順序でパケットが送られるようなことはありませんでした。通常通りSYN、SYN/ACK、ACKで接続し、HTTP GETリクエスト等を数回送り、ちゃんと接続を閉じています。サーバ側はIISで、HTTP 1.1のpersistent connectionを使って一本の接続で複数のリクエストを処理していました。slashdot.jpにも繋げて観察してみましたが同様。本家のコメントも一通り見てみましたが、再現できたというものは無いようです。ガセじゃないでしょうか?
    • Re:再現せず。 (スコア:3, 参考になる)

      by Oyajikusai (1187) on 2003年01月06日 22時59分 (#230922)
      私のほうでも何回か試行してみましたが、(後述の一回を除いて)再現していません。

      クライアント:WindowsXP Pro + IE6.0 SP1
      サーバ:IIS5.0 (www.msn.co.jp)
      キャプチャリング:Ethereal + WinPcap

      上記の環境で

      SYN -> SYN/ACK -> ACK -> GET /home.armx ....

      という結果しか得られていません。

      一度だけサーバからのFIN/ACKからキャプチャが始まったので、再現成功か?と勘違いしたのですが、よくよくみると、キャプチャ開始時点で未完だったセッションの残骸でした。

      元記事も、こういった特例(というかキャプチャミス)を間違えて解析してるんじゃないかなぁ・・・と考えてます。
      親コメント
      • Re:再現せず。 (スコア:2, 参考になる)

        by Oyajikusai (1187) on 2003年01月07日 0時15分 (#230966)
        まだしつこく試行してます。

        何回やっても、

        ・IEが動いているクライアントがSYNを送信する前に、requestパケットらしきものを送信している形跡がない。
        ・一通りのHTTP通信を終えると、クライアントからサーバにFIN/ACKを送信し、サーバはそれにACKしてしまう。

        ので、セッションはごく普通に閉じてます。

        仮に、セッション開きっぱの仕組みをIEとIISが持っていたとして、そういった組み合わせでポータル環境を構築したら(たとえばMSNとか)、そのポータルサイトは、あぁっ!と言う間にでセッション過多に陥るように思います。

        もう眠いので寝ます。
        親コメント
  • by Anonymous Coward on 2003年01月06日 19時09分 (#230816)

    > TCPに関するRFCを無視しまくって、独自の汚いKeep-Alive方式を実装しているみたいだ。もちろん、その手が通用する相手はIISのみ

    TCP/IPの実装はTCP/IPドライバ(トランスポート層)の役割であり、IISのようなアプリケーション(セッション層、アプリケーション層)には行なえないと思われますが(もちろんソースが公開されてるわけではないので確証はないですけど)。

    また、もしも万が一このような実装で作られているとしたら、途中経路にTCP/IPコネクションをトラッキングするような存在(例; Windows以外のLinuxやBSDベースのNAT/IP masquerading)があっただけで通信が不可能になったり、エラーログが残ったりするのではないのでしょうか。

    さらに指摘しておくと、文中にSYNなしでいきなりRequestを飛ばすような図がありますが、もしもこれが本当ならばいきなりRequestを飛ばすときのACK numberは果たしていくつになるのでしょう? SYNしてないですから相手の番号はわかりませんよね。

    • keep-alive (スコア:2, 参考になる)

      by shikine (296) on 2003年01月06日 21時43分 (#230887) ホームページ 日記
      常時接続(keep-alive)はHTTP1.0/1.1の機能ですから、TCPスタックの挙動とはちょっと別なんでしょうね。

      HTTP1.0ではその機能がオプションとなってますから、ブラウザが何であっても、サーバでオンにしていなければ速度は同じです。あとIEの一部のバージョンはHTTP1.0なサーバでもkeep-aliveを要求することがあるらしいのでかえって遅くなるのかもしれません。

      もちろんkeep-aliveのタイムアウトや最大リクエスト数なんかの実装や設定も違うでしょうし、いろいろ突っ込みどころがありそうです。
      --
      他力本願。
      親コメント
    • by wabix (3594) on 2003年01月06日 23時06分 (#230929) ホームページ
      TCP/IPの実装はTCP/IPドライバ(トランスポート層)の役割であり、IISのようなアプリケーション(セッション層、アプリケーション層)には行なえないと思われますが(もちろんソースが公開されてるわけではないので確証はないですけど)。
      標準のソケットインタフェースを使っていなかったら?
      本家#5022308 [slashdot.org]
      さらに指摘しておくと、文中にSYNなしでいきなりRequestを飛ばすような図がありますが、もしもこれが本当ならばいきなりRequestを飛ばすときのACK numberは果たしていくつになるのでしょう? SYNしてないですから相手の番号はわかりませんよね。
      最初のページについてはわからないんだけど、同じホストの次のページからは既にソケットが出来上がってるので早い、と。
      本家#5023393 [slashdot.org]

      # 本家 [slashdot.org]を 1:527comments, nested, orderest first で #5023784 までで読んで疲れた。まだ半分もいってない...

      じゃあ、 /.-jp のみんな!議論の続きをどーぞ!
      親コメント
      • by megalith (4791) on 2003年01月07日 11時02分 (#231118)
        > 標準のソケットインタフェースを使っていなかったら?

        全てのバージョンのIEに関して知っているわけではありませんが、IEは普通のソケットインタフェースだと思いますよ。
        この辺り(Winsock Direct [microsoft.com])を作ってみた限りでは....。

        ですから、単にソケットをクローズしてないんでしょうね。
        # そこまで見てなかった。(o_ _)o
        親コメント
  • 昔アップルも (スコア:2, 参考になる)

    by shunta (5526) on 2003年01月06日 20時45分 (#230857) 日記
    昔、アップル社も自社製ブラウザ『Cyberdog』を持っていた頃、同様の指摘をされました。
    アップル社は事実をあっさり認めて、APIを公開したというように記憶しています。

    #懐かしすぎるので実名
    --
    ----------- 一生勉強を続けなきゃ!
  • by Anonymous Coward on 2003年01月06日 19時03分 (#230811)
    IEなんて普段全然使っていないからそんな違いがあるなんてちっとも知りませんでした。
  • by oltio (3848) on 2003年01月06日 19時04分 (#230812) 日記

    まずは本家でのコメントに目を通しておくこと。

    This is T/TCP. It is not a Microsoft Conspiracy [slashdot.org]

    #で、どなたか解説してください

  • by Ryuzi Kambe (38) on 2003年01月06日 19時39分 (#230832) ホームページ 日記
    > IEがとてつもなく早いわけ...(たまにだけだけど)

    自信なさげなタレコミにすこしだけ笑いました。

    でも元ストーリー名を訳しただけなのですね

    Why IE Is So Fast ... Sometimes [slashdot.org]

    というわけで/.-J に今年初投稿
    --

    - Ryuzi Kambe -
  • by tty77 (4123) on 2003年01月06日 23時45分 (#230948)
    もし、IE からのアクセスにおいて IIS が速いということが事実だと判明したら、それは油断してはならんということではないでしょうか ?
    つまり、IE のシェアがここまで高い以上、IIS へ移行しようという理由のひとつになりはしないかと言うこと。世の中とはそういうものです。
  • by AZ09 (7698) on 2003年01月07日 0時04分 (#230963)
    httpヘッダの「 HTTP_CONNECTION 」において、(以下引用 [matsusaka.com])
     > HTTP1.1では、永続的な接続(keep-alive)がデフォルトでリクエストに対応するレスポンスを
     > 待たずに続けざまにリクエストが可能なパイプライン動作も拡張追加。
     > Netscape7等で拡張設定が可能。
    これとは違うものなのでしょうか??
typodupeerror

開いた括弧は必ず閉じる -- あるプログラマー

読み込み中...