リモート デスクトップ プロトコル (RDP) の解説

この記事は、以前は次の ID で公開されていました: JP186607
概要
この資料では、ターミナル サーバーとターミナル サーバー クライアント間の通信に使用されるリモート デスクトップ プロトコル (RDP) について解説します。RDP のカプセル化および暗号化は、TCP 層の中で行われます。
詳細

リモート デスクトップ プロトコル (RDP) の解説

RDP は、T-120 プロトコル標準を基に拡張を行ったものです。マルチチャネルを使用できるプロトコルでは、プレゼンテーション データやシリアル デバイス通信、ライセンス情報、および高度に暗号化されたデータ (キーボードやマウスの操作) などをそれぞれ伝送するために、独立した仮想チャネルを使用できます。RDP は、中核となる T.Share プロトコルを拡張したものであり、マルチポイント (マルチパーティ セッション) をサポートするために必要となる高度な機能などを実行するための十分な余地が RDP に残されています。マルチポイント データの配信を使用することによって、同じデータを各セッションに個別に送信することなく、アプリケーションからデータを "リアルタイムに" 複数のパーティに対して送信することができます。応用例として、仮想ホワイトボードがあります。

Windows ターミナル サーバーの最初のリリースでは、高速かつ信頼性の高いポイント ツー ポイント (シングルセッション) 通信を提供することに力点が置かれています。Terminal Server 4.0 の最初のリリースで使用されるデータ チャネルは 1 つのみでしたが、自由度の高い RDP を導入したことにより、将来の製品に機能を追加する大きな余地が生じました。

接続を行うための RDP を Windows NT Terminal Server に実装することをマイクロソフトが決定した理由の 1 つは、RDP を使用することによりきわめて拡張性の高い基盤が提供され、それによってより多くの機能を追加できることです。これは、RDP では 64,000 の独立したチャネルをデータ転送に使用できるためです。しかし、現在転送に使用しているチャネルは 1 つのみ (キーボード、マウスおよびプレゼンテーション データ用) です。

また RDP は、多数の異なるネットワーク トポロジ (ISDN や POTS、および IPX、NetBIOS、TCP/IP などの多数の LAN プロトコル) をサポートする設計になっています。現在、RDP は TCP/IP 上でのみ動作しますが、ユーザーからの要望しだいでは、将来のバージョンで他のプロトコルをサポートする可能性もあります。

RDP スタックを使用して行われるデータの送受信に関連する動作は、今日 LAN ネットワークで使用される 7 階層 OSI モデルの標準と本質的に同じです。アプリケーションまたはサービスから送信されるデータは、その下のプロトコル スタックに渡され、分割、チャネルへの振り分け (これには MCS: Multipoint Communications Service が使用されます)、暗号化、ヘッダーの追加、フレーム化およびパッケージ化が行われてネットワーク プロトコルとなり、最終的に媒体を経由してクライアントに送信されます。返信されたデータについては、これと逆の順序で同じ処理が行われ、アドレスの除去、ヘッダーの除去および解読などが行われてアプリケーションに届けられ、実際に使用されます。プロトコル スタックでは、これらの変更は主に第 4 階層と第 7 階層の中間で行われます。ここでは、データの暗号化、ヘッダーの追加、フレーム化、チャネルへの振り分けおよび優先度の設定が行われます。

マイクロソフトでは、RDP を使用してアプリケーションを開発する上で重要な点の 1 つとして、プロトコル スタックの複雑な操作を抽象化しました。これによって、簡潔な設計で、動作良好な 32 ビット アプリケーションを容易に作成できるようになります。ターミナル サーバー、およびサーバーとクライアント間の接続で実装される RDP スタックでは、その他の部分に配慮しています。

ターミナル サーバーとアプリケーションとの対話方法、および Windows Terminal Server インフラストラクチャにおけるアプリケーション開発を行う上で注意する点については、ホワイト ペーパー『Windows NT Server,Terminal Server Edition 対応アプリケーションの最適化』を参照してください。RDP スタックのコンポーネントのうち、MCSMUX (Multipoint Communication Service)、GCC (Generic Conference Control)、Wdtshare.sys および Tdtcp.sys の 4 つについては、この資料で取り上げる必要があります。MCSmux および GCC は、ITU (国際電気通信連合) T.120 ファミリの一部です。MCS では、2 つの標準から構成されています。1 つはマルチポイント サービスを定義する T.122 です。もう 1 つはデータ転送プロトコルの仕様を定める T.125 です。MCSMux は、チャネルの割り当て (定義済みの仮想チャネルをプロトコル内で多重化することによって行います)、優先度、および送信データのセグメンテーションを制御します。これは、GCC での処理を視野に入れて、複数の RDP スタックを 1 つの要素にまで本質的に抽象化します。GCC では、これらの複数チャネルの管理を行います。GCC によってセッション接続の作成と削除、および MCS が提供するリソースの制御を行います。それぞれのターミナル サーバー プロトコル (現時点では RDP と Citrix の ICA のみサポートされます) によって、プロトコル スタックのインスタンス (接続要求を待つリスナ スタック) が読み込まれます。ターミナル サーバーのデバイス ドライバーは、RDP プロトコルの動作の調整および管理を行います。これは、UI 転送、圧縮、暗号化、フレーム化などを行う RDP ドライバー (Wdtshare.sys)、および基礎となる TCP/IP ネットワーク プロトコル上でプロトコルのパッケージ化を行うトランスポート ドライバー (Tdtcp.sys) などの小さなコンポーネント群で構成されています。

RDP は、その基礎となるトランスポート スタック (TCP/IP の場合) から完全に独立した形で開発されています。RDP がトランスポート スタックから完全に独立しているため、ユーザーの要望に応じて他のネットワーク プロトコルのトランスポート ドライバーを追加しても、プロトコルの基礎となる部分に対して重要な変更を行う必要はほぼ (または完全に) なくなります。この点が、ネットワーク上の RDP のパフォーマンスと拡張性を支える主要な要素です。
注意 : これは、マイクロソフトのサポート組織内で直接作成された "緊急公開" の資料です。 この資料には、確認中の問題に関する現状ベースの情報が記載されています。 情報提供のスピードを優先するため、資料には誤植が含まれる可能性があり、予告なしに随時改定される場合があります。 その他の考慮事項については、使用条件を参照してください。
プロパティ

文書番号:186607 - 最終更新日: 07/02/2013 12:46:00 - リビジョン: 1.0

  • kbinfo KB186607
フィードバック