玩式草子─ソフトウェアとたわむれる日々

第61回 いまさらながらVNC[その3]

この記事を読むのに必要な時間:およそ 4 分

本連載では,Linuxのデスクトップ環境からWindowsを操作するためのツールとしてVNCを紹介してきました。VNCにはさまざまな実装が存在するものの,前回紹介したように,手元ではWindows側はUltraVNCのサーバ,Linux側はTigerVNCのビューワ,という組み合わせで安定,快適に動作するようになり,この組み合わせで当初の目的だったVHDカラオケのキャプチャ作業を進めています。

LinuxからWindowsを操作する,という当初の目的は実現できたものの,VNCについてあれこれ調べているうちに,Windowsの世界でも「リモートデスクトップ接続」という名称で,別の場所にあるWindowsをネットワーク経由で利用する技術が存在し,その技術をLinuxから利用するためのソフトウェアも開発されていることに気づきました。今回は,そのあたりの話を紹介してみます。

リモートデスクトップ接続とRDP

UNIX/Linuxの標準的なGUI環境であるX Window Systemは,元々はマサチューセッツ工科大学(MIT)が学内のコンピュータシステムを統合するために開発したプロジェクト・アテナ(Project Athena)⁠用のウィンドウシステムとして設計されました。

最近,認証技術として広く利用されているケルベロス(Kerberos)も,元々は「プロジェクト・アテナ」のユーザ認証用に開発されたツールです。

「プロジェクト・アテナ」は,MIT学内に存在するさまざまなメーカ製のコンピュータをネットワークで結び,どこからでも同じ手順で操作できる環境を作ることを目指していました。そのため,その環境用に開発されたX Window Systemも当初からネットワーク透過的に設計されていて,DISPLAY環境変数を指定するだけで,離れたところにあるコンピュータの画面を手元のディスプレイに表示することができるようになっています。

一方,MS-DOSにGUI環境を付加することが目的だったWindowsは,ネットワーク経由で使うことは考えられていませんでした。しかし,Windows NTの世代になると,Windows機がサーバ用途にも使われることが増えてきて,それと共にシステムをリモートから管理したいというニーズも増えてきました。

そのためにMicrosoftが採用したのが米国Citrix Systems社が開発したWinFrameと呼ばれる技術です。WinFrameは,Windows NTを複数の端末から,複数のユーザが同時利用できるようにする拡張機能で,1995年に発表され,Citrix Systemsの主力商品となりました。

この機能に関心を持ったMicrosoftは,Citrix Systemsと共に開発を進めて,Windows NT 4.0用の追加機能としてターミナルサービスを提供しました。この「ターミナルサービス」は,WinFrame同様,複数のユーザが複数のクライアント端末からサーバとして動作しているWindows NT機に接続して利用できるサービスで,この機能によって,Windowsはリモートからも操作できるOSになったわけです。⁠ターミナルサービス」は,その後,リモートデスクトップに名称を変更し,Windows XP以降ではOSの標準機能として組み込まれることになりました。

図1 リモートデスクトップ接続画面

図1 リモートデスクトップ接続画面

この「リモートデスクトップ」サービスを実現しているのがリモート・デスクトップ・プロトコル(RDP)⁠という通信プロトコロルです。

前回までに紹介したVNCが利用しているRFB(Remote Frame Buffer)プロトコルは,描画した画面を画像データとして転送するためのシンプルなプロトコルだったのに対し,RDPはWindowsの画面を別のマシン上で描画するために必要な情報をやりとりする,かなり複雑なプロトコルになっています。

RDPの詳細を説明するのは筆者の手に余るものの,ざっと調べた限りでは,ITU-T(国際電気通信学会)が定めたビデオ会議用の通信プロトコル群(T.120)の内,T.128(T.SHARE)と呼ばれるアプリケーション共有用プロトコルを元に,いくつか機能を追加,拡張したプロトコルになっているそうです。

前述のように,基本的な部分はCitrix Systemsが開発していたこともあって,RDPの最初のバージョンはWindows NT 4.0(Terminal Server Edition)に搭載されたRDP 4.0になっています。その後,Windows2000 Serverに搭載されたバージョンが5.0,Windows XPに搭載されたバージョンが5.1と,Windowsのバージョンに合わせるようにRDPのバージョンも進化して行き,最新のバージョンはWindows 8.1とWindows Server 2012 R2に搭載されているRDP 8.1です。

RDPのフリーな実装

前節で紹介したように,最初のバージョンであるRDP4.0を採用したWindows NT 4.0 Terminal Server Editionが公開されたのは1998年のことでした。その直後から開発が始まったのがrdesktopというUNIX/Linux用のRDPの実装です。rdesktopの最初のバージョンは,SourceForgeから2001年に公開されました。

図2 rdesktopのサイト

図2 rdesktopのサイト

rdesktopはUNIX/LinuxからWindowsのRDS(リモートデスクトップ・サービス)に接続するためのツールとして広く認知され,GNOME(Gnome-RDP)やKDE(krdc)用のフロントエンドツールが開発されたり,Mac OS Xにも移植(CoRD)されたりしています。

最近では,RDPの仕様は"Open Specification(公開仕様)"としてインターネットに公開されているものの,rdesktopの開発が始まったころはWindows専用の商用プロトコルとして詳細は公開されていなかったため,開発者たちはやりとりされるパケットを解析してプロトコルの詳細をリバース・エンジニアリングする等,苦労したそうです。

しかしながら,2006年ごろになるとrdesktopの開発は停滞しがちになり,RDPのバージョンアップに伴なう新機能への対応が進まなくなりました。そこで新しく始まったのがFreeRDPプロジェクトです。

図3 FreeRDPのサイト

図3 FreeRDPのサイト

FreeRDPは,もともとはrdesktopからのフォークとして始まったものの,その後,積極的にソースコードの見直しと各機能のモジュール化を進め,バージョン1.0になると「rdesktop由来のソースコードが無くなった」として,ライセンスもApache Licenseに変更しています(rdesktopはGPL)⁠

FreeRDPは,RDPのバージョンアップに伴なって追加された機能にも積極的に取り組み,最近のバージョン(1.0.2)ではRDP 8.0の機能の大部分に対応しているそうです。

一方,2011年になると,停滞していたrdesktopの開発を,Linux用の端末サーバやThinクライアントを開発しているスウェーデンのCendio社が率いることとなり,再び新しいバージョンがリリースされるようになりました。rdesktopの最新版は1.8.2で,RDP 5.2の大部分と,それ以後に追加された機能のいくつかが実装されているそうです。

著者プロフィール

こじまみつひろ

Plamo Linuxとりまとめ役。もともとは人類学的にハッカー文化を研究しようとしていたものの,いつの間にかミイラ取りがミイラになってOSSの世界にどっぷりと漬かってしまいました。最近は田舎に隠棲して半農半自営な生活をしながらソフトウェアと戯れています。

URLhttp://www.linet.gr.jp/~kojima/Plamo/index.html

コメント

  • RDP プロトコル

    t.128を拡張した、と確かにMSの解説には書かれていましたが、あれはレイヤが違います。インターネットプロトコル全部を IP の拡張というようなものです。RDPはT.128(は公開されていました)の上というかペイロード部分にMS独自のrdpデータを載せていて、以前は、その上位層部分が非公開でした。欧州での独占禁止法訴訟の結果として公開されたのですが、NDAを締結しないと入手できなかったのですよ。と、rdesktopの移植を断念したおっさんプログラマの言い訳でした。

    Commented : #1  ath (2016/03/04, 09:29)

コメントの記入