JP6281369B2 - Communication system and communication program - Google Patents
Communication system and communication program Download PDFInfo
- Publication number
- JP6281369B2 JP6281369B2 JP2014067744A JP2014067744A JP6281369B2 JP 6281369 B2 JP6281369 B2 JP 6281369B2 JP 2014067744 A JP2014067744 A JP 2014067744A JP 2014067744 A JP2014067744 A JP 2014067744A JP 6281369 B2 JP6281369 B2 JP 6281369B2
- Authority
- JP
- Japan
- Prior art keywords
- communication
- client
- server
- program
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Description
本発明は、通信システム及び通信プログラムに関する。 The present invention relates to a communication system and a communication program.
近年、インターネット環境の進歩やモバイル端末の普及等に伴い、クライアントからサーバ上のアプリケーションを遠隔操作するためのリモートアクセス環境に関する技術が注目されている。 In recent years, with the advancement of the Internet environment and the spread of mobile terminals, a technology related to a remote access environment for remotely operating an application on a server from a client has attracted attention.
このような技術のひとつとして、リモートデスクトップ接続が挙げられる。例えば、サーバとクライアントとがリモートデスクトップ接続により接続されると、クライアントは、サーバを直接操作しているかのようなデスクトップ画面を表示して、サーバ上のプログラムやファイルにアクセス可能となる。ここで、クライアントにUSB(Universal Serial Bus)メモリなどのローカルデバイスが接続される場合がある。このような場合に、あたかもサーバにそのローカルデバイスが接続されたかのような制御を行うための技術が開発されている。 One such technology is remote desktop connection. For example, when the server and the client are connected by remote desktop connection, the client can display a desktop screen as if the server is directly operated, and can access programs and files on the server. Here, a local device such as a USB (Universal Serial Bus) memory may be connected to the client. In such a case, a technique for performing control as if the local device was connected to the server has been developed.
例えば、下記特許文献1では、クライアントで用いられるデバイスドライバと同様の仮想デバイスドライバをサーバに導入し、サーバが仮想デバイスドライバを介してクライアントに接続されたローカルデバイスを制御する技術が開示されている。また、サーバとクライアントとの通信の確立に関して、下記特許文献3では、クライアントから接続された場合に、サーバ側でクライアントのIPアドレスを記憶し、必要に応じてサーバ側からクライアントにデータを送信する技術が開示されている。
For example,
また、リモートアクセス環境とは異なる分野においても、端末装置に接続されたデバイスにアクセスするための技術が開発されている。例えば、下記特許文献2では、端末装置内のデバイスドライバを制御するためのデバイス制御実行基板を設け、上位層からのデバイスの呼び出し制御を抽象化する技術が開示されている。
In addition, a technology for accessing a device connected to a terminal device has been developed even in a field different from the remote access environment. For example,
しかし、上記特許文献1に記載された技術は、サーバで用いられる仮想デバイスドライバとして、クライアントで用いられるデバイスドライバと同じものを使用可能であることを前提とした技術である。従って、同じものを使用することが困難な場合には、リモートアクセス環境の実現が困難になるという問題があった。
However, the technique described in
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、仮想デバイスドライバを用いることなくリモートアクセス環境を実現することが可能な、新規かつ改良された通信システム及び通信プログラムを提供することにある。 The present invention has been made in view of the above problems, and an object of the present invention is to provide a new and improved communication capable of realizing a remote access environment without using a virtual device driver. To provide a system and a communication program.
上記課題を解決するために、本発明のある観点によれば、クライアント装置と前記クライアント装置の仮想化されたデスクトップ環境として機能するサーバ装置とを含む通信システムであって、前記サーバ装置は、アプリケーションの要求に応じて、前記クライアント装置に接続された外部装置への、前記外部装置を示す識別情報及び前記外部装置に係る第1の入出力制御情報を含む命令情報を、前記クライアント装置に送信する第1の通信プログラムを有し、前記クライアント装置は、デバイスドライバと、前記サーバ装置から前記命令情報を受信し、受信された前記命令情報を前記クライアント装置における第2の入出力制御情報に変換して前記外部装置に対応する前記デバイスドライバに中継する第2の通信プログラムと、を有する、通信システムが提供される。
In order to solve the above problems, according to an aspect of the present invention, there is provided a communication system including a client device and a server device functioning as a virtual desktop environment of the client device, wherein the server device is an application. depending on the requirements, to the external device connected to the client device, the instruction information including the first input-output control information according to the identification information and the external device indicating the external device, and transmits to the client device A first communication program, wherein the client device receives the command information from the device driver and the server device, and converts the received command information into second input / output control information in the client device; A second communication program that relays to the device driver corresponding to the external device. Shin system is provided.
前記第2の通信プログラムは、前記クライアント装置に接続された前記外部装置を識別し、識別した前記外部装置を示す識別情報を前記サーバ装置に送信してもよい。 The second communication program may identify the external device connected to the client device and transmit identification information indicating the identified external device to the server device.
前記第2の通信プログラムは、前記識別情報が示す前記外部装置に対応する前記デバイスドライバに前記第2の入出力制御情報を中継してもよい。
The second communication program may relay the second input / output control information to the device driver corresponding to the external device indicated by the identification information.
前記第1の通信プログラムは、前記仮想化されたデスクトップ環境の接続元である前記クライアント装置を識別し、識別した前記クライアント装置に前記命令情報を送信してもよい。 The first communication program may identify the client device that is a connection source of the virtualized desktop environment and transmit the command information to the identified client device.
前記第2の通信プログラムは、前記第2の入出力制御情報に基づき前記外部装置から出力された出力情報を前記サーバ装置に送信し、前記第1の通信プログラムは、前記クライアント装置から受信された前記出力情報を前記アプリケーションに中継してもよい。
The second communication program transmits output information output from the external device based on the second input / output control information to the server device, and the first communication program is received from the client device. The output information may be relayed to the application.
前記第2の入出力制御情報は、IOCTL(I/O Control)であってもよい。
The second input / output control information may be IOCTL (I / O Control).
前記サーバ装置は、前記第2の通信プログラムとの間で通信を確立して前記第2の通信プログラムと前記第1の通信プログラムとの間の通信を中継する通信管理プログラムと、前記外部装置との通信を行うための接続情報を記憶する記憶部と、をさらに備え、前記通信管理プログラムは、前記第2の通信プログラムからの接続要求に応じて前記第2の通信プログラムとの通信を確立し、前記記憶部に記憶された前記接続情報を用いて前記第1の通信プログラムと前記第2の通信プログラムとの通信を中継してもよい。
The server device includes a communication management program that relays communication between said established communication with pre-Symbol second communication program with the second communication program first communication program, the external device A storage unit for storing connection information for communication with the communication management program, wherein the communication management program establishes communication with the second communication program in response to a connection request from the second communication program Then, communication between the first communication program and the second communication program may be relayed using the connection information stored in the storage unit.
前記接続情報は、前記クライアント装置の識別情報、前記外部装置の識別情報、および通信チャネル情報を含んでもよい。 The connection information may include identification information of the client device, identification information of the external device, and communication channel information.
前記通信管理プログラムは、前記クライアント装置の識別情報を検索キーとして前記記憶部から前記接続情報を検索してもよい。 The communication management program may search the connection information from the storage unit using the identification information of the client device as a search key.
また、上記課題を解決するために、本発明の別の観点によれば、クライアント装置と前記クライアント装置の仮想化されたデスクトップ環境として機能するサーバ装置のアプリケーションとの通信を制御する通信プログラムであって、第1の前記通信プログラムは、前記サーバ装置に含まれ、前記アプリケーションの要求に応じて、前記クライアント装置に接続された外部装置への、前記外部装置を示す識別情報及び前記外部装置に係る第1の入出力制御情報を含む命令情報を、前記クライアント装置に送信し、第2の前記通信プログラムは、前記クライアント装置に含まれ、前記サーバ装置から前記命令情報を受信し、受信された前記命令情報を前記クライアント装置における第2の入出力制御情報に変換して前記外部装置に対応するデバイスドライバに中継する、通信プログラムが提供される。 In order to solve the above problem, according to another aspect of the present invention, there is provided a communication program for controlling communication between a client device and an application of a server device functioning as a virtual desktop environment of the client device. The first communication program is included in the server device and relates to identification information indicating the external device to the external device connected to the client device and the external device in response to a request from the application. instruction information including the first input-output control information, and transmitted to the client device, the second said communication program, the included in the client device, wherein the receiving the instruction information from the server device, is received the It converts the command information into the second output control information in the client device device corresponding to the external device Relaying to the scan driver, a communication program is provided.
以上説明したように本発明によれば、仮想デバイスドライバを用いることなくリモートアクセス環境を実現することが可能である。 As described above, according to the present invention, a remote access environment can be realized without using a virtual device driver.
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。 Exemplary embodiments of the present invention will be described below in detail with reference to the accompanying drawings. In addition, in this specification and drawing, about the component which has the substantially same function structure, duplication description is abbreviate | omitted by attaching | subjecting the same code | symbol.
<1.本発明の一実施形態に係る通信システムの概要>
まず、図1を参照して、本発明の一実施形態に係る通信システムの概要を説明する。
<1. Overview of Communication System According to One Embodiment of the Present Invention>
First, an overview of a communication system according to an embodiment of the present invention will be described with reference to FIG.
図1は、本発明の一実施形態に係る通信システムの概要を示す図である。図1に示すように、本実施形態に係る通信システムは、ネットワーク4により接続されたサーバ1(サーバ装置)およびクライアント2(クライアント装置)から成る。クライアント2には、ローカルデバイス3A、3Bといった複数のローカルデバイス(外部装置)が接続され得る。以下では、ローカルデバイス3A、3Bをはじめとする複数のローカルデバイスを特に区別する必要がない場合、ローカルデバイス3と総称する。
FIG. 1 is a diagram showing an outline of a communication system according to an embodiment of the present invention. As shown in FIG. 1, the communication system according to this embodiment includes a server 1 (server device) and a client 2 (client device) connected by a network 4. A plurality of local devices (external devices) such as
サーバ1およびクライアント2は、ネットワーク4を介したリモートデスクトップ接続により接続することが可能である。クライアント2は、サーバ1とのリモートデスクトップ接続により仮想のデスクトップ環境(以下、仮想環境とも称する)を構築する。サーバ1は、クライアント2の仮想環境として機能する。即ち、クライアント2は、サーバ1を直接操作しているかのようなデスクトップ画面を表示し、ユーザは、クライアント2に表示されたデスクトップ画面からサーバ1上のプログラムやファイルにアクセスすることができる。なお、リモートデスクトップ接続による仮想環境は、リモートアクセス環境の一例であり、本発明はかかる例に限定されない。
The
ネットワーク4は、ネットワーク4に接続されている装置から送信される情報の有線、または無線の伝送路である。例えば、ネットワーク4は、インターネットや専用線、IP−VPN(Internet Protocol−Virtual Private Network)等により構成される。他にも、ネットワーク4は、モデムを介した直接ダイアルアップ、企業LAN(Local Area Network)やWAN(Wide Area Network)により構成されてもよい。サーバ1は、ひとつ又は複数のクライアント2とネットワーク4を介して接続され、例えばTCP/IP等の伝送制御プロトコルにより相互に通信する。
The network 4 is a wired or wireless transmission path for information transmitted from a device connected to the network 4. For example, the network 4 is configured by the Internet, a dedicated line, an IP-VPN (Internet Protocol-Virtual Private Network), or the like. In addition, the network 4 may be configured by direct dial-up via a modem, a corporate LAN (Local Area Network), or a WAN (Wide Area Network). The
図1に示すように、クライアント2にはローカルデバイス3が接続され得る。上述したように、上記特許文献1に開示された技術では、サーバで用いられる仮想デバイスドライバとして、クライアントで用いられるデバイスドライバと同じものを使用可能であることを前提としている。よって、同じものを使用することが困難な場合には、リモートアクセス環境の実現が困難になるという問題があった。
As shown in FIG. 1, a
まず、第1に、デバイスドライバが遠隔地で動作されることを想定された設計になっていないという問題がある。例えば、遠隔地にあるサーバ1の仮想デバイスドライバが、IOCTL(I/O Control)等の制御コードを送信する場合を考える。このような場合、IOCTLを発行する仮想デバイスドライバは短時間で応答が帰ってくることを期待しているため、ネットワーク4の遅延等によりIOCTLのタイムアウトエラー等が発生してしまう場合があった。また、接続されるローカルデバイスによっては、クライアント2からサーバ1へのリダイレクトが正常に動作せず、仮想デバイスドライバがサーバ1上に作成できない場合があった。
First, there is a problem that the device driver is not designed to be operated remotely. For example, consider a case where the virtual device driver of the
第2に、サーバ1とクライアント2とが異なるOS(Operating System)により動作する場合に対応していないという問題がある。詳しくは、ローカルデバイス3がクライアント2に接続されることを想定してデバイスメーカーが作成したデバイスドライバが、仮想デバイスドライバとして動作するため、サーバ1のOSをデバイスメーカーがサポートしていない場合は遠隔操作を実現できない。例えば、ローカルデバイス3が、WindowsXP(登録商標)(32bit)やWindows(登録商標)7(32bit)等のOSで動作するPC(Personal Computer)に接続されることが想定されている場合を考える。このような場合、サーバ1のOSがWindowsServer(登録商標)2008(64bit)等のサーバ用OSやLinux(登録商標)等のWindows(登録商標)OS以外のOSである場合、サーバ1上のアプリケーションはローカルデバイス3を遠隔制御できなかった。
Secondly, there is a problem that the
そこで、上記事情を一着眼点にして本発明の一実施形態に係る通信システムを創作するに至った。本発明の一実施形態に係る通信システムは、仮想デバイスドライバを用いることなくリモートアクセス環境を実現することができる。 In view of the above circumstances, a communication system according to an embodiment of the present invention has been created. The communication system according to an embodiment of the present invention can realize a remote access environment without using a virtual device driver.
具体的には、本実施形態に係るサーバ1は、仮想デバイスドライバではなく、サーバ用デバイス通信プログラム130(第1の通信プログラム)とクライアント用デバイス通信プログラム230(第2の通信プログラム)との通信を介してローカルデバイス3を制御する。サーバ用デバイス通信プログラム130は、サーバ1によるデバイス制御を中継する、サーバ1に格納されたプログラムである。クライアント用デバイス通信プログラム230は、サーバ用デバイス通信プログラム130から受信したデバイス制御のための情報をデバイスドライバに中継する、クライアント2に格納されたプログラムである。
Specifically, the
本実施形態によれば、サーバ1で仮想デバイスドライバが動作することがなく、クライアント2内でのみデバイスドライバが動作するため、ネットワーク4の遅延等によるIOCTLのタイムアウトエラー等の発生を回避することができる。また、デバイスドライバは、クライアント2でのみ用いられ、サーバ1で用いられることがないため、サーバ1のOSがデバイスメーカーのサポート外であっても、リモートアクセス環境を実現することができる。
According to the present embodiment, since the virtual device driver does not operate on the
以上、本発明の一実施形態に係る通信システムの概要を説明した。続いて、本発明の各実施形態について詳細に説明する。 The outline of the communication system according to the embodiment of the present invention has been described above. Subsequently, each embodiment of the present invention will be described in detail.
<2.実施形態>
[2−1.第1の実施形態]
まず、図2を参照して、第1の実施形態に係る通信システムの構成を説明する。図2は、第1の実施形態に係る通信システムの構成を示すブロック図である。
<2. Embodiment>
[2-1. First Embodiment]
First, the configuration of the communication system according to the first embodiment will be described with reference to FIG. FIG. 2 is a block diagram illustrating a configuration of the communication system according to the first embodiment.
[2−1−1.サーバ1の構成]
図2に示すように、サーバ1は、プロセッサ101、メモリ102、リモート・サービス・サーバ・アプリケーション110、アプリケーション120、およびサーバ用デバイス通信プログラム130を有する。サーバ1は、WindowsServer(登録商標)2008や、Linux(登録商標)等のOSにより動作する。
[2-1-1. Configuration of server 1]
As illustrated in FIG. 2, the
(プロセッサ101)
プロセッサ101は、演算処理装置および制御装置として機能し、各種プログラムに従ってサーバ1内の動作全般を制御する。プロセッサ101は、例えばCPU(Central Processing Unit)、マイクロプロセッサによって実現される。なお、プロセッサ101は、使用するプログラムや演算パラメータ等を記憶するROM(Read Only Memory)、および適宜変化するパラメータ等を一時記憶するRAM(Random Access Memory)を含んでいてもよい。
(Processor 101)
The
(メモリ102)
メモリ102は、所定の記録媒体に対してデータの記録再生を行う部位である。メモリ102は、例えばHDD(Hard Disc Drive)として実現される。もちろん記録媒体としては、フラッシュメモリ等の固体メモリ、固定メモリを内蔵したメモリカード、光ディスク、光磁気ディスク、ホログラムメモリなど各種考えられ、メモリ102としては採用する記録媒体に応じて記録再生を実行できる構成とされればよい。なお、図2では、リモート・サービス・サーバ・アプリケーション110、アプリケーション120、およびサーバ用デバイス通信プログラム130といった構成要素がメモリ102から独立した要素として表現されているが、メモリ102に記憶されていてもよい。
(Memory 102)
The
(リモート・サービス・サーバ・アプリケーション110)
リモート・サービス・サーバ・アプリケーション110は、リモート・サービス・クライアント・アプリケーション210との通信により、サーバ1をクライアント2の仮想化されたデスクトップ環境として機能させるプログラムである。詳しくは、リモート・サービス・サーバ・アプリケーション110は、RDP(Remote Data Protocol)などの通信プロトコルにより、リモート・サービス・クライアント・アプリケーション210と通信する。このようなRDPによる通信は、ターミナルサービスシステム等のリモート・クライアント・アクセスシステムとして実装されてもよい。
(Remote service server application 110)
The remote
リモート・サービス・サーバ・アプリケーション110は、仮想環境のデスクトップ画面の情報を、リモート・サービス・クライアント・アプリケーション210に送信する。他方、仮想環境におけるローカルデバイス3への入出力制御は、リモート・サービス・サーバ・アプリケーション110によるRDPを介した通信ではなく、後述するサーバ用デバイス通信プログラム130により行われる。
The remote
(アプリケーション120)
アプリケーション120は、マルチメディア処理、データベースアクセス等を行う各種アプリケーションである。アプリケーション120は、クライアント2による遠隔操作により動作する。この際、アプリケーション120は、リモート・サービス・サーバ・アプリケーション110を介して画面出力情報をクライアント2に送信する。他方、アプリケーション120は、サーバ用デバイス通信プログラム130を介してローカルデバイス3を制御するための情報をクライアント2に送信することで、ローカルデバイス3を制御する。ここで、アプリケーション120は、クライアント2に接続されたローカルデバイス3を、IOCTLコード内の物理デバイスオブジェクト(PDO:Physical Device Object)としては識別しない。アプリケーション120は、後述するサーバ用デバイス通信プログラム130により提供されるAPI(Application Programming Interface)を介して、ローカルデバイス3の制御を行う。そして、アプリケーション120は、サーバ用デバイス通信プログラム130を介して受信した、ローカルデバイス3からの応答に基づいて動作する。
(Application 120)
The
上述したように、仮想環境におけるローカルデバイス3への入出力制御は、リモート・サービス・サーバ・アプリケーション110によるRDPを介した通信ではなく、後述のサーバ用デバイス通信プログラム130により行われる。具体的には、アプリケーション120は、ローカルデバイス3の制御のために、上記特許文献1で開示された技術で用いられているような、RDPを介して通信する入出力要求パケット(IRP:I/O Request Packet)を使用しない。アプリケーション120は、独自プロトコルにより記述された入出力要求情報(命令情報)を使用して、ローカルデバイス3を制御する。
As described above, the input / output control to the
入出力要求情報は、クライアント2に接続された1つ以上のローカルデバイス3から特定のローカルデバイス3を識別するための識別情報、およびローカルデバイス3への出力命令や入力命令等の制御情報の組み合わせを、1つ以上含む情報である。入出力要求情報を記述するための独自プロトコルとしては、例えばXML(EXtensible Markup Language)やJSON(JavaScript(登録商標) Object Notation)等を用いてもよい。なお、入出力要求情報は、サーバ用デバイス通信プログラム130により中継され、クライアント用デバイス通信プログラム230によりIOCTL等の制御コードに変換される。入出力要求情報は、1つまたは複数のローカルデバイス3への要求を含んでいてもよい。
The input / output request information is a combination of identification information for identifying a specific
(サーバ用デバイス通信プログラム130)
サーバ用デバイス通信プログラム130は、アプリケーション120からクライアント2に接続されたローカルデバイス3への入出力要求情報を、クライアント2に送信する機能を有する。サーバ用デバイス通信プログラム130は、クライアント用デバイス通信プログラム230を介して、クライアント2のドライバスタックと通信する。ここで、サーバ用デバイス通信プログラム130は、特定のローカルデバイス3に対して特有である。詳しくは、サーバ用デバイス通信プログラム130は、ローカルデバイス3のデバイスドライバで提供されるAPIと同じインターフェース仕様を提供する。このため、アプリケーション120は、リンク先を仮想デバイスドライバからサーバ用デバイス通信プログラム130に変更するだけで、既存の処理を変更することなく又は最小限の変更でローカルデバイス3を制御することができる。なお、サーバ用デバイス通信プログラム130は、アプリケーション120がローカルデバイス3を制御できるように常駐する。
(Server device communication program 130)
The server
ローカルデバイス3は、サーバ用デバイス通信プログラム130により送信された入出力要求情報に基づいて動作した結果である入出力応答情報(出力情報)を出力する。入出力応答情報とは、例えばIOCTL応答である。サーバ用デバイス通信プログラム130は、クライアント用デバイス通信プログラム230を介してローカルデバイス3から受信された入出力応答情報を、アプリケーション120に中継する。このように、サーバ用デバイス通信プログラム130は、アプリケーション120からローカルデバイス3への入出力要求情報、およびローカルデバイス3からアプリケーション120への入出力応答情報を中継する。このような中継を、以下ではデバイス中継通信とも称する。デバイス中継通信により、アプリケーション120によるローカルデバイス3の制御が可能となる。
The
以上、サーバ1の構成を説明した。続いて、クライアント2の構成を説明する。
The configuration of the
[2−1−2.クライアント2の構成]
図2に示すように、クライアント2は、プロセッサ201、メモリ202、リモート・サービス・クライアント・アプリケーション210、クライアント用デバイス通信プログラム230、デバイスドライバ240、カーネルドライバ251、バスドライバ252、ホストコントローラドライバ253、およびホストコントローラ254を有する。クライアント2は、WindowsXP(登録商標)(32bit)やWindows(登録商標)7(32bit)等のOSで動作する、PCやノートPC、タブレット端末等のスタンドアローン型のコンピュータである。クライアント2は、ローカルに格納していないファイルやアプリケーションにアクセスするために、リモートアクセス環境によりサーバ1と通信する。
[2-1-2. Configuration of client 2]
As shown in FIG. 2, the
(プロセッサ201)
プロセッサ201は、演算処理装置および制御装置として機能し、各種プログラムに従ってクライアント2内の動作全般を制御する。プロセッサ201は、例えばCPU、マイクロプロセッサによって実現される。なお、プロセッサ201は、使用するプログラムや演算パラメータ等を記憶するROM、および適宜変化するパラメータ等を一時記憶するRAMを含んでいてもよい。
(Processor 201)
The
(メモリ202)
メモリ202は、所定の記録媒体に対してデータの記録再生を行う部位である。メモリ202は、例えばHDDとして実現される。もちろん記録媒体としては、フラッシュメモリ等の固体メモリ、固定メモリを内蔵したメモリカード、光ディスク、光磁気ディスク、ホログラムメモリなど各種考えられ、メモリ202としては採用する記録媒体に応じて記録再生を実行できる構成とされればよい。なお、図2では、リモート・サービス・クライアント・アプリケーション210、およびクライアント用デバイス通信プログラム230等の構成要素がメモリ202から独立した要素として表現されているが、メモリ202に記憶されていてもよい。
(Memory 202)
The
(リモート・サービス・クライアント・アプリケーション210)
リモート・サービス・クライアント・アプリケーション210は、リモート・サービス・サーバ・アプリケーション110との通信により、サーバ1をクライアント2の仮想化されたデスクトップ環境として機能させるプログラムである。詳しくは、リモート・サービス・クライアント・アプリケーション210は、RDPなどの通信プロトコルにより、リモート・サービス・サーバ・アプリケーション110と通信する。このようなRDPによる通信は、ターミナルサービスシステム等のリモート・クライアント・アクセスシステムとして実装されてもよい。リモート・サービス・クライアント・アプリケーション210は、仮想環境のデスクトップ画面の情報を、リモート・サービス・サーバ・アプリケーション110から受信する。
(Remote service client application 210)
The remote
(クライアント用デバイス通信プログラム230)
クライアント用デバイス通信プログラム230は、サーバ1から入出力要求情報を受信し、受信された入出力要求情報を入出力制御情報に変換して、ローカルデバイス3に対応するデバイスドライバ240に中継する機能を有する。入出力制御情報とは、入出力要求パケット(IRP:I/O Request Packet)や、特に入出力制御コード(IOCTL:I/O Control)と呼ばれるIRPの特別なグループの命令である。クライアント用デバイス通信プログラム230は、独自プロトコルにより記述された入出力要求情報を、入出力制御情報に変換してデバイスドライバ240に中継することで、アプリケーション120からローカルデバイス3へのアクセスを実現する。クライアント用デバイス通信プログラム230は、サーバ1のアプリケーション120がローカルデバイス3を制御できるように常駐する。クライアント用デバイス通信プログラム230は、クライアント2のドライバスタックの最上位の要素または層として捉えることができる。
(Client device communication program 230)
The client
クライアント用デバイス通信プログラム230は、IOCTLコード内の物理デバイスオブジェクトとして、ローカルデバイス3を識別する。クライアント用デバイス通信プログラム230は、識別したローカルデバイス3を示す識別情報をサーバ1に送信する。サーバ用デバイス通信プログラム130から受信した入出力要求情報には、アプリケーション120がどのローカルデバイス3へのアクセスを行うかを示すため、この識別情報が含まれている。よって、クライアント用デバイス通信プログラム230は、この識別情報が示すローカルデバイス3に対応するデバイスドライバ240に、入出力制御情報を中継する。これにより、クライアント2に複数のローカルデバイス3が接続された場合であっても、アプリケーション120は、各ローカルデバイス3を混同することなく、それぞれを制御することができる。
The client
ローカルデバイス3は、サーバ用デバイス通信プログラム130により送信された入出力要求情報に基づいて動作した結果である入出力応答情報を出力する。クライアント用デバイス通信プログラム230は、ローカルデバイス3から出力された入出力応答情報を、サーバ1に送信する。このように、クライアント用デバイス通信プログラム230は、アプリケーション120からローカルデバイス3への入出力要求情報、およびローカルデバイス3からアプリケーション120への入出力応答情報を中継する。
The
サーバ1からクライアント2への、アプリケーション120とデバイスドライバ240との間の通信は、リダイレクトされる。その結果、サーバ用デバイス通信プログラム130は、デバイスドライバ240の代理として、サーバ1内で動作する。一旦サーバ用デバイス通信プログラム130とアプリケーション120との間の関係が確立されると、サーバ用デバイス通信プログラム130とアプリケーション120との間の通信が、クライアント用デバイス通信プログラム230を介してデバイスドライバ240に転送される。ローカルデバイス3は、デバイスドライバ240に転送された通信に基づき、アプリケーション120の制御通りに動作することができる。
Communication between the
(デバイスドライバ240)
デバイスドライバ240は、ローカルデバイス3を制御し、アプリケーションソフトウェアに対して抽象化したインターフェースを提供する。デバイスドライバ240は、クライアント用デバイス通信プログラム230およびカーネルドライバ251と通信する。
(Device driver 240)
The
(カーネルドライバ251)
カーネルドライバ251は、プロセッサ201、メモリ202、入出力用ハードウェア等のハードウェアを抽象化し、ハードウェアとソフトウェアがやりとりできるようにするために、プロセスの抽象化、プロセス間通信、システムコール等を提供する。カーネルドライバ251は、デバイスドライバ240およびバスドライバ252と通信する。
(Kernel driver 251)
The
(バスドライバ252)
バスドライバ252は、バスコントローラ、バスアダプタ、バスブリッジ等を制御する。バスドライバ252は、カーネルドライバ251およびホストコントローラドライバ253と通信する。
(Bus driver 252)
The
(ホストコントローラドライバ253)
ホストコントローラドライバ253は、ホストコントローラ254のドライバ層であり、上位のバスドライバ252からハードウェアを抽象化する。例えば、ホストコントローラドライバ253は、ホストコントローラ254に対するI/O処理、割り込み処理、スケジューリング処理等を行う。ホストコントローラドライバ253は、バスドライバ252およびホストコントローラ254と通信する。
(Host controller driver 253)
The
(ホストコントローラ254)
ホストコントローラ254は、クライアント2とローカルデバイス3とを接続するハードウェアである。ローカルデバイス3は、ホストコントローラ254のポートを通して、クライアント2に接続する。例えば、ホストコントローラ254は、USBポート、ファイアワイア(IEEE1394)ポート、RS−233cなどのデバイスポートを含む。クライアント2は、PNP(Plug and Play)をサポートしていてもよいが、デバイスポートはPNPに限定されない。
(Host controller 254)
The
新たなローカルデバイス3がホストコントローラ254を介してクライアント2に接続またはプラグインされた場合、デバイスドライバ240などのデバイスドライバがインストールされる。クライアント用デバイス通信プログラム230は、インストールされたデバイスドライバ240を介して、ローカルデバイス3にアクセスし制御することができる。
When a new
以上、クライアント2の構成を説明した。続いて、ローカルデバイス3の構成を説明する。
The configuration of the
[2−1−3.ローカルデバイス3の構成]
ローカルデバイス3は、クライアント2に接続される外部装置である。クライアント2に接続されたローカルデバイス3のアクセスおよび制御は、サーバ1に直接リダイレクトされない。ローカルデバイス3は、サーバ用デバイス通信プログラム130およびクライアント用デバイス通信プログラム230を介して、サーバ1により選択的にアクセスおよび制御される。ローカルデバイス3は、例えば、デジタルカメラ、デジタルビデオカメラ、ハードディスク記憶デバイス、デジタルメディアレコーダ、プリンタ、スキャナ、ICカードリーダ、シリアルポート接続機器であってもよい。この中でも、特に制御機構を内蔵する機器は、仮想デバイスドライバを用いたアクセスが困難な場合が多い。
[2-1-3. Configuration of local device 3]
The
以上、ローカルデバイス3の構成を説明した。続いて、図3〜図5Bを参照して、本実施形態に係る通信システムの動作を説明する。
The configuration of the
[2−1−4.動作処理]
(クライアント2の準備動作)
図3は、第1の実施形態に係るクライアント2の動作を示すフローチャートである。図3では、クライアント2が、サーバ1からローカルデバイス3へのアクセス中継を準備する動作処理を示した。図3で示した各ブロックは、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせにより実行される。各ブロックは、1つまたは複数のプロセッサにより実行されるコンピュータ命令として捉えることも可能である。また、各ブロックは、図3で示した順序とは異なる順序により実行されてもよい。
[2-1-4. Operation processing]
(Preparation operation of client 2)
FIG. 3 is a flowchart showing the operation of the
図3に示すように、まず、ステップS102で、クライアント2は、ローカルデバイス3を検出する。詳しくは、クライアント2に常駐するクライアント用デバイス通信プログラム230が、クライアント2に新たに接続されたローカルデバイス3を検出する。他にも、クライアント用デバイス通信プログラム230が起動した際に、クライアント2に接続されているローカルデバイス3を検出してもよい。クライアント用デバイス通信プログラム230は、検出したローカルデバイス3をIOCTLコード内の物理デバイスオブジェクトとして識別する。
As shown in FIG. 3, first, in step S <b> 102, the
次いで、ステップS104で、クライアント2は、デバイスドライバ(デバイスドライバ240、カーネルドライバ251、バスドライバ252)をロードする。詳しくは、クライアント2は、新たに検出されたローカルデバイス3をサポートするために必要なドライバまたはドライバスタックをロードまたはインストールする。上記ステップS102において、クライアント用デバイス通信プログラム230の起動によりローカルデバイス3が検出された場合には、ローカルデバイス3が接続された時点で既にインストール等が完了しているため、再度のインストール等は実施しない。インストール等は、PNP処理として実施されてもよい。クライアント2は、インストールが完了したことをクライアント用デバイス通信プログラム230に通知する。
Next, in step S104, the
そして、ステップS106で、クライアント2は、デバイス中継事前準備を行う。詳しくは、クライアント2は、クライアント用デバイス通信プログラム230がアプリケーション120からローカルデバイス3へのアクセスを中継するように、クライアント用デバイス通信プログラム230を構成する。クライアント用デバイス通信プログラム230は、新たに検出されたローカルデバイス3への入出力要求情報をサーバ用デバイス通信プログラム130から受信するために常駐し、待機する。これにより、クライアント2によるデバイス中継の準備が完了する。
In step S106, the
以上、クライアント2の準備動作について説明した。続いて、図4を参照して、サーバ1によるローカルデバイス3の制御動作について説明する。
The preparation operation of the
(サーバ1によるローカルデバイス3の制御動作)
図4は、第1の実施形態に係るサーバ1の動作を示すフローチャートである。図4では、サーバ1がローカルデバイス3を制御する動作処理を示した。図4で示した各ブロックは、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせにより実行される。各ブロックは、1つまたは複数のプロセッサにより実行されるコンピュータ命令として捉えることも可能である。また、各ブロックは、図4で示した順序とは異なる順序により実行されてもよい。
(Control operation of
FIG. 4 is a flowchart showing the operation of the
図4に示すように、まず、ステップS202で、サーバ1は、リモートサービス通信を開始する。詳しくは、リモート・サービス・クライアント・アプリケーション210は、リモート・サービス・サーバ・アプリケーション110に対してリモート接続要求を行い、通信リンクを確立する。この処理は、一般的なターミナルサービス接続の開始と同様の処理として実装されてもよい。
As shown in FIG. 4, first, in step S202, the
次いで、ステップS204で、サーバ1は、アプリケーション120を起動する。詳しくは、サーバ1は、上記ステップS202において確立されたリモート接続の通信リンクにおいてアプリケーション120を起動する。
Next, in step S204, the
次に、ステップS206で、サーバ1は、アプリケーション120からのデバイス通信を確立する。詳しくは、サーバ1上のアプリケーション120は、クライアント2上のローカルデバイス3に入出力要求を発行するために、デバイス制御用のリンクを確立する。具体的には、アプリケーション120は、サーバ用デバイス通信プログラム130が提供するAPIを介し、クライアント用デバイス通信プログラム230との通信を確立する。クライアント用デバイス通信プログラム230は、サーバ用デバイス通信プログラム130からの接続要求を、図3を参照して上記説明した準備処理により待ち受けているため、サーバ1とクライアント2との間でデバイス制御用の通信が確立される。これにより、サーバ1はクライアント2とのデバイス中継通信が開始される。なお、クライアント用デバイス通信プログラム230は、デバイス制御用の通信が確立した際に、ローカルデバイス3を識別するための識別情報をサーバ1に送信する。デバイス中継通信中に新たなローカルデバイス3が接続された場合、クライアント用デバイス通信プログラム230は、その都度新たなローカルデバイス3を識別するための識別情報をサーバ1に送信してもよい。
Next, in step S <b> 206, the
そして、ステップS208で、サーバ1は、アプリケーション120からローカルデバイス3への入出力を制御する。詳しくは、アプリケーション120は、サーバ用デバイス通信プログラム130を介して、入出力要求情報をローカルデバイス3に発行する。サーバ用デバイス通信プログラム130は、アプリケーション120から出力された入出力要求情報を、上記ステップS206において確立されたデバイス制御用の通信によりクライアント用デバイス通信プログラム230に送信する。クライアント用デバイス通信プログラム230は、受信した入出力要求情報を入出力制御情報に変換してデバイスドライバ240に中継し、デバイスドライバ240は、入出力制御情報をローカルデバイス3に中継する。ローカルデバイス3から出力された入出力応答情報は、デバイスドライバ240、クライアント用デバイス通信プログラム230、およびサーバ用デバイス通信プログラム130を介して、アプリケーション120に中継される。これにより、アプリケーション120によるローカルデバイス3の制御が実現される。
In step S208, the
以上、サーバ1によるローカルデバイス3の制御動作について説明した。続いて、図5A、図5Bを参照して、通信システムによる、上記説明した準備動作から制御動作までの一連の処理を説明する。
The control operation of the
(通信システムの制御動作)
図5Aおよび図5Bは、第1の実施形態に係る通信システムの動作を示すシーケンス図である。図5Aおよび図5Bでは、クライアント2にローカルデバイス3が接続されてから、サーバ1がローカルデバイス3を制御するまでの一連の動作処理を示した。図5Aおよび図5Bで示した各ブロックは、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせにより実行される。各ブロックは、1つまたは複数のプロセッサにより実行されるコンピュータ命令として捉えることも可能である。また、各ブロックは、図5Aおよび図5Bで示した順序とは異なる順序により実行されてもよい。
(Control operation of communication system)
5A and 5B are sequence diagrams illustrating the operation of the communication system according to the first embodiment. 5A and 5B show a series of operation processes from when the
図5Aに示すように、まず、ステップS102で、クライアント用デバイス通信プログラム230は、ローカルデバイス3を検出する。次いで、ステップS104で、クライアント用デバイス通信プログラム230は、デバイスドライバ(デバイスドライバ240、カーネルドライバ251、バスドライバ252)をロードする。そして、ステップS106で、クライアント用デバイス通信プログラム230は、デバイス中継事前準備を行う。
As shown in FIG. 5A, first, in step S102, the client
次いで、ステップS202で、リモート・サービス・クライアント・アプリケーション210は、リモート・サービス・サーバ・アプリケーション110とのリモートサービス通信を開始する。次に、ステップS204で、リモート・サービス・サーバ・アプリケーション110は、アプリケーション120を起動する。
Next, in step S202, the remote
次いで、ステップS206−1で、アプリケーション120は、サーバ用デバイス通信プログラム130に、デバイス通信を開始するよう通知する。ステップS206−2で、サーバ用デバイス通信プログラム130は、この通知を受けて、クライアント用デバイス通信プログラム230とのデバイス制御用のリンクを確立して、デバイス中継通信を開始する。このように、アプリケーション120は、サーバ用デバイス通信プログラム130を介して、クライアント用デバイス通信プログラム230で準備されているローカルデバイス3へのアクセスを行う通信リンクを確立する。
Next, in step S206-1, the
次いで、ステップS208−1で、アプリケーション120は、サーバ用デバイス通信プログラム130に、入出力要求情報を送信する。次に、ステップS208−2で、サーバ用デバイス通信プログラム130は、クライアント用デバイス通信プログラム230に、上記ステップS208−1で受信した入出力要求情報を中継する。次いで、図5Bに示すように、ステップS208−3で、クライアント用デバイス通信プログラム230は、受信した入出力要求情報を入出力制御情報に変換して、デバイスドライバ240に送信する。そして、ステップS208−4で、デバイスドライバ240は、受信した入出力制御情報に基づいて、ローカルデバイス3をIOCTLにより制御する。
Next, in step S <b> 208-1, the
ローカルデバイス3は、上記ステップS208−4において受けたIOCTLに基づき各種処理を行い、その応答(入出力応答情報)を、ステップS208−5でデバイスドライバ240に返信する。次いで、ステップS208−6で、デバイスドライバ240は、上記ステップS208−5で返信された入出力応答情報を、クライアント用デバイス通信プログラム230に送信する。次に、ステップS208−7で、クライアント用デバイス通信プログラム230は、サーバ用デバイス通信プログラム130に、上記ステップS208−6で受信した入出力応答情報を中継する。そして、ステップS208−8で、サーバ用デバイス通信プログラム130は、受信した入出力応答情報を、アプリケーション120に送信する。
The
以上、クライアント2にローカルデバイス3が接続されてから、サーバ1がローカルデバイス3を制御するまでの一連の動作について説明した。
The series of operations from when the
本実施形態によれば、クライアント2に接続されているローカルデバイス3に、リモート接続先のサーバ1からアクセスすることが可能となる。特に、本実施形態では、仮想デバイスドライバがサーバ1に作成されないため、サーバ1への仮想デバイスドライバの作成又は運用に失敗してしまうローカルデバイス3であっても、サーバ1上のアプリケーション120からアクセス可能となる。
According to the present embodiment, the
以上、第1の実施形態について説明した。続いて、第2の実施形態について説明する。 The first embodiment has been described above. Next, the second embodiment will be described.
[2−2.第2の実施形態]
本実施形態は、サーバ1に複数のクライアント2が同時にアクセスした場合に、サーバ1が、接続元の各クライアント2を識別して、識別したクライアント2に接続されたローカルデバイス3を制御する形態である。図6を参照して、本実施形態に係る通信システムについて説明する。
[2-2. Second Embodiment]
In the present embodiment, when a plurality of
図6は、第2の実施形態に係る通信システムの概要を説明するための図である。図6に示すように、サーバ1に、クライアント2A、2B、2Cといった複数のクライアント2が接続されている。また、クライアント2Aにはローカルデバイス3Aが接続され、クライアント2Bにはローカルデバイス3Bが接続され、クライアント2Cにはローカルデバイス3Cが接続されている。
FIG. 6 is a diagram for explaining the outline of the communication system according to the second embodiment. As shown in FIG. 6, a plurality of
図6に示すように、リモート・サービス・クライアント・アプリケーション210Aは、リモート・サービス・サーバ・アプリケーション110とリモート接続の通信リンクを確立している。リモート・サービス・サーバ・アプリケーション110は、リモート・サービス・クライアント・アプリケーション210Aとのリモート接続の通信リンクが確立されてから切断されるまでの一連の通信を、セッション140Aとして管理・識別する。また、リモート・サービス・サーバ・アプリケーション110は、クライアント用デバイス通信プログラム230Aとアプリケーション120Aとのサーバ用デバイス通信プログラム130Aを介した通信も、セッション140Aとして管理・識別する。
As shown in FIG. 6, the remote
詳しくは、サーバ用デバイス通信プログラム130Aは、リモート接続の接続元であるクライアント2Aを、セッション140Aを管理するリモート・サービス・サーバ・アプリケーション110との通信により識別する。そして、サーバ用デバイス通信プログラム130Aは、識別したクライアント2Aにアプリケーション120Aから中継した入出力要求情報を送信する。また、サーバ用デバイス通信プログラム130Aは、クライアント用デバイス通信プログラム230Aから受信した入出力応答情報を、アプリケーション120Aに送信する。
Specifically, the server
このように、リモート・サービス・サーバ・アプリケーション110は、クライアント2Aとの通信を、セッション140Aとして管理・識別することで、クライアント2Aとの通信と他のクライアント2との通信とを区別する。クライアント2B、2Cについても同様である。
As described above, the remote
本実施形態によれば、サーバ1に複数のクライアント2が同時にアクセスした場合であっても、サーバ1は、接続元の各クライアント2を識別して、識別したクライアント2に接続されたローカルデバイス3を制御することができる。
According to the present embodiment, even when a plurality of
以上、第2の実施形態について説明した。 The second embodiment has been described above.
[2−3.第3の実施形態]
本実施形態は、サーバ1とクライアント2との間にファイアウォール又はNAT(Network Address Translation)等の中継装置が介在する場合に、サーバ1が、中継装置の利点を生かしながらローカルデバイス3を制御する形態である。図7、図8を参照して、本実施形態に係る通信システムの構成を説明する。図7は、第3の実施形態に係る通信システムの構成を示すブロック図である。図8は、第3の実施形態に係る通信システムの概要を説明するための図である。
[2-3. Third Embodiment]
In the present embodiment, when a relay device such as a firewall or NAT (Network Address Translation) is interposed between the
[2−3−1.中継装置5の構成]
図7に示すように、中継装置5は、ファイアウォールプログラム510、およびNATプログラム520を有する。また、図8に示すように、サーバ1は、複数のクライアント2から中継装置5を経由したアクセスを受けることができる。
[2-3-1. Configuration of Relay Device 5]
As illustrated in FIG. 7, the
(ファイアウォールプログラム510)
ファイアウォールプログラム510は、サーバ1とクライアント2との通信の安全性を維持するためのプログラムである。例えば、ファイアウォールプログラム510は、送信先のIPアドレス、送信元のIPアドレス、ポート番号などを監視する。そして、ファイアウォールプログラム510は、例えば通過すべき送信先および送信元のIPアドレスおよびポート番号の組み合わせの設定に基づいて、パケットを通過させたり遮断したりする。
(Firewall program 510)
The
(NATプログラム520)
NATプログラム520は、パケットヘッダに含まれるIPアドレスを、別のIPアドレスに変換するプログラムである。NATプログラム520は、NAT(Network Address Translation)を行ってもよいし、NAPT(Network Address Port Translation)を行ってもよい。
(NAT program 520)
The
[2−3−2.サーバ1の構成]
図7に示すように、本実施形態に係るサーバ1は、図2を参照して上記説明した第1の実施例に係るサーバ1の要素に加えて、デバイス通信管理プログラム132、および接続情報DB(Data Base)134を有する。
[2-3-2. Configuration of server 1]
As shown in FIG. 7, the
(接続情報DB134)
接続情報DB134は、デバイス通信管理プログラム132がローカルデバイス3との通信を行うための接続情報を記憶する記憶部としての機能を有する。接続情報の一例を、下記の表1に示す。表1に示すように、接続情報は、クライアント2の識別情報である「クライアント名」、ローカルデバイス3を識別情報である「デバイス種別」および「デバイスID」、および通信チャネル情報である「通信チャネルID」を含む。「デバイス種別」は、ローカルデバイス3の種別を示す情報であり、アプリケーション120がローカルデバイス3を制御して実行可能なAPIを特定するための情報である。「デバイスID」は、「デバイス種別」が同一のローカルデバイス3を相互に識別するための識別情報である。なお、実行可能なAPIが特定可能であり、且つ、アプリケーション120が制御するローカルデバイス3が特定可能であれば、ローカルデバイス3を識別するための情報は、「デバイス種別」および「デバイスID」に分かれていなくても良い。「通信チャネルID」は、ローカルデバイス3と通信するための通信チャネル(ソケット)を識別するためのファイルディスクリプタ(識別子)である。なお、接続情報DB134は、データベースとしてではなく、メモリ上に記憶されてもよい。
(Connection information DB 134)
The
(デバイス通信管理プログラム132)
デバイス通信管理プログラム132は、クライアント用デバイス通信プログラム230との間で通信を確立して、クライアント用デバイス通信プログラム230とサーバ用デバイス通信プログラム130との間の通信を中継する機能を有する通信管理プログラムである。デバイス通信管理プログラム132は、リモートサービス通信が開始された後、クライアント用デバイス通信プログラム230からの接続要求を待って、サーバ用デバイス通信プログラム130とクライアント用デバイス通信プログラム230との通信を中継し、中継装置5を経由したデバイス中継通信を実現する。
(Device communication management program 132)
The device
詳しくは、まず、デバイス通信管理プログラム132は、クライアント用デバイス通信プログラム230からの接続要求に応じてクライアント用デバイス通信プログラム230との通信を確立する。ここで、例えばサーバ1からクライアント2に接続要求を送信する場合、ファイアウォールプログラム510において、全てのクライアント2への接続を許可するポートを設けることが要され、セキュリティの低下が懸念される。そこで、本実施形態に係るデバイス通信管理プログラム132は、クライアント用デバイス通信プログラム230からの接続要求に応じて、デバイス制御用の通信を確立する。このため、ファイアウォールプログラム510では、サーバ1への接続要求を許可するポートをひとつ設ければよく、セキュリティの低下を抑止することが可能である。
Specifically, first, the device
ここで、デバイス通信管理プログラム132は、クライアント用デバイス通信プログラム230との通信を確立すると、クライアント用デバイス通信プログラム230からローカルデバイス3にアクセスするための接続情報を受信する。そして、接続情報DB134は、デバイス通信管理プログラム132による通信の中継が行われている間、この接続情報を記憶する。通信が切断された場合、接続情報DB134は、切断された通信に関する接続情報を削除してもよい。他にも、接続/切断状態を示す接続フラグにより、接続情報に対応付けて接続/切断状態が一定期間キャッシュに記憶されてもよい。また、接続情報DB134は、全てのクライアント2の接続情報を接続フラグに対応付けて記憶しておき、デバイス通信管理プログラム132は、フラグを参照して通信が確立しているか否かを判定してもよい。
Here, when communication with the client
そして、デバイス通信管理プログラム132は、接続情報DB134に記憶された接続情報を用いて、サーバ用デバイス通信プログラム130とクライアント用デバイス通信プログラム230との通信を中継する。詳しくは、まず、デバイス通信管理プログラム132は、アプリケーション120がローカルデバイス3を制御する際に、制御する対象のローカルデバイス3に対応する接続情報を接続情報DB134から検索する。ここで、IPアドレスによってクライアントを識別する上記特許文献3を参考に、クライアント2のIPアドレスおよびポート番号を検索キーとして、制御対象のローカルデバイス3が接続されたクライアント2の接続情報を検索することが考えられる。しかし、NATプログラム520によりIPアドレスが1対多で変換された場合、IPアドレスおよびポート番号ではクライアント2を特定することが困難となる。そこで、デバイス通信管理プログラム132は、接続先のクライアント2のクライアント名を検索キーとして接続情報DB134から接続情報を検索する。検索キーが接続先のクライアント2のクライアント名であるため、NATプログラム520によりIPアドレスが1対多で変換される場合であっても、制御対象のローカルデバイス3が接続されたクライアント2の接続情報を特定することが可能となる。検索後、デバイス通信管理プログラム132は、検索した接続情報(接続状態のもの)に含まれる通信チャネルIDが示す通信チャネルを使用して、クライアント用デバイス通信プログラム230との通信を行う。
The device
以上、本実施形態に係る通信システムの構成を説明した。続いて、図9〜図11を参照して、本実施形態に係る通信システムによる動作処理の流れを説明する。 The configuration of the communication system according to the present embodiment has been described above. Subsequently, a flow of operation processing by the communication system according to the present embodiment will be described with reference to FIGS.
[2−3−3.動作処理]
図9〜図11は、第3の実施形態に係る通信システムの動作を示すシーケンス図である。図9に示すように、まず、ステップS102で、クライアント用デバイス通信プログラム230は、デバイス中継事前準備を行う。ここでの処理は、図5Aを参照して上記説明したステップS102〜S106における処理と同様である。なお、クライアント用デバイス通信プログラム230は、常駐型のサービスプロセスである。
[2-3-3. Operation processing]
9 to 11 are sequence diagrams showing the operation of the communication system according to the third embodiment. As shown in FIG. 9, first, in step S102, the client
次いで、ステップS304−1、S304−2で、クライアント用デバイス通信プログラム230は、リモートサービス通信が行われているか否かをポーリングする。このポーリングは、リモートサービス通信が開始されたことが検出されるまで繰り返される。なお、符号S304の末尾の数字は、ポーリングの回数を指すものとする。
Next, in steps S304-1 and S304-2, the client
次に、ステップS306で、リモート・サービス・クライアント・アプリケーション210は、リモートサービス通信を開始する。例えば、ユーザによる指示、又は自動的な起動設定等により、リモートサービス通信は開始され得る。なお、中継装置5は、クライアント2からサーバ1へのリモートサービス通信用のポートを開放しており、このリモートサービス通信は中継装置5を通過する。
Next, in step S306, the remote
次いで、ステップS308で、リモート・サービス・サーバ・アプリケーション110は、アプリケーション120を起動する。詳しくは、リモート・サービス・サーバ・アプリケーション110は、上記ステップS306において確立されたリモート接続の通信リンクにおいて、ログイン処理が実行された後にアプリケーション120を起動する。
Next, in step S308, the remote
次に、ステップS310で、アプリケーション120は、デバイス通信をオープンする。詳しくは、アプリケーション120は、サーバ用デバイス通信プログラム130に、デバイス制御用のリンクを確立するためのオープン命令を呼び出す。
Next, in step S310, the
次いで、ステップS312−1で、サーバ用デバイス通信プログラム130は、デバイス中継通信をオープンする。詳しくは、まず、サーバ用デバイス通信プログラム130は、環境変数又はレジストリを参照してリモート接続を行っているクライアント2の情報を取得する。そして、サーバ用デバイス通信プログラム130は、取得した接続先のクライアント情報に基づいて、デバイス通信管理プログラム132に対してデバイス中継通信のオープンをリクエストする。
Next, in step S312-1, the server
次に、ステップS314−1で、デバイス通信管理プログラム132は、接続情報DB134から使用可能な通信チャネルを検索する。詳しくは、デバイス通信管理プログラム132は、接続情報DB134から、接続先のクライアント2とのデバイス制御用の通信チャネルを検索する。クライアント2とのデバイス制御用の通信が確立している場合、後述のステップS322における処理において、指定されたクライアント2および制御対象のローカルデバイス3に関する上記表1に示した接続情報が接続情報DB134に登録される。このため、クライアント2とのデバイス制御用の通信が確立している場合には、デバイス通信管理プログラム132による通信チャネルの検索が成功する。
Next, in step S <b> 314-1, the device
通信チャネルの検索に失敗した場合、ステップS316−1で、デバイス通信管理プログラム132は、オープンに失敗した旨を示すオープンNG回答をサーバ用デバイス通信プログラム130に応答する。サーバ1は、上記ステップS312−1〜S316−1の処理を、タイムアウトするまで定期的にポーリングする。ポーリングを行うのは、サーバ用デバイス通信プログラム130でもよいし、デバイス通信管理プログラム132でもよい。なお、符号S312−1、314−1、316−1の末尾の数字は、ポーリングの回数を指すものとする。
If the communication channel search fails, in step S316-1, the device
図10に示すように、ステップS304−Nのポーリングにおいて、リモートサービス通信中であることが確認された場合、ステップS318で、クライアント用デバイス通信プログラム230は、デバイス中継通信をオープンする。詳しくは、クライアント用デバイス通信プログラム230は、リモートサービス通信の接続先のサーバ1に対して、デバイス中継通信のオープンをリクエストする。これにより、クライアント2からサーバ1への通信チャネルが形成され、デバイス制御用の通信が確立される。なお、中継装置5は、クライアント2からサーバ1へのデバイス制御用の通信のためのポートを開放しており、この通信チャネルは中継装置5を通過する。なお、中継装置5が存在しない場合には、上記第1、第2の実施形態と同様に、サーバ1がクライアント2へのデバイス制御用の通信を確立してもよい。
As shown in FIG. 10, when it is confirmed that the remote service communication is being performed in the polling of step S304-N, the client
次いで、ステップS320で、クライアント用デバイス通信プログラム230は、デバイス通信管理プログラム132に初期データ送信する。例えば、クライアント用デバイス通信プログラム230は、接続しているローカルデバイス3ごとにデバイス種別、デバイスIDをペアとしたリストを、ステップS318において確立されたデバイス制御用の通信チャネルを用いて送信する。
In step S320, the client
次に、ステップS322で、デバイス通信管理プログラム132は、受信した初期データを、接続情報として接続情報DB134に登録する。このとき、デバイス通信管理プログラム132は、IPアドレスではなくクライアント名を受信した初期データに対応付けて登録する。これにより、1対1のIPアドレス変換に加え、1対多のIPアドレス変換にも対応した、通信チャネルとクライアント2との紐付けが可能となる。なお、接続情報DB134に以前のデータが記憶されている場合、デバイス通信管理プログラム132は、新たに受信した初期データにより接続情報を更新してもよい。
Next, in step S322, the device
S314−Nにおけるデバイス中継通信のオープンに係るポーリングにおいて、通信チャネルの検索に成功すると、デバイス通信管理プログラム132は、オープンに成功した旨を示すオープンOK回答をサーバ用デバイス通信プログラム130に応答する。
In the polling related to the opening of the device relay communication in S314-N, when the communication channel search is successful, the device
そして、ステップS324で、サーバ用デバイス通信プログラム130は、オープンOK回答の受信に応じて、デバイス通信のオープンが完了した旨を、アプリケーション120に通知する。
In step S324, the server
以上説明した処理により、デバイス中継通信が開始され、アプリケーション120は、クライアント2に接続されているローカルデバイス3を制御することが可能となる。以下、図11を参照して、上記説明した処理により形成された通信チャネルを用いたデバイス制御処理の流れを説明する。
With the processing described above, device relay communication is started, and the
図11に示すように、まず、ステップS402で、アプリケーション120は、入出力要求情報を、サーバ用デバイス通信プログラム130に送信する。
As shown in FIG. 11, first, in step S <b> 402, the
次いで、ステップS404で、サーバ用デバイス通信プログラム130は、受信した入出力要求情報を、デバイス通信管理プログラム132に中継する。
Next, in step S <b> 404, the server
次に、ステップS406で、デバイス通信管理プログラム132は、入出力要求情報を送信するために用いるべき通信チャネルを検索する。詳しくは、デバイス通信管理プログラム132は、リモート接続先のクライアント2のクライアント名を検索キーとして、接続情報DB134から通信チャネルIDを検索する。
Next, in step S406, the device
そして、ステップS408で、デバイス通信管理プログラム132は、入出力要求情報を、リモート接続先のクライアント2に中継する。詳しくは、デバイス通信管理プログラム132は、上記ステップS406で検索した通信チャネルIDに対応する通信チャネルを用いて、入出力要求情報を送信する。
In step S408, the device
次いで、ステップS410で、クライアント用デバイス通信プログラム230は、デバイスドライバ240を介して、ローカルデバイス3をIOCTLにより制御する。
Next, in step S <b> 410, the client
次に、ステップS412で、ローカルデバイス3は、上記ステップS410において受けたIOCTLに基づき各種処理を行い、その応答(入出力応答情報)をクライアント用デバイス通信プログラム230に返信する。
Next, in step S412, the
次いで、ステップS414で、クライアント用デバイス通信プログラム230は、返信された入出力応答情報を、サーバ1に送信する。
Next, in step S 414, the client
次に、ステップS416で、デバイス通信管理プログラム132は、受信した入出力応答情報を、サーバ用デバイス通信プログラム130に中継する。
Next, in step S416, the device
そして、ステップS418で、サーバ用デバイス通信プログラム130は、受信した入出力応答情報を、アプリケーション120に中継する。
In step S418, the server
以上、本実施形態に係る通信システムによる動作処理の流れを説明した。本実施形態に係るサーバ1は、クライアント2からの接続要求に応じてデバイス制御用の通信を確立するため、ファイアウォールプログラム510では、サーバ1への接続要求を許可するポートをひとつ設ければよく、セキュリティの低下を抑止される。また、サーバ1は、デバイス制御用の通信をクライアント名で管理するため、NATプログラム520によりIPアドレスが1対多で変換される場合であっても、制御対象のローカルデバイス3に対応する通信チャネルを特定することができる。
The flow of operation processing by the communication system according to the present embodiment has been described above. Since the
<3.まとめ>
以上説明したように、本発明の一実施形態に係る通信システムは、仮想デバイスドライバを用いることなくリモートアクセス環境を実現することが可能である。具体的には、本実施形態に係るサーバ1は、サーバ用デバイス通信プログラム130とクライアント用デバイス通信プログラム230との通信を介して、クライアント2に接続されたローカルデバイス3を制御する。これにより、サーバ1で仮想デバイスドライバが動作することがなく、クライアント2内でのみデバイスドライバが動作するため、ネットワーク4の遅延等によるIOCTLのタイムアウトエラー等の発生を回避することができる。また、デバイスドライバは、クライアント2でのみ用いられ、サーバ1で用いられることがないため、サーバ1のOSがデバイスメーカーのサポート外であっても、リモートアクセス環境を実現することができる。
<3. Summary>
As described above, the communication system according to an embodiment of the present invention can realize a remote access environment without using a virtual device driver. Specifically, the
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。 The preferred embodiments of the present invention have been described in detail above with reference to the accompanying drawings, but the present invention is not limited to such examples. It is obvious that a person having ordinary knowledge in the technical field to which the present invention pertains can come up with various changes or modifications within the scope of the technical idea described in the claims. Of course, it is understood that these also belong to the technical scope of the present invention.
例えば、本開示の第1の実施形態および第2の実施形態は適宜組み合わせることが可能である。 For example, the first embodiment and the second embodiment of the present disclosure can be appropriately combined.
また、情報処理装置に内蔵されるCPU、ROM及びRAM等のハードウェアに、上記サーバ1またはクライアント2の各構成と同等の機能を発揮させるためのコンピュータプログラムも作成可能である。また、当該コンピュータプログラムを記録した記録媒体も提供される。
Further, it is possible to create a computer program for causing hardware such as a CPU, a ROM, and a RAM built in the information processing apparatus to perform functions equivalent to the configurations of the
1 サーバ
101 プロセッサ
102 メモリ
110 リモート・サービス・サーバ・アプリケーション
120 アプリケーション
130 サーバ用デバイス通信プログラム
132 デバイス通信管理プログラム
134 接続情報DB
140 セッション
2 クライアント
201 プロセッサ
202 メモリ
210 リモート・サービス・クライアント・アプリケーション
230 クライアント用デバイス通信プログラム
240 デバイスドライバ
251 カーネルドライバ
252 バスドライバ
253 ホストコントローラドライバ
254 ホストコントローラ
3 ローカルデバイス
4 ネットワーク
5 中継装置
510 ファイアウォールプログラム
520 NATプログラム
DESCRIPTION OF
140
Claims (10)
前記サーバ装置は、
アプリケーションの要求に応じて、前記クライアント装置に接続された外部装置への、前記外部装置を示す識別情報及び前記外部装置に係る第1の入出力制御情報を含む命令情報を、前記クライアント装置に送信する第1の通信プログラムを有し、
前記クライアント装置は、
デバイスドライバと、
前記サーバ装置から前記命令情報を受信し、受信された前記命令情報を前記クライアント装置における第2の入出力制御情報に変換して前記外部装置に対応する前記デバイスドライバに中継する第2の通信プログラムと、
を有する、通信システム。 A communication system including a client device and a server device functioning as a virtual desktop environment of the client device,
The server device
Depending on the application requirements, sending the to the connected external device to the client device, the instruction information including the first input-output control information according to the identification information and the external device indicates the external device, to the client device Having a first communication program
The client device is
A device driver,
A second communication program that receives the command information from the server device, converts the received command information into second input / output control information in the client device, and relays it to the device driver corresponding to the external device When,
A communication system.
前記第1の通信プログラムは、前記クライアント装置から受信された前記出力情報を前記アプリケーションに中継する、請求項1〜4のいずれか一項に記載の通信システム。 The second communication program transmits output information output from the external device to the server device based on the second input / output control information,
The communication system according to any one of claims 1 to 4, wherein the first communication program relays the output information received from the client device to the application.
前記第2の通信プログラムとの間で通信を確立して前記第2の通信プログラムと前記第1の通信プログラムとの間の通信を中継する通信管理プログラムと、
前記外部装置との通信を行うための接続情報を記憶する記憶部と、
をさらに備え、
前記通信管理プログラムは、前記第2の通信プログラムからの接続要求に応じて前記第2の通信プログラムとの通信を確立し、前記記憶部に記憶された前記接続情報を用いて前記第1の通信プログラムと前記第2の通信プログラムとの通信を中継する、請求項1〜6のいずれか一項に記載の通信システム。 The server device
And a communication management program that relays communication between said established communication with pre-Symbol second communication program with the second communication program first communication program,
A storage unit for storing connection information for communicating with the external device;
Further comprising
The communication management program establishes communication with the second communication program in response to a connection request from the second communication program, and uses the connection information stored in the storage unit to perform the first communication. The communication system according to any one of claims 1 to 6, wherein communication between the program and the second communication program is relayed.
第1の前記通信プログラムは、前記サーバ装置に含まれ、前記アプリケーションの要求に応じて、前記クライアント装置に接続された外部装置への、前記外部装置を示す識別情報及び前記外部装置に係る第1の入出力制御情報を含む命令情報を、前記クライアント装置に送信し、
第2の前記通信プログラムは、前記クライアント装置に含まれ、前記サーバ装置から前記命令情報を受信し、受信された前記命令情報を前記クライアント装置における第2の入出力制御情報に変換して前記外部装置に対応するデバイスドライバに中継する、通信プログラム。
A communication program for controlling communication between a client device and an application of a server device functioning as a virtual desktop environment of the client device,
The first communication program is included in the server device, and in response to a request from the application , identification information indicating the external device to the external device connected to the client device and the first related to the external device instruction information for including output control information, and transmitted to the client device,
The second communication program is included in the client device, receives the command information from the server device, converts the received command information into second input / output control information in the client device, and converts the external information to the external device A communication program that relays to the device driver corresponding to the device.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014067744A JP6281369B2 (en) | 2013-11-12 | 2014-03-28 | Communication system and communication program |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013233876 | 2013-11-12 | ||
JP2013233876 | 2013-11-12 | ||
JP2014067744A JP6281369B2 (en) | 2013-11-12 | 2014-03-28 | Communication system and communication program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015118684A JP2015118684A (en) | 2015-06-25 |
JP6281369B2 true JP6281369B2 (en) | 2018-02-21 |
Family
ID=53531307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014067744A Active JP6281369B2 (en) | 2013-11-12 | 2014-03-28 | Communication system and communication program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6281369B2 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7371784B2 (en) * | 2020-07-13 | 2023-10-31 | 日本電信電話株式会社 | Communication relay device, communication relay system, communication relay method, and program |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8918530B2 (en) * | 2005-09-09 | 2014-12-23 | Microsoft Corporation | Plug and play device redirection for remote systems |
JP5166307B2 (en) * | 2009-01-30 | 2013-03-21 | 株式会社立花エレテック | Connection device utilization system and method |
-
2014
- 2014-03-28 JP JP2014067744A patent/JP6281369B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2015118684A (en) | 2015-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5885834B2 (en) | Method and apparatus for remotely delivering a managed USB service via a mobile computing device | |
CN105122931B (en) | Electronic equipment and the method that personal cloud device is registered in its portal user server | |
US10148852B2 (en) | Image processing system, control apparatus, image processing apparatus, and methods of controlling these | |
US20130346591A1 (en) | Clientless Cloud Computing | |
US20090240785A1 (en) | Information Processing Unit, Information Playback Unit, Information Processing Method, Information Playback Method, Information Processing System and Program | |
KR20130018708A (en) | System and method for two way communication and controlling content in a web browser | |
JP5307276B2 (en) | USB device remote control method and system for executing the same | |
TW200523741A (en) | Simple and dynamic configuration of network devices | |
JP2008210115A (en) | System for operating usb device of local terminal on remote computer, method therefor and program therefor | |
US20130201519A1 (en) | Bridging Non-Network Interfaces and Network Interfaces | |
CN108206842B (en) | Cloud desktop remote access method and system | |
TW201347475A (en) | Memory device and wireless communication control method of the same | |
CN109309967A (en) | Method, device and computer-readable storage medium for transferring files | |
CN105912952B (en) | A kind of registration list service system, method and financial self-service equipment based on Linux | |
US11079983B2 (en) | Information processing apparatus that saves, in a shared memory, information for accessing a device using a URL via a USB, and method of controlling same | |
US10367894B2 (en) | Information processing apparatus, method for controlling the same, non-transitory computer-readable storage medium, and information processing system | |
US20170311224A1 (en) | Method and apparatus for implementing network sharing | |
EP3748492B1 (en) | Downloading and launching an app on a second device from a first device | |
JP6281369B2 (en) | Communication system and communication program | |
JP6086183B2 (en) | Information processing system, information processing method, server, control method thereof, and control program | |
JP2009098977A (en) | Peripheral device connection system | |
JP4649584B2 (en) | Peripheral device driver installation system | |
US11528762B2 (en) | Information processing apparatus and control method of the same | |
US20190014011A1 (en) | Information processing device and method for setting the environment of the device | |
JP6539497B2 (en) | Communication relay system, device accommodation terminal, server side computer, program, and communication relay method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20161115 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20170731 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170822 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20171020 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20171226 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180108 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6281369 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |