Akira's Commentary

VNCとは

VNC(Virtual Network Computing) は、 AT&T ケンブリッジ研究所で開発された、 デスクトップへのリモートアクセスシステムです。 もともとは、デスクトップ(ディスプレイ、キーボード、マウス)を ネットワークで延長して、 どこからでもアクセスできるようにしようとしたもの、 つまり、どのようなモバイル環境からでも 同じデスクトップにアクセスできるようにするために開発されたものです。

旧ORL(Olivetti&Oracle Research Laboratory)、 1999/2/1にAT&Tに買収されて、名前が変わりました。 (1)

しかし、よくできたシステムがそうであるように、 VNCも本来の目的を離れていろいろな使い方を されるようになってきています。 現在ではモバイル環境としてよりも、異機種のデスクトップへの アクセスツールとして使われているケースの方が多いでしょう。

VNCは、 デスクトップをネットワークで延長して遠隔アクセスを可能にするサーバと、 ネットワーク経由でそのデスクトップにアクセスするためのクライアント (ビューワ)とから構成されます。

Structure of VNC

現時点でAT&Tケンブリッジ研究所では以下のプラットフォーム用の サーバ、ビューワを提供しています。

サポートプラットフォーム
サーバVNC server for X/UNIX
WinVNC for Win32
MacVNC for PPC Mac
ビューワfor X/UNIX
for Win32
for Java
for Mac
for WinCE

提供されているサーバのうち、Windows用のものと、Mac 用のものは 実際のそれぞれのマシンのディスクトップを延長するものですが、 Xベースのサーバ(Xvnc)はビューワからのみ参照できる 仮想的なX環境を提供するものです。 残念ながらWS/PCのディスプレイに表示されている Xのデスクトップをリモートマシンからアクセスする ことはできません。(2)

VNC Structure for Windows/MAC VNC Structure for Xvnc Server

開発元で提供されているものはこれだけですが、 VNCはいわゆるオープンソースで提供されていて、 プロトコル、ソースが誰でも入手できます。 このために、第三者によっても多数の プラットフォームに移殖されています。 現時点では以下のプラットフォーム用のものが入手できます。

OS サーバ ビューワ
AIX Xvncパッチ
Acron Xvncパッチ
Amiga
BeOS
Cygwin32 Xvncパッチ X版
DOS
Geos
GGI
HPUX Xvncパッチ
KDE
MAC
NetWidner Xvncパッチ
OPENSTEP/Mach Xvncパッチ
OS/2 Xvncパッチ X版、PM版
PalmPilot
SCO OpenServerXvncパッチ
SGI Irix 6.2 Xvncパッチ
SVGALIB
VMS
WinCE
WinNT/Alpha Xvncパッチ

この表を御覧になればわかると思いますが、 ビューワについては、実に多数のプラットフォームに移殖されていますが、 サーバについてはごく僅かのプラットフォームにしか移殖されていません。 これはVNCが、FATサーバとTHINクライアントの組み合わせで 構成されるようになっているためです。

VNCではとにかくクライアント側が単純、簡単になるように プロトコルが設計されています。 これは当初の目的が、比較的性能の低いモバイル環境での 実現が容易になることを考慮したためです。 このため、クライアントについては、 どのようなプラットフォームであっても比較的簡単に 実装することができます。 これが多様なビューワ実装として現れているわけです。

しかしその反面、面倒な処理はすべてサーバが担当しますので、 サーバの実装はクライアントとは比較にならないほど 大変になっています。 実際、現時点ではXベースのサーバ(Xvnc)こそ 多数の環境に移殖されていますが、 それぞれのプラットフォームのネイティブデスクトップを サポートするサーバについては、ごく僅かしか存在していません。

実は、とりあえず動作するサーバを作るのはそれほど難しくはありません。 しかし、実用に耐える(特に速度面で)サーバを作成するのは かなり大変なことです。 このあたりの問題が、完全に仮想的なデスクトップを提供するXvnc以外は ろくに移殖、実装されていない原因です。

それでは、VNCのビューワがどれほど簡単に実現できるのか、 なぜサーバはそんなに大変なのかを、 その動作原理から見てみることにしましょう。