特許第5652891号(P5652891)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電気株式会社の特許一覧 ▶ NECソリューションイノベータ株式会社の特許一覧

<>
  • 特許5652891-リモートデスクトップシステム 図000002
  • 特許5652891-リモートデスクトップシステム 図000003
  • 特許5652891-リモートデスクトップシステム 図000004
  • 特許5652891-リモートデスクトップシステム 図000005
  • 特許5652891-リモートデスクトップシステム 図000006
  • 特許5652891-リモートデスクトップシステム 図000007
  • 特許5652891-リモートデスクトップシステム 図000008
  • 特許5652891-リモートデスクトップシステム 図000009
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5652891
(24)【登録日】2014年11月28日
(45)【発行日】2015年1月14日
(54)【発明の名称】リモートデスクトップシステム
(51)【国際特許分類】
   G06F 13/00 20060101AFI20141218BHJP
   H04L 12/807 20130101ALI20141218BHJP
【FI】
   G06F13/00 353A
   H04L12/807
【請求項の数】21
【全頁数】25
(21)【出願番号】特願2013-32836(P2013-32836)
(22)【出願日】2013年2月22日
(65)【公開番号】特開2014-164369(P2014-164369A)
(43)【公開日】2014年9月8日
【審査請求日】2013年2月22日
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(73)【特許権者】
【識別番号】000232092
【氏名又は名称】NECソリューションイノベータ株式会社
(74)【代理人】
【識別番号】100124811
【弁理士】
【氏名又は名称】馬場 資博
(74)【代理人】
【識別番号】100088959
【弁理士】
【氏名又は名称】境 廣巳
(72)【発明者】
【氏名】釣 大輔
(72)【発明者】
【氏名】中田 佳孝
【審査官】 木村 雅也
(56)【参考文献】
【文献】 特開2012−044668(JP,A)
【文献】 特開2013−034101(JP,A)
【文献】 特開2005−249841(JP,A)
【文献】 特表2008−507928(JP,A)
【文献】 特開2008−270972(JP,A)
【文献】 特開2005−136684(JP,A)
【文献】 特開2008−172521(JP,A)
【文献】 特開2001−195326(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/00
H04L 12/807
(57)【特許請求の範囲】
【請求項1】
サーバ装置とクライアント装置とがネットワークを介して接続されたリモートデスクトップシステムであって、
前記クライアント装置に接続されるクライアント側プロキシと、
前記サーバ装置に接続されると共に前記ネットワークを介して前記クライアント側プロキシに接続されるサーバ側プロキシとを有し、
前記クライアント側プロキシは、
前記クライアント装置から前記サーバ装置向けの情報を受信してTCP通信により前記ネットワークを通じて前記サーバ側プロキシへ送信する第1の通信部と、
前記サーバ側プロキシから前記クライアント装置向けの情報をTCP通信により前記ネットワークを通じて受信し前記クライアント装置へ送信する第2の通信部と
を有し、
前記サーバ側プロキシは、
前記サーバ装置から前記クライアント装置向けの情報を受信してTCP通信により前記ネットワークを通じて前記クライアント側プロキシへ送信する第3の通信部と、
前記クライアント側プロキシから前記サーバ装置向けの情報をTCP通信により前記ネットワークを通じて受信し前記サーバ装置へ送信する第4の通信部と
を有し、
前記サーバ側プロキシは、
前記第3の通信部に存在する送信待ちの前記クライアント装置向けの情報の量が閾値以下である時に、前記ネットワークの混雑状況を調査するためのテストデータを前記ネットワークを通じて前記クライアント側プロキシとの間で送受信して前記ネットワークの混雑状況を判断するネットワーク状態確認部と、
前記判断された前記ネットワークの混雑状況に応じて前記TCP通信のウィンドウサイズを制御するウィンドウサイズ調整部と
を有する
リモートデスクトップシステム。
【請求項2】
前記第3の通信部は、
中間バッファと、
前記サーバ装置から受信した前記情報を前記中間バッファに蓄積する受信処理部と、
該受信処理部と独立に動作し、前記中間バッファに蓄積された前記情報を読み出して前記クライアント側プロキシへ送信する送信処理部と
を有する請求項1に記載のリモートデスクトップシステム。
【請求項3】
前記第3の通信部は、
自通信部に存在する送信待ちの前記クライアント装置向けの情報の送信順序を、前記情報の種別と該種別に対して予め定められた優先度とに基づいて決定する送信順序決定部
を有する請求項1または2に記載のリモートデスクトップシステム。
【請求項4】
前記第3の通信部は、
自通信部に存在する送信待ちの前記クライアント装置向けの複数の画面イメージから、重複する画面イメージを削除する重複画面イメージ削除部
を有する請求項1乃至の何れかに記載のリモートデスクトップシステム。
【請求項5】
前記第3の通信部は、
前記サーバ装置から受信した画面イメージを用いて前記サーバ装置のデスクトップ画面の画面イメージを生成し、自通信部に存在する送信待ちの前記クライアント装置向けの画面イメージの総量が前記生成したデスクトップ画面の画面イメージの総量を上回る場合、前記送信待ちの前記クライアント装置向けの画面イメージを削除し、前記生成した前記デスクトップ画面の画面イメージを送信する画面生成部
を有する請求項1乃至の何れかに記載のリモートデスクトップシステム。
【請求項6】
サーバ装置とクライアント装置とをネットワークを介してリモートデスクトップ接続する方法であって、
前記クライアント装置に接続されるクライアント側プロキシが、前記クライアント装置から前記サーバ装置向けの情報を受信し、TCP通信により、前記ネットワークを通じて、前記サーバ装置に接続されるサーバ側プロキシへ送信し、
前記サーバ側プロキシが、前記クライアント側プロキシから前記サーバ装置向けの情報を、TCP通信により、前記ネットワークを通じて受信し、前記サーバ装置へ送信し、
前記サーバ側プロキシが、前記サーバ装置から前記クライアント装置向けの情報を受信し、TCP通信により、前記ネットワークを通じて、前記クライアント側プロキシへ送信し、
前記クライアント側プロキシが、前記サーバ側プロキシから前記クライアント装置向けの情報を、TCP通信により、前記ネットワークを通じて受信し、前記クライアント装置へ送信し、
前記サーバ側プロキシが、送信待ちの前記クライアント装置向けの情報の量が閾値以下である時に、前記ネットワークの混雑状況を調査するためのテストデータを前記ネットワークを通じて前記クライアント装置側との間で送受信して前記ネットワークの混雑状況を判断し、前記判断した前記ネットワークの混雑状況に応じて前記TCP通信のウィンドウサイズを制御する
リモートデスクトップ接続方法。
【請求項7】
リモートデスクトップシステムを構成するクライアント装置とサーバ装置のうち前記サーバ装置に接続されるプロキシ装置であって、
前記サーバ装置から前記クライアント装置向けの情報を受信してTCP通信により前記ネットワークを通じて前記クライアント装置側へ送信する第1の通信部と、
前記クライアント装置側から前記サーバ装置向けの情報をTCP通信により前記ネットワークを通じて受信し前記サーバ装置へ送信する第2の通信部と
前記第1の通信部に存在する送信待ちの前記クライアント装置向けの情報の量が閾値以下である時に、前記ネットワークの混雑状況を調査するためのテストデータを前記ネットワークを通じて前記クライアント装置側との間で送受信して前記ネットワークの混雑状況を判断するネットワーク状態確認部と、
前記判断された前記ネットワークの混雑状況に応じて前記TCP通信のウィンドウサイズを制御するウィンドウサイズ調整部と
を有するプロキシ装置。
【請求項8】
前記第1の通信部は、
中間バッファと、
前記サーバ装置から受信した前記情報を前記中間バッファに蓄積する受信処理部と、
該受信処理部と独立に動作し、前記中間バッファに蓄積された前記情報を読み出して前記クライアント装置側へ送信する送信処理部と
を有する請求項に記載のプロキシ装置。
【請求項9】
前記第1の通信部は、
自通信部に存在する送信待ちの前記クライアント装置向けの情報の送信順序を、前記情報の種別と該種別に対して予め定められた優先度とに基づいて決定する送信順序決定部
を有する請求項7または8に記載のプロキシ装置。
【請求項10】
前記第1の通信部は、
自通信部に存在する送信待ちの前記クライアント装置向けの複数の画面イメージから、重複する画面イメージを削除する重複画面イメージ削除部
を有する請求項7乃至9の何れかに記載のプロキシ装置。
【請求項11】
前記第1の通信部は、
前記サーバ装置から受信した画面イメージを用いて前記サーバ装置のデスクトップ画面の画面イメージを生成し、自通信部に存在する送信待ちの前記クライアント装置向けの画面イメージの総量が前記生成したデスクトップ画面の画面イメージの総量を上回る場合、前記送信待ちの前記クライアント装置向けの画面イメージを削除し、前記生成した前記デスクトップ画面の画面イメージを送信する画面生成部
を有する請求項7乃至10の何れかに記載のプロキシ装置。
【請求項12】
リモートデスクトップシステムを構成するクライアント装置とサーバ装置のうち前記サーバ装置に接続されるプロキシ装置が実行するプロキシ方法であって、
前記サーバ装置から前記クライアント装置向けの情報を受信してTCP通信により前記ネットワークを通じて前記クライアント装置側へ送信し、
前記クライアント装置側から前記サーバ装置向けの情報をTCP通信により前記ネットワークを通じて受信し前記サーバ装置へ送信し、
送信待ちの前記クライアント装置向けの情報の量が閾値以下である時に、前記ネットワークの混雑状況を調査するためのテストデータを前記ネットワークを通じて前記クライアント装置側との間で送受信して前記ネットワークの混雑状況を判断し、
前記判断した前記ネットワークの混雑状況に応じて前記TCP通信のウィンドウサイズを制御する
プロキシ方法。
【請求項13】
前記クライアント装置向けの情報の受信と送信では、
前記サーバ装置から受信した前記情報を中間バッファに蓄積する動作と、前記中間バッファに蓄積された前記情報を読み出して前記クライアント装置側へ送信する動作とを独立に並行して行う
請求項12に記載のプロキシ方法。
【請求項14】
送信待ちの前記クライアント装置向けの情報の送信順序を、前記情報の種別と該種別に対して予め定められた優先度とに基づいて決定する
請求項12または13に記載のプロキシ方法。
【請求項15】
送信待ちの前記クライアント装置向けの複数の画面イメージから、重複する画面イメージを削除する
請求項12乃至14の何れかに記載のプロキシ方法。
【請求項16】
前記サーバ装置から受信した画面イメージを用いて前記サーバ装置のデスクトップ画面の画面イメージを生成し、送信待ちの前記クライアント装置向けの画面イメージの総量が前記生成したデスクトップ画面の画面イメージの総量を上回る場合、前記送信待ちの前記クライアント装置向けの画面イメージを削除し、前記生成した前記デスクトップ画面の画面イメージを送信する
請求項12乃至15の何れかに記載のプロキシ方法。
【請求項17】
リモートデスクトップシステムを構成するクライアント装置とサーバ装置のうち前記サーバ装置に接続されるプロキシ装置を構成するコンピュータを、
前記サーバ装置から前記クライアント装置向けの情報を受信してTCP通信により前記ネットワークを通じて前記クライアント装置側へ送信する第1の通信部と、
前記クライアント装置側から前記サーバ装置向けの情報をTCP通信により前記ネットワークを通じて受信し前記サーバ装置へ送信する第2の通信部と
前記第1の通信部に存在する送信待ちの前記クライアント装置向けの情報の量が閾値以下である時に、前記ネットワークの混雑状況を調査するためのテストデータを前記ネットワークを通じて前記クライアント装置側との間で送受信して前記ネットワークの混雑状況を判断するネットワーク状態確認部と、
前記判断された前記ネットワークの混雑状況に応じて前記TCP通信のウィンドウサイズを制御するウィンドウサイズ調整部と
して機能させるためのプログラム。
【請求項18】
前記第1の通信部は、
中間バッファと、
前記サーバ装置から受信した前記情報を前記中間バッファに蓄積する受信処理部と、
該受信処理部と独立に動作し、前記中間バッファに蓄積された前記情報を読み出して前記クライアント装置側へ送信する送信処理部と
を有する請求項17に記載のプログラム。
【請求項19】
前記第1の通信部は、
自通信部に存在する送信待ちの前記クライアント装置向けの情報の送信順序を、前記情報の種別と該種別に対して予め定められた優先度とに基づいて決定する送信順序決定部
を有する請求項17または18に記載のプログラム。
【請求項20】
前記第1の通信部は、
自通信部に存在する送信待ちの前記クライアント装置向けの複数の画面イメージから、重複する画面イメージを削除する重複画面イメージ削除部
を有する請求項17乃至19の何れかに記載のプログラム。
【請求項21】
前記第1の通信部は、
前記サーバ装置から受信した画面イメージを用いて前記サーバ装置のデスクトップ画面の画面イメージを生成し、自通信部に存在する送信待ちの前記クライアント装置向けの画面イメージの総量が前記生成したデスクトップ画面の画面イメージの総量を上回る場合、前記送信待ちの前記クライアント装置向けの画面イメージを削除し、前記生成した前記デスクトップ画面の画面イメージを送信する画面生成部
を有する請求項17乃至20の何れかに記載のプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、リモートデスクトップシステム、リモートデスクトップ接続方法、プロキシ装置、プロキシ方法、およびプログラムに関する。
【背景技術】
【0002】
コンピュータのGUI(グラフィックユーザインタフェース)をネットワークを通じて接続された別の機器から操作するリモートデスクトップシステムが広く採用されている。リモートデスクトップシステムにおいて、ネットワークを介して制御されるコンピュータ側をサーバ装置、ユーザが操作を行う機器側をクライアント装置と呼ぶ。また、リモートデスクトップ接続に適する通信プロトコルとして、RDP(Remote Desktop Protocol)がある。このRDPはアプリケーション層のプロトコルである。
【0003】
他方、機能拡張のためにサーバ装置およびクライアント装置のそれぞれにプロキシを設けてサーバ装置とクライアント装置との間でプロキシを介してデータの授受を行うことが本発明に関連する第1の関連技術として知られている(例えば特許文献1参照)。上記第1の関連技術では、リモートデスクトップクライアントとしての複合機と中継装置としてのプロキシサーバとがバスを介して接続されたイントラネットと、リモートデスクトップサーバとしてのコールセンタの端末装置と、中継装置としてのプロキシサーバとを、インターネットを介して接続している。
【0004】
また、遠隔にある端末に対して大容量データを効率良く高速転送するためにプロキシ間をUDP(User Datagram Protocol)接続し、定期的に再送制御とフロー制御を行いながらUDPを使用してデータ転送を行うことが本発明に関連する第2の関連技術として提案されている(例えば特許文献2参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2008−270972号公報
【特許文献2】特開2005−136684号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、プロキシ間の通信をUDPで行うリモートデスクトップシステムでは、パケットロスが発生すると、クライアント装置からサーバ装置に向けて送信されるコマンド等の欠落や、反対にサーバ装置からクライアント装置に向けて送信される応答や画面データ等の欠落が生じる。このため、パケットロスの多い通信環境ではリモートデスクトップ接続は困難である。また特許文献2の技術を特許文献1に適用してプロキシ間で定期的に再送制御とフロー制御を行いながらUDPを使用してデータ転送を行う構成では、パケットロスが発生した際のリカバリや順序制御を独自に開発してプロキシに実装する必要がある。
【0007】
本発明の目的は、上述した課題、すなわち、プロキシ間の通信をUDPで行うリモートデスクトップシステムでは、パケットロスが発生した際のリカバリや順序制御を独自開発しなければリモートデスクトップ接続は困難である、という課題を解決するリモートデスクトップシステムを提供することにある。
【課題を解決するための手段】
【0008】
本発明の第1の観点に係るリモートデスクトップシステムは、
サーバ装置とクライアント装置とがネットワークを介して接続されたリモートデスクトップシステムであって、
上記クライアント装置に接続されるクライアント側プロキシと、
上記サーバ装置に接続されると共に上記ネットワークを介して上記クライアント側プロキシに接続されるサーバ側プロキシとを有し、
上記クライアント側プロキシは、
上記クライアント装置から上記サーバ装置向けの情報を受信してTCP通信により上記ネットワークを通じて上記サーバ側プロキシへ送信する第1の通信部と、
上記サーバ側プロキシから上記クライアント装置向けの情報をTCP通信により上記ネットワークを通じて受信し上記クライアント装置へ送信する第2の通信部と
を有し、
上記サーバ側プロキシは、
上記サーバ装置から上記クライアント装置向けの情報を受信してTCP通信により上記ネットワークを通じて上記クライアント側プロキシへ送信する第3の通信部と、
上記クライアント側プロキシから上記サーバ装置向けの情報をTCP通信により上記ネットワークを通じて受信し上記サーバ装置へ送信する第4の通信部と
を有する。
【0009】
本発明の第2の観点に係るリモートデスクトップ接続方法は、
サーバ装置とクライアント装置とをネットワークを介してリモートデスクトップ接続する方法であって、
上記クライアント装置に接続されるクライアント側プロキシが、上記クライアント装置から上記サーバ装置向けの情報を受信し、TCP通信により、上記ネットワークを通じて、上記サーバ装置に接続されるサーバ側プロキシへ送信し、
上記サーバ側プロキシが、上記クライアント側プロキシから上記サーバ装置向けの情報を、TCP通信により、上記ネットワークを通じて受信し、上記サーバ装置へ送信し、
上記サーバ側プロキシが、上記サーバ装置から上記クライアント装置向けの情報を受信し、TCP通信により、上記ネットワークを通じて、上記クライアント側プロキシへ送信し、
上記クライアント側プロキシが、上記サーバ側プロキシから上記クライアント装置向けの情報を、TCP通信により、上記ネットワークを通じて受信し、上記クライアント装置へ送信する。
【0010】
本発明の第3の観点に係るプロキシ装置は、
リモートデスクトップシステムを構成するクライアント装置とサーバ装置のうち上記サーバ装置に接続されるプロキシ装置であって、
上記サーバ装置から上記クライアント装置向けの情報を受信してTCP通信により上記ネットワークを通じて上記クライアント装置側へ送信する第1の通信部と、
上記クライアント装置側から上記サーバ装置向けの情報をTCP通信により上記ネットワークを通じて受信し上記サーバ装置へ送信する第2の通信部と
を有する。
【0011】
本発明の第4の観点に係るプロキシ方法は、
リモートデスクトップシステムを構成するクライアント装置とサーバ装置のうち上記サーバ装置に接続されるプロキシ装置が実行するプロキシ方法であって、
上記サーバ装置から上記クライアント装置向けの情報を受信してTCP通信により上記ネットワークを通じて上記クライアント装置側へ送信し、
上記クライアント装置側から上記サーバ装置向けの情報をTCP通信により上記ネットワークを通じて受信し上記サーバ装置へ送信する。
本発明の第5の観点に係るプログラムは、
リモートデスクトップシステムを構成するクライアント装置とサーバ装置のうち上記サーバ装置に接続されるプロキシ装置を構成するコンピュータを、
上記サーバ装置から上記クライアント装置向けの情報を受信してTCP通信により上記ネットワークを通じて上記クライアント装置側へ送信する第1の通信部と、
上記クライアント装置側から上記サーバ装置向けの情報をTCP通信により上記ネットワークを通じて受信し上記サーバ装置へ送信する第2の通信部と
して機能させる。
【発明の効果】
【0012】
本発明は上述した構成を有するため、パケットロスが発生した際のリカバリや順序制御を独自に開発しなくてもパケットロスが多発する通信環境においてリモートデスクトップ接続を利用することが可能になる。
【図面の簡単な説明】
【0013】
図1】本発明の第1の実施形態のブロック図である。
図2】本発明の第2の実施形態のブロック図である。
図3】本発明の第3の実施形態のブロック図である。
図4】本発明の第3の実施形態においてネットワークのデータ転送時間を用いて送受信に使用するソケットバッファのサイズを変更する際に使用する式を示す図である。
図5】本発明の第3の実施形態におけるサーバ側プロキシモジュールのネットワーク状態確認部の処理の一例を示すフローチャートである。
図6】本発明の第3の実施形態におけるクライアント側プロキシモジュールのネットワーク状態確認部の処理の一例を示すフローチャートである。
図7】本発明の第4の実施形態の要部ブロック図である。
図8】本発明の第4の実施形態における通信部の処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0014】
次に本発明の実施の形態について図面を参照して詳細に説明する。
[第1の実施形態]
図1を参照すると、本発明の第1の実施形態にかかるリモートデスクトップシステム100は、サーバ装置110とクライアント装置120とがネットワーク130を介して接続されている。またサーバ装置110とネットワーク130との間にはサーバ側プロキシ140が介在し、クライアント装置120とネットワーク130との間にはクライアント側プロキシ150が介在する。
【0015】
クライアント側プロキシ150は、第1の通信部151と第2の通信部152とを有する。第1の通信部151は、クライアント装置120からサーバ装置110向けの情報を受信し、TCP通信によりネットワーク130を通じてサーバ側プロキシ140へ送信する機能を有する。第2の通信部152は、サーバ側プロキシ140からクライアント装置120向けの情報をTCP通信によりネットワーク130を通じて受信し、クライアント装置120へ送信する機能を有する。
【0016】
サーバ側プロキシ140は、第3の通信部141と第4の通信部142とを有する。第3の通信部141は、サーバ装置110からクライアント装置120向けの情報を受信し、TCP通信によりネットワーク130を通じてクライアント側プロキシ150へ送信する機能を有する。第4の通信部142は、クライアント側プロキシ150からサーバ装置110向けの情報をTCP通信によりネットワーク130を通じて受信し、サーバ装置110へ送信する機能を有する。
【0017】
上記クライアント側プロキシ150は、クライアント装置120と物理的に同じ装置あるいは異なる装置の何れに実装されていても良い。また上記サーバ側プロキシ140は、サーバ装置110と物理的に同じ装置あるいは異なる装置の何れに実装されていても良い。
【0018】
次に本実施形態に係るリモートデスクトップシステム100の動作を説明する。
【0019】
リモートデスクトップシステム100では、クライアント装置120からサーバ装置110に向けて、遠隔操作に必要なコマンド等の各種情報(以下、サーバ装置向けの情報と称す)が送信される。他方、サーバ装置110からクライアント装置120に向けて、コマンドに対する応答データやGUIの画面データ等(以下、クライアント向けの情報と称す)が送信される。これらサーバ装置向けの情報およびクライアント向けの情報は、本実施形態では以下のようにして送受信される。
【0020】
サーバ装置向けの情報は、まず、クライアント装置120からクライアント側プロキシ150に送信される。クライアント側プロキシ150の第1の通信部151は、クライアント装置120からサーバ装置向けの情報を受信すると、TCP通信により、ネットワーク130を通じて、サーバ側プロキシ140へ送信する。サーバ側プロキシ10の第4の通信部142は、クライアント側プロキシ150からサーバ装置向けの情報をTCP通信によりネットワーク130を通じて受信し、サーバ装置110へ送信する。
【0021】
これによって、クライアント装置120から送信されたサーバ装置向けの情報が、クライアント側プロキシ150、ネットワーク130、およびサーバ側プロキシ140を経由して、サーバ装置110へ届けられる。若し、ネットワーク130においてパケットロスが発生した場合、第1の通信部151はTCP通信によるACKを第4の通信部142から受信できないため、パケットの再送を行う。これによって、クライアント装置120から送信されたサーバ装置向けの情報がサーバ装置110に確実に届けられる。
【0022】
他方、クライアント装置向けの情報は、まず、サーバ装置110からサーバ側プロキシ140に送信される。サーバ側プロキシ140の第3の通信部141は、サーバ装置110からクライアント装置向けの情報を受信すると、TCP通信により、ネットワーク130を通じて、クライアント側プロキシ150へ送信する。クライアント側プロキシ150の第2の通信部152は、サーバ側プロキシ140からクライアント装置向けの情報をTCP通信によりネットワーク130を通じて受信し、クライアント装置120へ送信する。
【0023】
これによって、サーバ装置110から送信されたクライアント装置向けの情報が、サーバ側プロキシ140、ネットワーク130、およびクライアント側プロキシ150を経由して、クライアント装置120へ届けられる。若し、ネットワーク130においてパケットロスが発生した場合、第3の通信部141はTCP通信によるACKを第2の通信部152から受信できないため、パケットの再送を行う。これによって、サーバ装置110から送信されたクライアント装置向けの情報がクライアント装置120に確実に届けられる。
【0024】
このように本実施形態によれば、プロキシ間のネットワーク経由の通信でパケットロスが発生した際、リカバリや順序制御がTCPによって自動的に実施されるため、パケットロスが発生した際のリカバリや順序制御を独自に開発しなくてもパケットロスが多発する通信環境においてリモートデスクトップ接続を利用することが可能になる。
【0025】
[第2の実施形態]
図2を参照すると、本発明の第2の実施形態にかかるリモートデスクトップシステム200は、情報処理装置210と情報処理装置220とがネットワーク230を介して接続されている。
【0026】
情報処理装置210は、リモートデスクトップサーバモジュール240と、サーバ側プロキシモジュール250と、TCP通信部260とを有する。リモートデスクトップサーバモジュール240は、情報処理装置210をリモートデスクトップシステムにおけるサーバ装置として機能させるためのプログラムモジュールである。TCP通信部260は、情報処理装置210がネットワーク230を介して情報処理装置220等の他の装置とTCP通信を行うためのプログラムモジュールである。サーバ側プロキシモジュール250は、リモートデスクトップサーバモジュール240とTCP通信部260との間に介在するプログラムモジュールである。このサーバ側プロキシモジュール250を省略し、リモートデスクトップサーバモジュール240をTCP通信部260に接続する構成でもリモートデスクトップ接続は基本的に可能であるが、サーバ側の機能拡張のために、サーバ側プロキシモジュール250を介在させるようにしている。
【0027】
また情報処理装置220は、リモートデスクトップクライアントモジュール270と、クライアント側プロキシモジュール280と、TCP通信部290とを有する。リモートデスクトップクライアントモジュール280は、情報処理装置220をリモートデスクトップシステムにおけるクライアント装置として機能させるためのプログラムモジュールである。TCP通信部290は、情報処理装置220がネットワーク230を介して情報処理装置210等の他の装置とTCP通信を行うためのプログラムモジュールである。クライアント側プロキシモジュール280は、リモートデスクトップクライアントモジュール270とTCP通信部290との間に介在するプログラムモジュールである。このクライアント側プロキシモジュール280を省略し、リモートデスクトップクライアントモジュール270をTCP通信部270に接続する構成でもリモートデスクトップ接続は基本的に可能であるが、クライアント側の機能拡張のために、クライアント側プロキシモジュール280を介在させるようにしている。
【0028】
クライアント側プロキシモジュール280は、通信部281と通信部282とを有する。
【0029】
通信部281は、リモートデスクトップクライアントモジュール270から、遠隔操作に必要なコマンド等の各種情報(サーバ装置向けの情報)を受信し、TCP通信部290の機能を使ってTCP通信によりネットワーク230を通じてサーバ側の情報処理装置210へ送信する機能を有する。通信部281は、受信部2811と中間バッファ2812と送信部2813とを有する。
【0030】
中間バッファ2812は、サーバ装置向けの情報を一時的に蓄積するバッファメモリである。
【0031】
受信部2811は、リモートデスクトップクライアントモジュール270から受信したサーバ装置向けの情報を中間バッファ2812に格納する機能を有する。受信部2811は、受信バッファ28111と受信処理部28112とを有する。受信バッファ28111は、リモートデスクトップクライアントモジュール270からリモートデスクトップサーバモジュール240に送るサーバ装置向けの情報を一時的に蓄積するバッファである。リモートデスクトップクライアントモジュール270は、リモートデスクトップサーバモジュール240に対してサーバ装置向けの情報を送信する場合、送信する情報を受信バッファ28111に書き込む。受信処理部28112は、受信バッファ28111に書き込まれた情報を読み出して、中間バッファ2812に書き込む機能を有する。
【0032】
送信部2813は、中間バッファ2812に蓄積されたサーバ装置向けの情報をTCP通信部290の機能を使ってTCP通信によりネットワーク230を通じて情報処理装置210へ送信する機能を有する。送信部2813は、送信処理部28131と送信バッファ28132とを有する。送信処理部28131は、中間バッファ2812に蓄積されたサーバ装置向けの情報を読み出して送信バッファ28132に書き込む機能を有する。送信バッファ28132に書き込まれた情報はTCP通信部290によって読み出され、ネットワーク230を通じて情報処理装置210へ送信される。
【0033】
例えば、通信部281は1つのアプリケーション(プロセス)で構成され、受信バッファ28111および送信バッファ28132はソケット(Socket)バッファで構成される。また受信部2811と送信部2813とはそれぞれ1つのスレッドとして動作する。このため、受信部2811と送信部2813とは独立に並行して動作する。
【0034】
通信部282は、サーバ側の情報処理装置210からTCP通信部290およびネットワーク230を通じてTCP通信によって、コマンドに対する応答データやGUIの画面データ等(クライアント向けの情報)を受信し、リモートデスクトップクライアントモジュール270へ送信する機能を有する。通信部282は、受信部2821と中間バッファ2822と送信部2823とを有する。
【0035】
中間バッファ2822は、クライアント装置向けの情報を一時的に蓄積するバッファメモリである。
【0036】
受信部2821は、TCP通信部290から受信したクライアント装置向けの情報を中間バッファ2822に格納する機能を有する。受信部2821は、受信バッファ28211と受信処理部28212とを有する。受信バッファ28211は、情報処理装置210から受信したクライアント装置向けの情報を一時的に蓄積するバッファである。TCP通信部290は、ネットワーク230を通じて情報処理装置210のリモートデスクトップサーバモジュール240からクライアント装置向けの情報を受信すると、この受信した情報を受信バッファ28211に書き込む。受信処理部28212は、受信バッファ28211に書き込まれた情報を読み出して、中間バッファ2822に書き込む機能を有する。
【0037】
送信部2823は、中間バッファ2822に蓄積されたクライアント装置向けの情報をリモートデスクトップクライアントモジュール270へ送信する機能を有する。送信部2823は、送信処理部28231と送信バッファ28232とを有する。送信処理部28231は、中間バッファ2822に蓄積されたクライアント装置向けの情報を読み出して送信バッファ28232に書き込む機能を有する。送信バッファ28232に書き込まれた情報はリモートデスクトップクライアントモジュール270によって読み出される。
【0038】
例えば、通信部282は1つのアプリケーション(プロセス)で構成され、受信バッファ28211および送信バッファ28232はソケット(Socket)バッファで構成される。また受信部2821と送信部2823とはそれぞれ1つのスレッドとして動作する。このため、受信部2821と送信部2823とは独立に並行して動作する。
【0039】
サーバ側プロキシモジュール250は、通信部251と通信部252とを有する。
【0040】
通信部251は、リモートデスクトップサーバモジュール240から、クライアント向けの情報を受信し、TCP通信部260の機能を使ってTCP通信によりネットワーク230を通じてクライアント側の情報処理装置220へ送信する機能を有する。通信部251は、受信部2511と中間バッファ2512と送信部2513とを有する。
【0041】
中間バッファ2512は、クライアント装置向けの情報を一時的に蓄積するバッファメモリである。
【0042】
受信部2511は、リモートデスクトップサーバモジュール240から受信したクライアント装置向けの情報を中間バッファ2512に格納する機能を有する。受信部2511は、受信バッファ25111と受信処理部25112とを有する。受信バッファ25111は、リモートデスクトップサーバモジュール240からリモートデスクトップクライアントモジュール270に送るクライアント装置向けの情報を一時的に蓄積するバッファである。リモートデスクトップサーバモジュール240は、リモートデスクトップクライアントモジュール270に対してクライアント装置向けの情報を送信する場合、送信する情報を受信バッファ25111に書き込む。受信処理部25112は、受信バッファ25111に書き込まれた情報を読み出して、中間バッファ2512に書き込む機能を有する。
【0043】
送信部2513は、中間バッファ2512に蓄積されたクライアント装置向けの情報をTCP通信部260の機能を使ってTCP通信によりネットワーク230を通じて情報処理装置220へ送信する機能を有する。送信部2513は、送信処理部25131と送信バッファ25132とを有する。送信処理部25131は、中間バッファ2512に蓄積されたクライアント装置向けの情報を読み出して送信バッファ25132に書き込む機能を有する。送信バッファ25132に書き込まれた情報はTCP通信部260によって読み出され、ネットワーク230を通じて情報処理装置220へ送信される。
【0044】
例えば、通信部251は1つのアプリケーション(プロセス)で構成され、受信バッファ25111および送信バッファ25132はソケット(Socket)バッファで構成される。また受信部2511と送信部2513とはそれぞれ1つのスレッドとして動作する。このため、受信部2511と送信部2513とは独立に並行して動作する。
【0045】
通信部252は、クライアント側の情報処理装置220からTCP通信部260およびネットワーク230を通じてTCP通信によって、サーバ装置向けの情報を受信し、リモートデスクトップサーバモジュール240へ送信する機能を有する。通信部252は、受信部2521と中間バッファ2522と送信部2523とを有する。
【0046】
中間バッファ2522は、サーバ装置向けの情報を一時的に蓄積するバッファメモリである。
【0047】
受信部2521は、TCP通信部260から受信したサーバ装置向けの情報を中間バッファ2522に格納する機能を有する。受信部2521は、受信バッファ25211と受信処理部25212とを有する。受信バッファ25211は、情報処理装置220から受信したサーバ装置向けの情報を一時的に蓄積するバッファである。TCP通信部260は、ネットワーク230を通じて情報処理装置220のリモートデスクトップサーバモジュール270からサーバ装置向けの情報を受信すると、この受信した情報を受信バッファ25211に書き込む。受信処理部25212は、受信バッファ25211に書き込まれた情報を読み出して、中間バッファ2522に書き込む機能を有する。
【0048】
送信部2523は、中間バッファ2522に蓄積されたサーバ装置向けの情報をリモートデスクトップサーバモジュール240へ送信する機能を有する。送信部2523は、送信処理部25231と送信バッファ25232とを有する。送信処理部25231は、中間バッファ2522に蓄積されたサーバ装置向けの情報を読み出して送信バッファ25232に書き込む機能を有する。送信バッファ25232に書き込まれた情報はリモートデスクトップサーバモジュール240によって読み出される。
【0049】
例えば、通信部252は1つのアプリケーション(プロセス)で構成され、受信バッファ25211および送信バッファ25232はソケット(Socket)バッファで構成される。また受信部2521と送信部2523とはそれぞれ1つのスレッドとして動作する。このため、受信部2521と送信部2523とは独立に並行して動作する。
【0050】
次に本実施形態に係るリモートデスクトップシステム200の動作を説明する。
【0051】
リモートデスクトップシステム200では、情報処理装置220のリモートデスクトップクライアントモジュール270から情報処理装置210のリモートデスクトップサーバモジュール240に向けて、遠隔操作に必要なコマンド等の各種情報(サーバ装置向けの情報)が送信される。他方、情報処理装置210のリモートデスクトップサーバモジュール240から情報処理装置220のリモートデスクトップクライアントモジュール270に向けて、コマンドに対する応答データやGUIの画面データ等(クライアント装置向けの情報)が送信される。これらサーバ装置向けの情報およびクライアント装置向けの情報は、本実施形態では以下のようにして送受信される。
【0052】
まず、リモートデスクトップクライアントモジュール270は、サーバ装置向けの情報をクライアント側プロキシモジュール280の通信部281の受信部2811における受信バッファ28111に書き込む。
【0053】
次に、通信部281の受信処理部28112は、サーバ装置向けの情報が受信バッファ28111に蓄積されると、それを読み出して、中間バッファ2812に書き込む。
【0054】
次に、通信部281の送信部2813の送信処理部28131は、サーバ装置向けの情報が中間バッファ2812に蓄積されると、それを読み出して、送信バッファ28132に書き込む。
【0055】
次に、TCP通信部290は、送信バッファ28132にサーバ装置向けの情報が蓄積されると、それを読み出して、ネットワーク230を通じてTCP通信により情報処理装置210のリモートデスクトップサーバモジュール240宛に送信する。
【0056】
情報処理装置210のTCP通信部260は、TCP通信部290によって送信されたサーバ装置向けの情報を受信すると、受信した情報をサーバ側プロキシモジュール250の通信部252の受信部2521における受信バッファ25211に書き込む。
【0057】
受信部2521の受信処理部25212は、サーバ装置向けの情報が受信バッファ25211に蓄積されると、それを読み出して、中間バッファ2522に書き込む。
【0058】
通信部252の送信部における送信処理部25231は、中間バッファ2522にサーバ装置向けの情報が蓄積されると、それを読み出して、送信バッファ25232に書き込む。
【0059】
リモートデスクトップサーバモジュール240は、送信バッファ25232にサーバ装置向けの情報が蓄積されると、それを読み出す。そして、リモートデスクトップサーバモジュール240は、読み出した情報に応じた処理を実行する。
【0060】
以上のような動作によって、リモートデスクトップクライアントモジュール270から送信されたサーバ装置向けの情報が、クライアント側プロキシモジュール280の通信部281、TCP通信部290、ネットワーク230、TCP通信部260、サーバ側プロキシモジュール250の通信部252を経由して、リモートデスクトップサーバモジュール240へ届けられ、その情報に応じたサーバ処理が実行されることになる。若し、ネットワーク230においてパケットロスが発生した場合、TCP通信部290はTCP通信によるACKをTCP通信部260から受信できないため、パケットの再送を行う。これによって、サーバ装置向けの情報が情報処理装置220から情報処理装置210に確実に届けられる。
【0061】
また、通信部252、281は、中間バッファ2522、2812と、互いに独立して動作する受信部2521、2811および送信部2523、2813とから構成されているため、それぞれの通信部252、281では、送信動作の影響を受けずに受信動作が行え、その逆に受信動作の影響を受けずに送信動作が行える。例えば、通信部281の場合、ネットワーク230の通信状態が悪化して送信バッファ28132が満杯になり送信部2813の送信が一時的に停止したとしても、中間バッファ2812に空きがある限り、受信部2811はリモートデスクトップクライアントモジュール270からサーバ装置向けの情報を受信し続けることができる。これによってネットワーク230の通信状態の悪化によってリモートデスクトップクライアントモジュール270の動作が停止するのを防止できる。
【0062】
次に、クライアント装置向けの情報を送受信する動作について説明する。
【0063】
まず、リモートデスクトップサーバモジュール240は、クライアント装置向けの情報をサーバ側プロキシモジュール250の通信部251の受信部2511における受信バッファ25111に書き込む。
【0064】
次に、通信部251の受信処理部25112は、クライアント装置向けの情報が受信バッファ25111に蓄積されると、それを読み出して、中間バッファ2512に書き込む。
【0065】
次に、通信部251の送信部2513の送信処理部25131は、クライアント装置向けの情報が中間バッファ2512に蓄積されると、それを読み出して、送信バッファ25132に書き込む。
【0066】
次に、TCP通信部260は、送信バッファ25132にクライアント装置向けの情報が蓄積されると、それを読み出して、ネットワーク230を通じてTCP通信により情報処理装置220のリモートデスクトップクライアントモジュール270宛に送信する。
【0067】
情報処理装置220のTCP通信部290は、TCP通信部260によって送信されたクライアント装置向けの情報を受信すると、受信した情報をクライアント側プロキシモジュール280の通信部282の受信部2821における受信バッファ28211に書き込む。
【0068】
受信部2821の受信処理部28212は、クライアント装置向けの情報が受信バッファ28211に蓄積されると、それを読み出して、中間バッファ2822に書き込む。
【0069】
通信部282の送信部における送信処理部28231は、中間バッファ2822にクライアント装置向けの情報が蓄積されると、それを読み出して、送信バッファ28232に書き込む。
【0070】
リモートデスクトップクライアントモジュール270は、送信バッファ28232にクライアント装置向けの情報が蓄積されると、それを読み出す。そして、リモートデスクトップサーバクライアントモジュール270は、読み出した情報に応じた処理を実行する。
【0071】
以上のような動作によって、リモートデスクトップサーバモジュール240から送信されたクライアント装置向けの情報が、サーバ側プロキシモジュール250の通信部251、TCP通信部260、ネットワーク230、TCP通信部290、サーバ側プロキシモジュール280の通信部282を経由して、リモートデスクトップクライアントモジュール270へ届けられ、その情報に応じたクライアント処理が実行されることになる。若し、ネットワーク230においてパケットロスが発生した場合、TCP通信部260はTCP通信によるACKをTCP通信部290から受信できないため、パケットの再送を行う。これによって、クライアント装置向けの情報が情報処理装置210から情報処理装置220に確実に届けられる。
【0072】
また、通信部251、282は、中間バッファ2512、2822と、互いに独立して動作する受信部2511、2821および送信部2513、2822とから構成されているため、それぞれの通信部251、282では、送信動作の影響を受けずに受信動作が行え、その逆に受信動作の影響を受けずに送信動作が行える。例えば、通信部251の場合、ネットワーク230の通信状態が悪化して送信バッファ25132が満杯になり送信部2513の動作が一時的に停止したとしても、中間バッファ2512に空きがある限り、受信部2511はリモートデスクトップサーバモジュール240からクライアント装置向けの情報を受信し続けることができる。これによってネットワーク230の通信状態の悪化によってリモートデスクトップサーバモジュール240の動作が停止するのを防止できる。
【0073】
[第3の実施形態]
図3を参照すると、本発明の第3の実施形態にかかるリモートデスクトップシステム300は、情報処理装置310と情報処理装置320とがネットワーク330を介して接続されている。
【0074】
情報処理装置310は、リモートデスクトップサーバモジュール340と、サーバ側プロキシモジュール350と、TCP通信部360とを有する。リモートデスクトップサーバモジュール340およびTCP通信部360は、図2に示した第2の実施形態におけるリモートデスクトップサーバモジュール240およびTCP通信部260と同じ機能を有する。サーバ側プロキシモジュール350は、通信部351と通信部352とネットワーク状態確認部353とウインドウサイズ調整部354とを有する。通信部351および通信部352は、図2に示した第2の実施形態における通信部251および通信部252と同じ機能を有する。すなわち、通信部351が有する受信部3511、中間バッファ3512、送信部3513、上記受信部3511が有する受信バッファ35111、受信処理部35112、上記送信部3513が有する送信処理部35131、送信バッファ35132は、図2に示した第2の実施形態における通信部251が有する受信部2511、中間バッファ2512、送信部2513、上記受信部2511が有する受信バッファ25111、受信処理部25112、上記送信部2513が有する送信処理部25131、送信バッファ25132と同じ機能を有する。また、通信部352が有する受信部3521、中間バッファ3522、送信部3523、上記受信部3521が有する受信バッファ35211、受信処理部35212、上記送信部3523が有する送信処理部35231、送信バッファ35232は、図2に示した第2の実施形態における通信部252が有する受信部2521、中間バッファ2522、送信部2523、上記受信部2521が有する受信バッファ25211、受信処理部25212、上記送信部2523が有する送信処理部25231、送信バッファ25232と同じ機能を有する。
【0075】
また情報処理装置320は、リモートデスクトップクライアントモジュール370と、クライアント側プロキシモジュール380と、TCP通信部390とを有する。リモートデスクトップクライアントモジュール370およびTCP通信部390は、図2に示した第2の実施形態におけるリモートデスクトップクライアントモジュール270およびTCP通信部290と同じ機能を有する。クライアント側プロキシモジュール380は、通信部381と通信部382とネットワーク状態確認部383とウインドウサイズ調整部384とを有する。通信部381および通信部382は、図2に示した第2の実施形態における通信部281および通信部282と同じ機能を有する。すなわち、通信部381が有する受信部3811、中間バッファ3812、送信部3813、上記受信部3811が有する受信バッファ38111、受信処理部38112、上記送信部3813が有する送信処理部38131、送信バッファ38132は、図2に示した第2の実施形態における通信部281が有する受信部2811、中間バッファ2812、送信部2813、上記受信部2811が有する受信バッファ28111、受信処理部28112、上記送信部2813が有する送信処理部28131、送信バッファ28132と同じ機能を有する。また、通信部382が有する受信部3821、中間バッファ3822、送信部3823、上記受信部3821が有する受信バッファ38211、受信処理部38212、上記送信部3823が有する送信処理部38231、送信バッファ38232は、図2に示した第2の実施形態における通信部282が有する受信部2821、中間バッファ2822、送信部2823、上記受信部2821が有する受信バッファ28211、受信処理部28212、上記送信部2823が有する送信処理部28231、送信バッファ28232と同じ機能を有する。
【0076】
サーバ側プロキシモジュール350のネットワーク状態確認部353とクライアント側プロキシモジュール380のネットワーク状態確認部383とは、ネットワーク330の混雑状況を調査するためのテストデータをネットワーク330を通じて送受信することによって、情報処理装置310から情報処理装置320に向かう経路に関するネットワーク330の混雑状況を調査する機能を有する。ネットワーク330の混雑状況を表す指標として、本実施形態ではデータ転送時間を使用する。具体的には、ネットワーク状態確認部353は、現在時刻を送信時刻として記載したテストデータを送信バッファ35132に書き込むことによって、TCP通信部360を利用してネットワーク330およびTCP通信部390経由でテストデータをサーバ側プロキシモジュール350からクライアント側プロキシモジュール380の受信バッファ38211へ送信する。ネットワーク状態確認部383は、受信バッファ38211からテストデータを取り出し、テストデータに記載されている送信時刻と現在時刻との差から、送信バッファ35132から受信バッファ38211までのデータ転送時間を算出する。そして、ネットワーク状態確認部383は、算出したデータ転送時間を自モジュールのウインドウサイズ調整部384へ通知する。またネットワーク状態確認部383は、算出したデータ転送時間を記載した応答データを送信バッファ38132に書き込むことによって、TCP通信部390を利用してネットワーク330およびTCP通信部360経由で応答データをクライアント側プロキシモジュール380からサーバ側プロキシモジュール350の受信バッファ35211へ送信する。ネットワーク状態確認部353は、受信バッファ35211から応答データを取り出し、応答データに記載されているデータ転送時間をウインドウサイズ調整部354へ通知する。
【0077】
テストデータを送信することによってクライアント装置向けの情報の送信が遅延することを避けるために、ネットワーク状態確認部353は、サーバ側プロキシモジュール350における送信待ちのクライアント装置向けの情報の量が閾値以下であるタイミングでテストデータを送信する。また、応答データを送信することによってサーバ装置向けの情報の送信が遅延することを避けるために、ネットワーク状態確認部383は、クライアント側プロキシモジュール380における送信待ちのサーバ装置向けの情報の量が閾値以下であるタイミングで応答データを送信する。
【0078】
ウインドウサイズ調整部354、384は、通知されたデータ転送時間に従って、TCP通信部360からTCP通信部390への送受信に使用するTCPのウインドウサイズを調整する機能を有する。例えば、TCPのウインドウサイズを拡大調整することによりデータ転送時間が短くなれば続けて拡大調整を行い、TCPのウインドウサイズを拡大調整することによりデータ転送時間が長くなれば逆に縮小調整を行う。また、TCPのウインドウサイズを縮小調整することによりデータ転送時間が短くなれば続けて縮小調整を行い、TCPのウインドウサイズを縮小調整することによりデータ転送時間が長くなれば逆に拡大調整を行う。
【0079】
本実施形態では、ウインドウサイズの調整は、送受信に使用するソケットバッファのサイズの変更に伴ってウインドウサイズが決定されるソケットの仕組みを利用する。ソケットバッファのサイズの変更は、図4に示す式に従う。
【0080】
図4に示す式において、Xnは今回測定されたデータ転送時間、Xn-1は前回測定されたデータ転送時間、aは正の定数、Cnは今回のソケットバッファの増減量、Cn-1は前回のソケットバッファの増減量である。ソケットバッファの増減量が一定量より少ない場合は、増減調整を行わず又n回目の測定データとして採用しない。また、ソケットバッファのサイズは正の最小値を持ち、初期値は予め設定されたデフォルト値を使用する。
【0081】
次に本実施形態に係るリモートデスクトップシステム300の動作を説明する。本実施形態に係るリモートデスクトップシステム300の動作のうち、ネットワーク状態確認部353、383およびウインドウサイズ調整部354、384以外の動作は、図2に示した第2の実施形態に係るリモートデスクトップシステム200の動作と同じである。以下では、ネットワーク状態確認部353、383およびウインドウサイズ調整部354、384の動作を説明する。
【0082】
リモートデスクトップクライアントモジュール370とリモートデスクトップサーバモジュール340との間で、クライアント側プロキシモジュール380、TCP通信部390、ネットワーク330、TCP通信部360、およびサーバ側プロキシモジュール350を通じて相互に通信可能な状態になると、サーバ側プロキシモジュール350のネットワーク状態確認部353は予め定められた一定周期(例えば数分)毎に図5に示す処理の実行を開始し、クライアント側プロキシモジュール380のネットワーク状態確認部383は図6に示す処理の実行を開始する。
【0083】
サーバ側プロキシモジュール350のネットワーク状態確認部353は、起動されると、中間バッファ3512が空であるか否かを判定する(S301)。この処理は、サーバ側プロキシモジュール350における送信待ちのクライアント装置向けの情報の量が閾値以下であるか否かを判定する処理の一例である。若し、中間バッファ3512が空きでなければ、図5に示す処理を終了する。若し、中間バッファ3512が空きであれば、現在時刻を送信時刻として記載したテストデータを送信バッファ35132に書き込む(S302)。そして、テストデータに対する応答データが受信バッファ35211に到着するのを監視する(S303)。
【0084】
送信バッファ35132に書き込まれたテストデータは、TCP通信部360によってネットワーク330を通じて情報処理装置310から情報処理装置320へ送信され、TCP通信部390で受信されてクライアント側プロキシモジュール380の受信バッファ38211に書き込まれる。
【0085】
クライアント側プロキシモジュール380のネットワーク状態確認部383は、テストデータが受信バッファ38211に到着するのを常時監視している(S311)。ネットワーク状態確認部383は、テストデータが受信バッファ38211に到着すると、それを取り出し(S312)、テストデータに記載された送信時刻と現在時刻との差をデータ転送時間として算出する(S313)。次にネットワーク状態確認部383は、算出したデータ転送時間を応答データに記載し(S314)、中間バッファ3812が空のタイミングで(S315でYES)、応答データを送信バッファ38132に書き込む(S316)。ステップS315の処理は、クライアント側プロキシモジュール380における送信待ちのサーバ装置向けの情報の量が閾値以下であるか否かを判定する処理の一例である。またネットワーク状態確認部383は、上記算出したデータ転送時間をウインドウサイズ調整部384に通知する(S317)。そして、ネットワーク状態確認部383は、ステップS311の処理へと戻る。
【0086】
送信バッファ35182に書き込まれた応答データは、TCP通信部390によってネットワーク330を通じて情報処理装置320から情報処理装置310へ送信され、TCP通信部360で受信されてサーバ側プロキシモジュール350の受信バッファ35211に書き込まれる。
【0087】
サーバ側プロキシモジュール350のネットワーク状態確認部353は、応答データが受信バッファ35211に到着すると(S303でYES)、それを取り出し(S304)、応答データに記載されたデータ転送時間をウインドウサイズ調整部354に通知する(S305)。そして、ネットワーク状態確認部353は、図5に示す処理を終える。
【0088】
ウインドウサイズ調整部354は、ネットワーク状態確認部353から通知されたデータ転送時間に従って、送信部3513の送信バッファ35132のサイズを図4に示した式に基づいて変更する。またウインドウサイズ調整部384は、ネットワーク状態確認部383から通知されたデータ転送時間に従って、受信部3821の受信バッファ38211のサイズを図4に示した式に基づいて変更する。送信バッファ35132および受信バッファ38211は、ソケットバッファである。ソケットバッファのサイズ変更は、ソケットAPIのオプションを使用して行うことができる。そして、ソケットが送受信に使用するバッファのサイズが変更されることにより、TCPのウインドウのサイズが変更されることになる。
【0089】
上述したように本実施形態によれば、第2の実施形態と同様の効果が得られると共に、以下のような効果が得られる。
【0090】
定期的にネットワーク330の混雑状況を調査し、その調査結果に基づいてTCPのウインドウサイズを調整するため、動的に最適なウインドウサイズで通信を行うことができる。
【0091】
サーバ側プロキシモジュール350における送信待ちのクライアント装置向けの情報の量が閾値以下であるタイミング(例えば中間バッファ3512が空であるタイミング)で、ネットワーク330の混雑状況を調査するためのテストデータをネットワーク330に送信することにより、ネットワーク330の混雑状況を調査する処理によってクライアント装置向けの情報の送信が遅延するのを防止することができる。
【0092】
クライアント側プロキシモジュール380における送信待ちのサーバ装置向けの情報の量が閾値以下であるタイミング(例えば中間バッファ3812が空であるタイミング)で、ネットワーク330の混雑状況を調査するためのテストデータに対する応答データをネットワーク330に送信することにより、ネットワーク330の混雑状況を調査する処理によってサーバ装置向けの情報の送信が遅延するのを防止することができる。
【0093】
本実施形態では、ネットワーク330の混雑状況を表す指標として、送信バッファ35132から受信バッファ38211までのデータ転送時間を使用したが、他の指標を使用しても良い。例えば、送信バッファ35132から受信バッファ38211までの行きのデータ転送時間と、送信バッファ38132から受信バッファ35211までの帰りのデータ転送時間の合計であるラウンドトリップ時間を指標としても良い。
【0094】
また本実施形態では、TCP通信部360からTCP通信部390に向かう経路に関するネットワーク330の混雑状況を調査し、TCP通信部360からTCP通信部390への送受信に使用するTCPのウインドウサイズを調整した。しかし、これに代えて、或いはこれと共に、TCP通信部390からTCP通信部360に向かう経路に関するネットワーク330の混雑状況を調査し、TCP通信部390からTCP通信部360への送受信に使用するTCPのウインドウサイズを調整しても良い。そのためには、図3におけるネットワーク状態確認部383の代わりに、ネットワーク状態確認部353と同様の機能を有するネットワーク状態確認部を使用するか、或いはネットワーク状態確認部383とネットワーク状態確認部353の機能を併せ持つネットワーク状態確認部を使用し、図3におけるネットワーク状態確認部353の代わりに、ネットワーク状態確認部383と同様の機能を有するネットワーク状態確認部を使用するか、或いはネットワーク状態確認部353とネットワーク状態確認部383の機能を併せ持つネットワーク状態確認部を使用すれば良い。また、図3におけるウインドウサイズ調整部354の代わりに、ウインドウサイズ調整部384と同様の機能を有するウインドウサイズ調整部を使用するか、或いはウインドウサイズ調整部354とウインドウサイズ調整部384の機能を併せ持つウインドウサイズ調整部を使用し、図3におけるウインドウサイズ調整部384の代わりに、ウインドウサイズ調整部354と同様の機能を有するウインドウサイズ調整部を使用するか、或いはウインドウサイズ調整部384とウインドウサイズ調整部354の機能を併せ持つウインドウサイズ調整部を使用すれば良い。
【0095】
[第4の実施形態]
図7を参照すると、本発明の第4の実施形態にかかるリモートデスクトップシステム400で使用されるサーバ側プロキシモジュール中の通信部451は、リモートデスクトップサーバモジュール440から、クライアント向けの情報を受信し、TCP通信部460の機能を使ってTCP通信によりネットワークを通じてクライアント側へ送信する機能を有する。すなわち、通信部451は、図3に示した第3の実施形態における通信部351に相当する。
【0096】
通信部451は、受信部4511、中間バッファ4512、送信部4513を有する。このうち、受信部4511、それを構成する受信バッファ45111と受信処理部45112、中間バッファ4512は、図3に示した受信部3511、それを構成する受信バッファ35111と受信処理部35112、中間バッファ3512と同様の機能を有する。
【0097】
送信部4513は、送信処理部45131、送信バッファ45132、送信順序決定部45133、重複画面イメージ削除部45134、画面生成部45135、画面記憶部45136を有する。このうち、送信バッファ45132は、図3に示した送信バッファ35132と同様の機能を有する。
【0098】
送信順序決定部45133は、中間バッファ4512に蓄積されている情報、すなわち通信部451がリモートデスクトップサーバモジュール440から受信しTCP通信部460を通じてクライアント側プロキシモジュールへ未だ送信していない情報の送信順序を決定する機能を有する。送信順序決定部45133は、送信順序の決定は、情報の種別とその種別に対して予め定められた優先度とに基づいて行う。
【0099】
リモートデスクトップサーバモジュールとリモートデスクトップクライアントモジュールとで授受される情報には、画面データ、キーボードやマウスのイベントデータといった主要な情報以外に、音声データ、ストレージデータ、プリンタデータ、クリップボードデータ、スマートカードデータ、シリアルポートデータ、その他のPnPデバイスのデータ、ユーザ定義データが存在する。これらを幾つかの種類に分類し、優先度を付与する。例えば、画面データとキーボードやマウスのイベントデータとに対して最も高い優先度を付与し、音声データに対して次に高い優先度を付与し、その他に対して最も低い優先度を付与する。
【0100】
送信順序決定部45133は、中間バッファ4512に蓄積されている個々の情報の種別を判別し、判別した種別に対応する優先度に従って、中間バッファ4512内で情報を優先度順に並べ替える。RDPプロトコルを使用するリモートデスクトップ接続では、リモートデスクトップサーバモジュールとリモートデスクトップクライアントモジュールとで授受される情報にRDPプロトコルヘッダが付与されており、そのRDPプロトコルヘッダを解析することによって情報の種別を確認することができる。並べ替えは、より優先度の高い種別の情報がより優先的に送信処理部45131から読み出せるように行う。同じ優先度の情報間では中間バッファ4512への到着順に並べる。
【0101】
また送信順序決定部45133は、送信順序の決定だけでなく、閾値以下の優先度を有する情報を中間バッファ4512から削除する機能を有していて良い。また、この削除機能は、中間バッファ4512の空き容量が予め定めた閾値以下のときに限って有効として
良い。
【0102】
重複画面イメージ削除部45134は、中間バッファ4512に蓄積されている画面イメージ、すなわち通信部451がリモートデスクトップサーバモジュール440から受信しTCP通信部460を通じてクライアント側プロキシモジュールへ未だ送信していない画面イメージから、重複部分を削除する機能を有する。
【0103】
一般にリモートデスクトップ接続では、転送量を削減するために、サーバ画面のうち更新された領域を含む矩形領域の画面イメージをクライアント側へ送信する。このとき、同じ領域が繰り返し更新されると、同じ矩形領域の画面イメージが何度も送信されることになる。今、或る矩形領域の画面イメージが、画面イメージAから画面イメージBに変化し、さらに画面イメージCに変化した場合、画面イメージA、画面イメージB、画面イメージCという3つの画面イメージがリモートデスクトップサーバモジュール440から通信部4511を通じて中間バッファ4512に蓄積される。良好な通信環境の下では、中間バッファ4512に到着した画面イメージは速やかに送信処理部45131によって送信バッファ45132に移され、TCP通信部460を通じてクライアント側へ送信されるため、中間バッファ4512に同じ矩形領域の複数の画面イメージが蓄積されることはない。しかし、通信環境が悪化し、送信バッファ45132に空きがなくなると、中間バッファ4512に同じ矩形領域の複数の画面イメージが蓄積される。このような状況を放置すると、最後には中間バッファ4512が満杯となり、リモートデスクトップサーバモジュール440から新たなクライアント装置向けの情報を受信できない状況に至ってしまう。そこで、重複画面イメージ削除部45134は、同じ矩形領域に関する複数の画面イメージが中間バッファ4512に蓄積されているか否かを監視し、発見すれば時刻的により古い(中間バッファへの到着時刻がより古い)画面イメージを中間バッファ4512から削除する。例えば、中間バッファ4512に、上記の画面イメージBと画面イメージCが蓄積されている場合、画面イメージBを中間バッファ4512から削除する。これによって、クライアント側の当該矩形領域は画面イメージAからいきなり画面イメージCに変化するためにコマ送りのようになるけれども、中間バッファ4512の空き領域不足に起因する不都合な事態を回避することができる。
【0104】
上記の説明では、重複する画面イメージとして、同じ矩形領域に関する複数の画面イメージを例示したが、それだけには限定されない。例えば、或る矩形領域に関する画面イメージと、それより後の画面イメージであってその矩形領域が先の矩形領域を包含する画面イメージとを互いに重複する画面イメージとして認識しても良い。
【0105】
画面生成部45135は、中間バッファ4512に蓄積された画面イメージ、すなわち通信部451がリモートデスクトップサーバモジュール440から受信した画面イメージを用いて、サーバのデスクトップ画面全体の画面イメージを生成し、画面記憶部45136に格納する機能を有する。画面イメージを用いてデスクトップ画面の画面イメージを生成する方法は、リモートデスクトップクライアントモジュールにおいて、受信した画面イメージからサーバのデスクトップ画面の画面イメージを生成する方法と同様の方法を使用することができる。画面生成部45135は、受信処理部45112によって新たな画面イメージが中間バッファ4512に格納される毎に、画面記憶部45136に記憶されたサーバのデスクトップ画面の画面イメージを更新する。
【0106】
また画面生成部45135は、中間バッファ4512に蓄積されている画面イメージの総量、すなわち通信部451がリモートデスクトップサーバモジュール440から受信しクライアント側プロキシへ未だ送信していない画面イメージの総量を算出する機能と、画面記憶部45136に記憶されているサーバのデスクトップ画面の画面イメージの総量を算出する機能とを有する。さらに画面生成部45135は、上記算出した総量どうしを比較し、中間バッファ4512に蓄積されている画面イメージの総量が画面記憶部45136に記憶されているデスクトップ画面の画面イメージの総量を上回っているならば、送信処理部45131に対して、画面記憶部45136に記憶されている画面イメージの送信を指示し、中間バッファ4512に蓄積されている全ての画面イメージを中間バッファ4512から削除する機能を有する。
【0107】
送信処理部45131は、中間バッファ4512に蓄積されたクライアント装置向けの情報を読み出して送信バッファ45132に書き込む機能を有する。また送信処理部45131は、画面生成部45135から上記の指示を受けると、画面記憶部45136から画面イメージを読み出して送信バッファ45132に書き込む機能を有する。
【0108】
次に本実施形態の動作を説明する。本実施形態に係るリモートデスクトップシステム400の動作のうち、通信部451以外の動作は第3の実施形態と同じである。以下では、通信部451の動作について、図8のフローチャートを参照して説明する。
【0109】
送信処理部45131は、中間バッファ4512が空か否か、すなわちクライアント装置向けの情報が蓄積されているか否かを監視する(S401)。中間バッファ4512にクライアント装置向けの情報が蓄積されている場合、送信部4513では以下のような動作が行われる。
【0110】
まず送信順序決定部45133は、中間バッファ4512に蓄積されている個々の情報の種別を判別し、判別した種別に対応する優先度に従って、中間バッファ4512内で情報を優先度順に並べ替え、また閾値以下の優先度を有する情報を中間バッファ4512から削除する(S402)。
【0111】
次に重複画面イメージ削除部45134は、中間バッファ4512に蓄積されている画面イメージから重複部分を削除する(S403)。
【0112】
次に画面生成部45135は、中間バッファ4512に蓄積された画面イメージを用いて、サーバのデスクトップ画面の画面イメージを生成し、画面記憶部45136に格納する(S404)。次に画面生成部45135は、中間バッファ4512に蓄積されている画面イメージの総量と、画面記憶部45136に記憶されているサーバのデスクトップ画面の画面イメージの総量とを算出して比較する(S405)。この比較結果により以降の処理が相違する。
【0113】
中間バッファ4512に蓄積されている画面イメージの総量が画面記憶部45136に記憶されているデスクトップ画面の画面イメージの総量を上回っていなければ、送信処理部45131は、送信バッファ45132に空きがあるか否かを確認し(S406)、空きがあれば、中間バッファ4512からクライアント装置向けの情報を読み出して、送信バッファ25132に書き込む(S407)。そして、ステップS401の処理へと戻る。送信バッファ45132に空きがなければ、送信処理部45131はステップS407をスキップしてステップS401の処理へと戻る。
【0114】
他方、中間バッファ4512に蓄積されている画面イメージの総量が画面記憶部45136に記憶されているデスクトップ画面の画面イメージの総量を上回っているならば、画面生成部45135は、中間バッファ4512に蓄積されている全ての画面イメージを中間バッファ4512から削除し、送信処理部45131に対して画面記憶部45136に記憶されている画面イメージの送信を指示する(S408)。送信処理部45131は、送信バッファ45132に空きがあるか否かを確認し(S409)、空きが無ければ、空きができるまで待ち合わせる。空きがあれば、画面記憶部45136からデスクトップ画面の画面イメージを読み出して、送信バッファ25132に書き込む(S410)。そして、ステップS401の処理へと戻る。TCP通信部460では、送信バッファ45132にクライアント装置向けの情報が蓄積されると、それを読み出して、ネットワークを通じてTCP通信によりリモートデスクトップクライアントモジュールが存在する情報処理装置に向けて送信する。
【0115】
上述したように本実施形態によれば、第3の実施形態と同様の効果が得られると共に、以下のような効果が得られる。
【0116】
送信順序決定部45133を使用して、中間バッファ4512内で情報を優先度順に並べ替えることにより、優先度の高い画面イメージ等が優先度の低い他のデータより優先的に送信することが可能になり、中間バッファ4512に情報が滞留するほど通信環境が悪化している状況下におけるリモートデスクトップ接続のレスポンス低下を改善することができる。
【0117】
重複画面イメージ削除部45134を使用して、中間バッファ4512に蓄積されている画面イメージから重複部分を削除することにより、中間バッファ4512に情報が滞留するほど通信環境が悪化している状況下におけるリモートデスクトップ接続のレスポンス低下を改善することができる。
【0118】
画面生成部45135を使用して、中間バッファ4512に蓄積されている画面イメージの総量が、それらに基づいて生成したデスクトップ画面の画面イメージの総量を上回った場合に、中間バッファ4512に蓄積されている全ての画面イメージを削除し、生成したデスクトップ画面の画面イメージを代わりに送信することにより、中間バッファ4512が満杯となってリモートデスクトップサーバモジュール440から新たなクライアント装置向けの情報を受信できない等の状況を回避することができる。
【0119】
[その他の実施形態]
以上、本発明を幾つかの実施形態を挙げて説明したが、本発明は以上の実施形態にのみ限定されず、その他各種の付加変更が可能である。例えば、上記第4の実施形態の構成から、送信順序決定部45133、重複画面イメージ削除部45134、および画面生成部45135の何れか1つ、または何れか2つを省略した構成も本発明の実施形態に含まれる。
【符号の説明】
【0120】
100…リモートデスクトップシステム
110…サーバ装置
120…クライアント装置
130…ネットワーク
140…サーバ側プロキシ
141…第3の通信部
142…第4の通信部
150…クライアント側プロキシ
151…第1の通信部
152…第2の通信部
図1
図2
図3
図4
図5
図6
図7
図8