IEがとてつもなく速いわけ... (たまにだけだけど) 171
ストーリー by Oliver
ルールなんて飾りです 部門より
ルールなんて飾りです 部門より
本家より:インターネットエクスプローラを使っていて、気がついただろうか。たまに、ページのロードが尋常じゃないくらいに速い事を。そして、それ以外ではとてつもなく遅いことに。遂にこのカラクリが解き明かされた。Peeve Farmのblogによると、TCPに関するRFCを無視しまくって、独自の汚いKeep-Alive方式を実装しているみたいだ。もちろん、その手が通用する相手はIISのみで、他のサーバ相手だと無駄なタイムアウトで遅くなる上に、ソケットをちゃんと閉じないので、無駄に資源を浪費させているという凶悪さ。
再現せず。 (スコア:3, 興味深い)
Re:再現せず。 (スコア:3, 参考になる)
クライアント:WindowsXP Pro + IE6.0 SP1
サーバ:IIS5.0 (www.msn.co.jp)
キャプチャリング:Ethereal + WinPcap
上記の環境で
SYN -> SYN/ACK -> ACK -> GET /home.armx ....
という結果しか得られていません。
一度だけサーバからのFIN/ACKからキャプチャが始まったので、再現成功か?と勘違いしたのですが、よくよくみると、キャプチャ開始時点で未完だったセッションの残骸でした。
元記事も、こういった特例(というかキャプチャミス)を間違えて解析してるんじゃないかなぁ・・・と考えてます。
Re:再現せず。 (スコア:2, 参考になる)
何回やっても、
・IEが動いているクライアントがSYNを送信する前に、requestパケットらしきものを送信している形跡がない。
・一通りのHTTP通信を終えると、クライアントからサーバにFIN/ACKを送信し、サーバはそれにACKしてしまう。
ので、セッションはごく普通に閉じてます。
仮に、セッション開きっぱの仕組みをIEとIISが持っていたとして、そういった組み合わせでポータル環境を構築したら(たとえばMSNとか)、そのポータルサイトは、あぁっ!と言う間にでセッション過多に陥るように思います。
もう眠いので寝ます。
Re:再現せず。 (スコア:1)
use Test::More 'no_plan';
とりあえずダウト (スコア:2, 興味深い)
> 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, 参考になる)
HTTP1.0ではその機能がオプションとなってますから、ブラウザが何であっても、サーバでオンにしていなければ速度は同じです。あとIEの一部のバージョンはHTTP1.0なサーバでもkeep-aliveを要求することがあるらしいのでかえって遅くなるのかもしれません。
もちろんkeep-aliveのタイムアウトや最大リクエスト数なんかの実装や設定も違うでしょうし、いろいろ突っ込みどころがありそうです。
他力本願。
Re:とりあえずダウト (スコア:2, 興味深い)
本家#5022308 [slashdot.org]
最初のページについてはわからないんだけど、同じホストの次のページからは既にソケットが出来上がってるので早い、と。
本家#5023393 [slashdot.org]
# 本家 [slashdot.org]を 1:527comments, nested, orderest first で #5023784 までで読んで疲れた。まだ半分もいってない...
じゃあ、 /.-jp のみんな!議論の続きをどーぞ!
Re:とりあえずダウト (スコア:1)
全てのバージョンのIEに関して知っているわけではありませんが、IEは普通のソケットインタフェースだと思いますよ。
この辺り(Winsock Direct [microsoft.com])を作ってみた限りでは....。
ですから、単にソケットをクローズしてないんでしょうね。
# そこまで見てなかった。(o_ _)o
昔アップルも (スコア:2, 参考になる)
アップル社は事実をあっさり認めて、APIを公開したというように記憶しています。
#懐かしすぎるので実名
----------- 一生勉強を続けなきゃ!
Re:で? (スコア:1)
ムキにならなきゃいけない理由でもあるのですか?
>で?
と聞かれたら、「ただそれだけのこと」としか答えようがないです。
ところで、その内またAppleは純正ブラウザを出すという噂がありました。あれだけ冷たくCyberdogを葬っておいて、それはないぜCEO!と言いたくも成りますが、、、。あ、これ話題から外れ過ぎ?また噛み付かれるといやなのでこの辺で。
#これ以上噛み付かないでと思いつつ実名
----------- 一生勉強を続けなきゃ!
Re:で? (スコア:1)
当たり前ではないでしょう。別に法律違反した訳でもないし。
違いのわからない男>ヲレ (スコア:1, おもしろおかしい)
お前はわからないんじゃなくて知らないだけだろ (スコア:1, おもしろおかしい)
Re:お前はわからないんじゃなくて知らないだけだろ (スコア:1)
Re:お前はわからないんじゃなくて知らないだけだろ (スコア:2, すばらしい洞察)
# マジレスしてみるテスト。
Re:お前はわからないんじゃなくて知らないだけだろ (スコア:1)
あと、うちの場合、DELLのPC使っているのですが、WindowsUpdateでDisplay Adapterのドライバを上げたら、正常に動かないということはありましたね
でも、セキュリティ関係のパッチで、アンチウィルスソフトが死んだことはないなぁ、うちもAVGとか、NAVとか、入れてるけど、死んだことは一度もありませんな
ま、しいて言えば、当てたパッチを、プログラムの追加と削除で参照すると、パッチのアイコンが全部、AVGのものに変わってたりするくらいで(笑)
T/TCP (スコア:1)
まずは本家でのコメントに目を通しておくこと。
This is T/TCP. It is not a Microsoft Conspiracy [slashdot.org]
#で、どなたか解説してください
N/A (スコア:1)
自信なさげなタレコミにすこしだけ笑いました。
でも元ストーリー名を訳しただけなのですね
Why IE Is So Fast ... Sometimes [slashdot.org]
というわけで/.-J に今年初投稿
- Ryuzi Kambe -
日本人なら (スコア:1)
fastゆーたらフツーは「速い」。
もしIE/IISで速いのならば (スコア:1)
つまり、IE のシェアがここまで高い以上、IIS へ移行しようという理由のひとつになりはしないかと言うこと。世の中とはそういうものです。
パイプライン (スコア:1)
> HTTP1.1では、永続的な接続(keep-alive)がデフォルトでリクエストに対応するレスポンスを
> 待たずに続けざまにリクエストが可能なパイプライン動作も拡張追加。
> Netscape7等で拡張設定が可能。
これとは違うものなのでしょうか??
Re:Explorer (スコア:2, おもしろおかしい)
なんか変な汁がでてそうでいや〜んな感じですな
Re:Explorer (スコア:2, おもしろおかしい)
/* Kachou Utumi
I'm Not Rich... */
Re:Explorer (スコア:1)
フォード [isize.com]の車も「エクスプローラー」と読んでますね。
日本語的に「エキス」よか「エクス」の方が収まりが良さげなのは何故だろう?
#かつて OS/2 で WebExplorer 使ってたので ID。
Re:Explorer (スコア:1)
# 単に訛りかもしれず
Re:速かった? (スコア:1)
(真相は知らんけど)
作りが悪いのです (スコア:1, 興味深い)
当然IEだけは速くなりますがその他は極端に遅くなります。
HTMLの解析に時間食いますし、通信も遅くなります。
で結局遅くなると、M$の製品を組み合わせると更に倍
IEとメディアプレイヤーを起動した状況でリアルプレイヤーなんて
実行するとリアルプレイヤーなんて極端に遅くなりますが...
マックでパフォーマンス上げようとしているんだろうけど逆効果だな
他と違うのはページを解析したキャッシュは残る仕様のようだけど
HTMLの解析方法が変つーかバグがあるつーか基本がなってないのは治ってない模様だけど(笑)
#メディアプレイヤーの機能拡張デカすぎ...
IEだけでなく (スコア:1)
Re:速かった? (スコア:1)
> 真面目な話、仕様書は作らないと聞いたことがあります。
> 理由は「創造力を発揮できるようにするため」らしいですが。
いや、それは違うね。
理由は「仕様が外出するのを防ぐため」らしいよ。
ソースは何処にあったかな?
# 転職しよーか、なぁ。
Re:速かった? (スコア:1)
香港映画の監督が脚本流出防止にわざと紙の脚本を使わないとか聞きますが...........、そんなアドリブで開発してるもんなんですかねぃ
(よく仕様書無しで、開発がやれるものだとは思うが.......)
Re:仕様の文書化と伝達(Re:速かった? (スコア:1)
ヤマハがUSBアンプの開発を始めたころに、MSにUSBの規格について、サポートを求めたところ、社内にも仕様を理解している人間がほとんどいなかったとか
結局、リバースエンジニアリングに近い状態での開発だったとか聞いたことがありますねぃ
Re:速かった? (スコア:1)
ちなみに僕は知りません。
他力本願。
Re:トピックのアイコン (スコア:1)
#つうか、トピック自体が「イタい」か
/* Kachou Utumi
I'm Not Rich... */
Re:トピックのアイコン (スコア:1)
痛そうだなぁ
とか思ったもんです…
人格の違いか知能の違いか (スコア:1, すばらしい洞察)
そういう態度は技術者として望ましくないだろうし、何も面白くもなんともない。
本家の場合 (スコア:1)
今回のストーリーの場合、本家ではタレコミの40分後には検証結果を示したコメント [slashdot.org]が付けられていた。残念ながら、我らが/.Jで検証コメントが見られたのはタレコミの2時間半後 [srad.jp]である。この件を教訓に、我らが/.Jでも本家を見習ってタレコミの分析・検証にも力を入れていきたいものだ。
AC氏 [srad.jp]よ、現在の風潮が寂しいと言いたいだけなら、わざわざそんなタイトルをつけることも無いだろう。ACで論評するふりをしながら荒らす行為も、やはり面白くもなんともないぞ。
_.. ._._._ _... ._._._ ._. ._._._
物は試しだ。コメントのしきい値を2にしてごらん
Re:オフトピックだけど… (スコア:1, 参考になる)
IEがTCP/IPレベルの挙動を制御するだなんてOSI参照モデルのレイヤが全然違う事 [plala.jp]ぐらいは俺でも解るぞ。
そもそもWindowsのTCP/IPコンポーネントはIEとは別コンポーネントじゃないか。
試しにネットワークカードのプロパティを開いてみよう、TCP/IPコンポーネントをはずす事が出来る。
仮にIE以降のWindowsの標準TCP/IPスタックに相手がIEの時だけ挙動を変える特別な仕掛けがあったとしても、そんなものがあったら別ベンダのTCP/IPスタック(今となってはあるのかどうか知らないが)ではIEが動かない筈だ。
仮にIEにはTCP/IPスタックが内蔵されていて、こっそり独自TCP/IPスタックを使っているのなら、ネットワークカードのプロパティからTCP/IPを削除してもIEだけはwwwを閲覧できる筈だ。
蛇足だが、Windows3.1の頃はTCP/IPスタックは標準添付ではなく、各種種類があった筈で、Windows3.1用のIEは実在した。 [xrea.com]
それよりも編集者がその記事を冗談や眉唾扱いしていないことの方が気にかかる。
ど素人の俺ですら胡散臭いと考える根拠を並べられるのに。
Re:オフトピックだけど… (スコア:2, 参考になる)
WinSockにもドキュメントにraw socketについての言及があるのですが、実装されているかどうかはわかりません。私の持っているVC++は古いので参考にはならなさそうです。
ちなみにMSIEとIIS間ではHTTP 1.1のpersistent connectionを使っていますので、インチキ臭いkeep-aliveトリックを使う必然性は全くありません。この記事のような方法が可能だとも思いませんし。
Re:オフトピックだけど… (スコア:1, 参考になる)
IE→Winsock→TCP/IPスタック(またはほかのトランスポート層)
の流れでデータが流れるという前提で(間違ってはいないはず)。
winsockに直にデータリンク層と会話するAPIがあってそれ経由で独自にTCPを実装しているのならば、winsock準拠のTCP/IP以外の適当なプロトコルスタック(標準のIPX/SPXとか)が導入されていればIEだけはwebブラウジングできる事になりますが、実際そんなことはありません。
また、winsock単体でデータリンク層と会話する事ができたとするなら、IEはプロトコルスタックなしでwebブラウジングできる事になりますが、これもそんなことはありません。
実はIEがwinsockなしでもデータリンク層と会話出来るかも…という仮定は前二つの結果から言ってありえません。
ばかばかしくてwinsock.dllを削除する気は起きません。
Re:オフトピックだけど… (スコア:1)
両方の混合技は考えないんですか?
大部分は winsock を利用しつつ、一部だけは独自の挙動とか。
公開されているインターフェースがどーのこーのとかじゃなく製作者の権力でコードが書けるため、指摘された2つの条件では断定的なことは言いにくいですね。
「責難は成事にあらず」 小野不由美 『華胥の幽夢 十二国記』より (p.280)
Re:オフトピックだけど… (スコア:1)
で、わざわざアプリケーションが自前でプロトコル スタックを実装しなくても、特殊/非公開な SOCKET OPTION を用意してやれば、それなりに小細工できそうな感じです。
Re:これって関係あるかな (スコア:1)
Ctrl+F5とかじゃだめ?
(I can't get no) satisfaction
Re:これって関係あるかな (スコア:1)
Re:これって関係あるかな (スコア:1)
そう思ったら、プロキシなしでアクセスすればいいじゃん。それとも何か意味あり??
#マイナスモデレートよろしく「責難は成事にあらず」 小野不由美 『華胥の幽夢 十二国記』より (p.280)
Re:これって関係あるかな (スコア:1)
>LAN内の透過プロキシが悪さしてるのかな。
は余計でした。
NW構成はClients-->GW-->The Internetてな感じで、GWの中にSquidとApacheが同居してます。
それと、僕はただこの現象がこのトピックに関係あるかないか詳しい人に聞きたかっただけなんです。
こんな無知な僕の話を聞いてくれた皆さんありがとうございました。
Re:これって関係あるかな (スコア:1)
これでリロードできるとは知らなかった。勉強になりました。が、無理でした。無念。
Re:何となくだけど (スコア:1)
元記事のとおりならば IIS がソケットを持ち続けるので IIS サーバに対して DOS 攻撃ができます。今のところ他の実験者が同じ結果を見出せていないのでなんともいえないけど。(元記事のサイトが環境を書かないから検証実験が思うようにできん。)
「責難は成事にあらず」 小野不由美 『華胥の幽夢 十二国記』より (p.280)
音を消すがよろし (スコア:2, 参考になる)
# なんだよ?「ナビゲーションの開始」って?わかりづれーよ。
タイプ音 (スコア:1)
がちゃがちゃがちゃがちゃ、がちーーーんって。
三日風呂に入らなかったら、あなたはすめるまんです。
Re:ガセネタではないようです (スコア:2, 参考になる)
問題なのは、TCP接続を張っていない状態でHTTPリクエストが送られることがあるかどうか、という点です。例えば、クライアントが(そのローカルポート番号について)SYNとACKを送る前にHTTPリクエストのパケットを送ったり、あるいはクライアントがFINを送った後にHTTPリクエストを送ったりしたならば異常です。
3.のあとにキャプチャを止めてしまうのではなくて、同じTCP接続を保ったまま7.のHTTPリクエストが送られているかどうか確かめる必要があります。もしTCP接続を保ったままである(FINがクライアント側からおくられず、同一のローカルポート番号である)ならば、それは正常なHTTP 1.1の動作です。