- 338 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/05/19(木) 16:52:27 ID:DNhWjGA8]
- >>337
RDPはWindowsに特化すればいいからな。 まずRDPとVNCは描画命令系統が違う。 RFB(VNCのプロトコル)は矩形でしか描画できないから斜線や曲線に弱い。 文字もRDPではテキストデータとして送られるがRFBでは矩形に符号化される。 豊富な描画命令を持つRDPは矩形しか転送できないRFBより基本的に速い。 反面RFBは実装がシンプルで、移植性は抜群にいい。 RDPはVNCよりもキャッシュが最適化されている。 例えばRDPでウィンドウ動かしてもデスクトップの壁紙は「再描画」されない。 RFBの場合はどんなウィンドウシステムが乗っかるか分からないから、 移植性を残しておくために、基本的にフレームバッファのキャッシュはしない。 (UltraVNCは画像レベルで深度1のキャッシュをしてる) TCP/IPの挙動に対してRDPのほうがより最適化されている。 例えばVNCでマウスを動かすと、その1つ1つがTCPパケットとして送信される。 仮にMSSが1460バイトなら、たかだか6バイトのデータを送るために スループットにして99.96%近い無駄が生じる計算になる。 反応性のためにNagleを無効化した分の最適化がおろそかになっている。 あと、TCPではRWINの範囲内でスライディングウィンドウって処理をやって ACK待ちの速度低下を防止してるんだが、RFBではプロトコルにわざわざ 擬似的なACK待ちを持ち込んでいて、遅延の大きいネットワークでは その遅延時間に反比例してフレームレートが落ちる事になる。 仮にPingに500msかかる場合、2fps以上の更新間隔は期待できない。 ちなみにTightでスライドショーが速いのは単に画像をJPEGで圧縮するから。 フルカラーPNGでどんなに頑張ってもJPEGに勝てないのと同じ論理。
|

|