2006 年 12 月 10 日 23 時 58 分

VNC と RFB プロトコル


このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。


VNC は GUI ベースのリモート機器を遠隔操作するための、
クライアント・サーバ系ソフトウェアである。

クライアントからサーバ側の仮想ディスプレイに接続し、
サーバの仮想ディスプレイの映像をクライアントに転送する。
利用者は、マウスとキーボードを使って、
映し出されたディスプレイを操作することができる。

クライアントはサーバに対して、ユーザの操作を送信する。
これは、キーボード入力やマウスポインタの移動等である。
サーバはクライアントに対して、ディスプレイの画像を送る。
これを繰り返す事によって遠隔操作を成しえるのだ。

だだ、GUI は CUI と違い画面を表すための情報量が大きく、
ネットワーク回線を経由して送るのは大変である。

例えば、1024 x 768 x 24 ビットのディスプレイの場合、
18,874,368 ビットの画像となる。
ディスプレイは静止画ではなく、
利用者の操作や時間によって変化するため、
サーバは画像を送り続けなければならない。

例えば、1 秒間に 2 枚のペースでそのまま送るとすると、
約 37.75Mbps の帯域が必要ということになる。
画面をそのまま送信したならば、
非常に大きい帯域が必要になることが分かる。
これは単純な圧縮を施したとしてもあまり状況は変わらない。

昔は回線の速度もそれほど高速ではなかったため、
GUI の遠隔操作の実現性は難しいと思われていたが、
VNC の登場によってそれが現実味を帯びたのである。

VNC はクライアント・サーバ共に各種 OS に移植されており、
異なる OS 間での遠隔操作も可能としている。
それは、クライアントとサーバの間の通信内容が、
OS に依存しない RFB という通信プロトコルとして
仕様が定められているからである。

■ The RFB Protocol [PDF]
http://www.realvnc.com/docs/rfbproto.pdf

RFB には 画面転送を最小限にするための仕組みがあり、
なるべく回線の負担が少なくなるように設計されているのだ。



Copyright (c) 1994-2007 Project Loafer. All rights reserved.