VNC(Virtual Network Computing) は、 AT&T ケンブリッジ研究所で開発された、 デスクトップへのリモートアクセスシステムです。 もともとは、デスクトップ(ディスプレイ、キーボード、マウス)を ネットワークで延長して、 どこからでもアクセスできるようにしようとしたもの、 つまり、どのようなモバイル環境からでも 同じデスクトップにアクセスできるようにするために開発されたものです。
旧ORL(Olivetti&Oracle Research Laboratory)、 1999/2/1にAT&Tに買収されて、名前が変わりました。 (1)
しかし、よくできたシステムがそうであるように、 VNCも本来の目的を離れていろいろな使い方を されるようになってきています。 現在ではモバイル環境としてよりも、異機種のデスクトップへの アクセスツールとして使われているケースの方が多いでしょう。
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はいわゆるオープンソースで提供されていて、 プロトコル、ソースが誰でも入手できます。 このために、第三者によっても多数の プラットフォームに移殖されています。 現時点では以下のプラットフォーム用のものが入手できます。
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 OpenServer | Xvncパッチ | |
SGI Irix 6.2 | Xvncパッチ | |
SVGALIB | ○ | |
VMS | ○ | |
WinCE | ○ | |
WinNT/Alpha | Xvncパッチ |
この表を御覧になればわかると思いますが、 ビューワについては、実に多数のプラットフォームに移殖されていますが、 サーバについてはごく僅かのプラットフォームにしか移殖されていません。 これはVNCが、FATサーバとTHINクライアントの組み合わせで 構成されるようになっているためです。
VNCではとにかくクライアント側が単純、簡単になるように プロトコルが設計されています。 これは当初の目的が、比較的性能の低いモバイル環境での 実現が容易になることを考慮したためです。 このため、クライアントについては、 どのようなプラットフォームであっても比較的簡単に 実装することができます。 これが多様なビューワ実装として現れているわけです。
しかしその反面、面倒な処理はすべてサーバが担当しますので、 サーバの実装はクライアントとは比較にならないほど 大変になっています。 実際、現時点ではXベースのサーバ(Xvnc)こそ 多数の環境に移殖されていますが、 それぞれのプラットフォームのネイティブデスクトップを サポートするサーバについては、ごく僅かしか存在していません。
実は、とりあえず動作するサーバを作るのはそれほど難しくはありません。 しかし、実用に耐える(特に速度面で)サーバを作成するのは かなり大変なことです。 このあたりの問題が、完全に仮想的なデスクトップを提供するXvnc以外は ろくに移殖、実装されていない原因です。
それでは、VNCのビューワがどれほど簡単に実現できるのか、 なぜサーバはそんなに大変なのかを、 その動作原理から見てみることにしましょう。