JP3196618B2 - パーソナルコンピュータおよびそれを用いた通信システム - Google Patents

パーソナルコンピュータおよびそれを用いた通信システム

Info

Publication number
JP3196618B2
JP3196618B2 JP30550395A JP30550395A JP3196618B2 JP 3196618 B2 JP3196618 B2 JP 3196618B2 JP 30550395 A JP30550395 A JP 30550395A JP 30550395 A JP30550395 A JP 30550395A JP 3196618 B2 JP3196618 B2 JP 3196618B2
Authority
JP
Japan
Prior art keywords
program
command
personal computer
communication
data
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.)
Expired - Lifetime
Application number
JP30550395A
Other languages
English (en)
Other versions
JPH09148993A (ja
Inventor
幸男 中田
進 松井
泰弘 高橋
毅 近藤
豊 大津
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP30550395A priority Critical patent/JP3196618B2/ja
Priority to US08/755,594 priority patent/US5854841A/en
Publication of JPH09148993A publication Critical patent/JPH09148993A/ja
Application granted granted Critical
Publication of JP3196618B2 publication Critical patent/JP3196618B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Transmission Systems Not Characterized By The Medium Used For Transmission (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はパーソナルコンピュ
ータ等の複数の情報処理装置をLAN、公衆網、無線等
により接続した通信システムにおいて、アプリケーショ
ンプログラム間で通信を行う際にデータを圧縮/暗号化
して通信を行う通信システムに関する。
【0002】
【従来の技術】複数のサーバパーソナルコンピュータ
(以下PC)と複数のクライアントPCを通信手段で接
続し、クライアントPCがサーバPCを指定して、その
サービスを受けるクライアントサーバシステムが普及し
つつある。近年、通信手段として広域ネットワークや無
線を用いるケースが増加しつつある。またサービスの形
態として、商品の購入におけるクレジットカードの番号
の転送や企業内の機密データの送受信を行うケースが増
加しつつある。
【0003】このようなケースではデータが第3者によ
り盗聴され悪用されると、ユーザあるいは企業にとって
大きな損失となる。また、広域ネットワークや無線通信
においては通信速度が遅いため、データを圧縮して送る
必要がある。
【0004】一方、クライアントサーバシステム通信を
行うアプリケーションプログラムには従来から標準化さ
れた通信手段が提供されている。例えば、インターネッ
トの世界で使われるソケットインターフェースが有名で
ある。ソケットインターフェースは標準化されたインタ
ーフェースを提供すると供に、通信に使われるプロトコ
ルや通信ハードウエアの種類をアプリケーションプログ
ラムに意識させないようにするという目的も持つ。ソケ
ットインターフェースは現在大型計算機からワークステ
ーション、パーソナルコンピュータに至るまで広く使わ
れており、そのインターフェースを用いて動作するアプ
リケーションプログラムは膨大な数にのぼる。しかし、
ソケットインターフェース自体はデータの圧縮/暗号の
機能を持っていないので、データを圧縮/暗号化して通
信を行うには別途手段を用意しなければならない。一例
として米国NetScape社が開発したSSL(Se
cure Sockets Layer)プロトコルは
ソケットインターフェースの上層でデータを暗号化して
送るためのプロトコルである。この場合、アプリケーシ
ョンプログラム側で事前にデータを暗号化してから、ソ
ケットインターフェースに渡す。SSLはどのようなア
プリケーションプログラムに対してもデータの暗号化機
能を提供できるが、アプリケーションプログラム自体に
変更を加える必要がある。すなわち、従来のソケットイ
ンターフェースコマンドを出す替わりに、SSLが用意
するコマンドを出すように修正する必要がある。
【0005】またアプリケーションプログラムに特化し
た暗号化通信プロトコルもある。例えば、インターネッ
ト標準案であるS−HTTP(Secure−Hype
rText Transfer Protocol)は
分散ハイパーメディアであるWWW(World Wi
de Web)で用いる通信プロトコルHTTPに暗号
化機能を取り入れたものである。
【0006】またデータを圧縮/暗号化する方法として
は通信アダプタあるいは通信アダプタを制御するドライ
バプログラムにおいてデータを圧縮/暗号化するものも
ある。例えば通信モデムにおいてデータを圧縮するもの
としてv42.bis国際標準仕様がある。またデータ
の圧縮/暗号化を通信アダプタのドライバプログラムで
行う例としてPPP(Point−to−Point
Protocol)がある。
【0007】
【発明が解決しようとする課題】ソケットインターフェ
ースを用いてクライアントサーバシステム通信を行うア
プリケーションプログラムがデータを圧縮及び暗号化を
行う場合、従来の方式、例えばSSLではアプリケーシ
ョンプログラムを改造してSSL専用のコマンドを使う
ように変更しなければならないため、既に存在する膨大
な数のアプリケーションプログラムが圧縮/暗号化機能
を利用することは難しいという問題があった。また、S
−HTTPのように特定のアプリケーション向けに開発
された暗号化プロトコルは当然のことながら他のアプリ
ケーションには使えないと言う問題があった。
【0008】また送信側と受信側で圧縮/暗号処理を各
々変換テーブルを用いて行い、各変換テーブルの内容を
送受信データに基づいて動的に更新していく通信システ
ムにおいて、圧縮/暗号化したデータの転送途中で通信
路の障害、あるいは通信路が混雑しているためにアプリ
ケーションプログラムが送信を中断した場合は、送信側
においては変換テーブルが圧縮/暗号データの最後まで
更新されているにもかかわらず、受信側においてはデー
タの途中までしか更新されていないため二つの変換テー
ブル間で不一致が生じ以降の圧縮/暗号処理が正常に行
えないと言う問題があった。
【0009】またクライアントとサーバ間でデータを圧
縮/暗号化して通信する場合に、通信路の途中にゲート
ウェイが存在する場合クライアントとゲートウェイの
間、及びゲートウェイとサーバの間で個別にコネクショ
ンを設定する必要があるため、ゲートウェイ上で一旦デ
ータを復号/伸張し元の形に戻し、再度圧縮/暗号化す
る必要があった。
【0010】そこで本発明の目的は既存のアプリケーシ
ョンプログラムを変更することなしにソケットインター
フェースを用いて圧縮/暗号データを送受信できる通信
システムを提供することにある。
【0011】また本発明の他の目的は通信用ハードウエ
アの種類に依存しない圧縮/暗号通信システムを提供す
ることにある。
【0012】また本発明の他の目的は圧縮/暗号データ
の転送をアプリケーションプログラムが中断した場合に
おいても送信側と受信側で転送データを一致化させるよ
うにする圧縮/暗号通信システムを提供することにあ
る。
【0013】また本発明の他の目的はゲートウェイを介
して通信するクライアントとサーバ間でデータを圧縮/
暗号化したまま通信することを可能にする圧縮/暗号化
通信システムを提供することである。
【0014】
【課題を解決するための手段】上記の目的を達成するた
めに、複数のパーソナルコンピュータが通信回線を用い
て互いに接続されており、パーソナルコンピュータには
通信モジュールとアプリケーションプログラムがあり、
アプリケーションプログラムは通信モジュールが提供す
るコマンドを用いて他のパーソナルコンピュータとの間
でデータの送受信を行う通信システムにおいて、コマン
ドをフックするプログラムを用意し、アプリケーション
プログラムのデータを圧縮/暗号化する。また通信開始
時に圧縮/暗号で用いるアルゴリズムについてネゴシエ
ーションを行うようにした。
【0015】また、フックプログラムはデータ送信コマ
ンドに付随するデータをある決まった長さのフレーム単
位に圧縮及び暗号化を行い送信し、フレームの送信が途
中で中断した場合に、該フレームの送信完了を該データ
送信コマンドの応答として返し、未送信のフレームの送
信を引き続き行うようにした。
【0016】また通信を行う一方のパーソナルコンピュ
ータにおいてのみ圧縮/暗号プログラムが実装されてい
る場合に、圧縮/暗号を行わない通信を行う。また通信
相手のパーソナルコンピュータが圧縮/暗号機能を持っ
ていない場合にユーザに通信を開始するかどうかの確認
をユーザに求めるようにした。
【0017】またゲートウェイを介して第一のパーソナ
ルコンピュータと第二のパーソナルコンピュータが通信
を行う場合に、ゲートウェイ上にフックプログラムを用
意し、まず第一のパーソナルコンピュータのフックプロ
グラムとゲートウェイのフックプログラムの間でコネク
ションを設定した後、第一のパーソナルコンピュータの
フックプログラムからゲートウェイのフックプログラム
に宛てて第二のパーソナルコンピュータのアドレスと接
続端点の情報を送り、該フックプログラムは次にその情
報をもとに第二のパーソナルコンピュータの接続端点に
コネクションを設定し、以降上記の二つのコネクション
を用いて第一のパーソナルコンピュータと第二のパーソ
ナルコンピュータの間で通信するようにした。
【0018】この様に構成すれば、アプリケーションプ
ログラムが発行したデータ通信用のコマンドの制御を本
来のソケットインターフェースプログラムに渡す代わり
に、独自に用意した圧縮/暗号プログラムに渡し、そこ
でアプリケーションプログラムのデータに対して圧縮/
暗号化処理を行った後、ソケットインターフェースプロ
グラムに渡す。あるいはソケットインターフェースプロ
グラムから受け取ったデータを伸張/復号し、アプリケ
ーションプログラムに渡すことにより、アプリケーショ
ンプログラムを変更することなしにデータを圧縮/暗号
して通信することが可能になる。
【0019】また、圧縮/暗号プログラムは複数の圧縮
アルゴリズム及び複数の暗号アルゴリズムを持つことが
でき、通信コネクション確立時に自分と相手の圧縮/暗
号プログラム間で使用可能なアルゴリズムを提示するこ
とで共通のアルゴリズムを決定し、それを使用して通信
できる。
【0020】また、通信する相手のパーソナルコンピュ
ータが圧縮/暗号プログラムを実装していない場合にネ
ゴシエーションが成功しないことを検出して、データの
圧縮/暗号処理を行わないようにすることで、片方のみ
が圧縮/暗号プログラムを動作させていない場合でも通
信ができる。
【0021】また、通信する相手のパーソナルコンピュ
ータが圧縮/暗号プログラムを実装していない場合にネ
ゴシエーションが成功しないことを検出して、パーソナ
ルコンピュータの画面に、相手が圧縮/暗号機能を持っ
ていないことを表示し、このまま通信を開始するかどう
かを問い合わせ、ユーザがOKと応答した場合にのみ通
信を開始することができる。
【0022】また本発明によれば、圧縮/暗号処理をフ
レーム単位で行い、該フレームについては圧縮/暗号モ
ジュールが最後まで相手に送り届けることを保証するよ
うにしたので、圧縮/暗号用の変換テーブルが送信側と
受信側とで不一致が生じデータの圧縮/暗号が不可能に
なることがない。
【0023】また本発明によれば、第一のパーソナルコ
ンピュータと第二のパーソナルコンピュータがゲートウ
ェイを介して通信する場合においても、ゲートウェイ上
に用意したフックプログラムが第1のパーソナルコンピ
ュータとゲートウェイ間のコネクションとゲートウェイ
と第二のパーソナルコンピュータ間のコネクションとを
中継するので、第一のパーソナルコンピュータで圧縮/
暗号化されたパケットのデータを復号/伸張せずにその
ままサーバへ送ることができるのでクライアントとサー
バ間で効率よく圧縮/暗号を用いた通信を行うことがで
きる。
【0024】
【発明の実施の形態】以下、図面を用いて、本発明の実
施例を説明する。なお、以下で説明する図面において、
同一の番号は同様の部品、要素を表すものとする。ま
た、これにより本発明が限定されるものではない。
【0025】(実施例1)図2は従来の通信システムの
動作を示す図である。1000及び2000はパーソナ
ルコンピュータである。両者は通信媒体10により接続
されている。パーソナルコンピュータの内部にはアプリ
ケーションプログラム(1100、2100)及びソケ
ットインターフェースプログラム(以後ソケットプログ
ラム)(1300、2300)がある。アプリケーショ
ンプログラム1100はソケットプログラム1300の
内部の処理関数(1141など)をコマンドすることに
より処理を実行する。ソケットプログラム1300の内
部にはアプリケーションプログラムとソケットプログラ
ムとの間を関連づけるソケット1340が複数個用意さ
れている。ソケット1340はアプリケーションプログ
ラム内部にあるローカルアドレステーブル1140及び
リモートアドレステーブル1150を指しており、アプ
リケーションプログラムはソケットをソケットプログラ
ムから割り当ててもらうことにより、相手との通信が可
能になる。アドレステーブル(1140、1150)に
はネットワークアドレス(1141、1151)及びポ
ート番号(1142、1152)の各エントリがある。
ネットワークアドレスはパーソナルコンピュータをネッ
トワーク内で一意に識別するためのものであり、ポート
番号はパーソナルコンピュータ内でアプリケーションプ
ログラムを識別するためのものである。以上述べた内容
はパーソナルコンピュータ2000においても同様であ
る。
【0026】以下、アプリケーションプログラム110
0とアプリケーションプログラム2100が通信する様
子を説明する。この例ではアプリケーションプログラム
1100はクライアントであり、アプリケーションプロ
グラム2100はサーバとする。すなわちアプリケーシ
ョンプログラム1100は利用者が操作するプログラム
であり、アプリケーションプログラム2100は利用者
にデータベースアクセスなどのサービスを提供するプロ
グラムである。サーバには複数のクライアントが接続す
る。
【0027】最初にクライアントアプリケーションプロ
グラム1100の動作から説明する。クライアントアプ
リケーションプログラムはsocketコマンド111
1を発行する。このコマンドはソケットプログラムのs
ocket処理1311に渡され、クライアントアプリ
ケーションプログラムに対しソケット1340が割り当
てられる。アプリケーションプログラムは以降の全ての
ソケットインターフェース関数の実行時にこのソケット
を指定することにより、ソケットプログラムにアプリケ
ーションプログラムを認識させることができる。次にク
ライアントアプリケーションプログラムはサーバのリモ
ートアドレステーブル1150を引数にしてconne
ctコマンド1115を発行する。リモートアドレステ
ーブル1150のネットワークアドレスエントリ115
1には値としてパーソナルコンピュータ2000のアド
レス100.1.2.3を、またポート番号エントリ1
152にはサーバアプリケーションプログラム2100
を表す番号21をあらかじめセットしておく。このコマ
ンドはconnect処理1315に渡され、conn
ect処理はソケット1340とアドレステーブル11
50との対応を付けると供に、アドレステーブル内の指
定されたサーバに対してコネクション設定処理を行う。
なおローカルアドレステーブル1140は本例では使用
しない。コネクション設定が終了すると、クライアント
アプリケーションプログラムは送信データが格納された
バッファ1161を指定し、sendコマンド1116
を発行する。コマンドはsend処理1316に渡され
データはサーバアプリケーションプログラム2100へ
送信される。次にクライアントアプリケーションプログ
ラムはデータ受信バッファ1162を指定してrecv
コマンド1117を発行する。コマンドはrecv処理
1317に渡されサーバアプリケーションプログラム2
100から受信したデータが受信バッファ1162に格
納される。次にクライアントアプリケーションプログラ
ム1100はcloseコマンド1118を発行する。
このコマンドはソケットプログラムのclose処理1
318に渡され、クライアントアプリケーションプログ
ラムに対するソケット1340の割り当てが解除され
る。
【0028】次にサーバアプリケーションプログラム2
100の動作を説明する。サーバアプリケーションプロ
グラムはsocketコマンド2111を発行する。コ
マンドはソケット処理2311に渡されソケット234
0がサーバアプリケーションプログラム2100に割り
当てられる。次にサーバアプリケーションプログラムは
ローカルアドレステーブル2140を指定してbind
コマンド2112を発行する。ローカルアドレステーブ
ル2140のネットワークアドレスエントリ2141に
は値としてローカルのパーソナルコンピュータ2000
のアドレス100.1.2.3を、またポート番号エン
トリ2142には自分自身すなわちサーバアプリケーシ
ョンプログラム2100を表す番号として21をあらか
じめセットしておく。コマンドはbind処理2312
に渡されソケット2340とローカルアドレステーブル
2140との対応が付けられる。なおリモートアドレス
テーブル2150は本例では使用しない。次にサーバア
プリケーションプログラムはlistenコマンド21
13を発行する。コマンドはlisten処理プログラ
ム2313で処理される。listenはサーバアプリ
ケーションプログラムが受付け可能なコネクションの最
大数をソケットプログラムに通知する。次にサーバアプ
リケーションプログラムはacceptコマンド211
4を発行する。このコマンドはaccept処理231
4に渡され、accept処理はソケット2340と同
じ性質を持った新しいソケット2341をサーバアプリ
ケーションプログラム2100に割り当てると供に、他
のパーソナルコンピュータからのコネクション設定要求
を待つ。コネクション設定が終了すると、accept
コマンドはリターンする。次にサーバアプリケーション
プログラムはデータ受信バッファ2161を指定してr
ecvコマンド2116を発行する。コマンドはrec
v処理2316に渡されクライアントアプリケーション
プログラム1100から受信したデータが受信バッファ
2161に格納される。サーバアプリケーションプログ
ラムは送信データが格納されたバッファ2162を指定
し、sendコマンド2117を発行する。コマンドは
send処理2317に渡されデータはクライアントア
プリケーションプログラム1100へ送信される。次に
サーバアプリケーションプログラム2100はclos
eコマンド2118を発行する。このコマンドはソケッ
トプログラムのclose処理2318に渡されクライ
アントアプリケーションプログラムに対するソケット1
340及び1061の割り当てが解除される。
【0029】図1は本発明の第1の実施例に係わる通信
システムの構成を示すブロック図である。1000、2
000、3000、4000はパーソナルコンピュータ
であり、それぞれ通信媒体10により接続されている。
パーソナルコンピュータ1000の内部にはアプリケー
ションプログラム1100、圧縮/暗号モジュール12
00、ソケットインターフェースプログラム(ソケット
プログラム)1300がある。パーソナルコンピュータ
2000の内部には同様にアプリケーションプログラム
2100、圧縮/暗号モジュール2200、及びソケッ
トプログラム2300がある。アプリケーションプログ
ラム1100の内部でソケットプログラム1300に対
して発行された関数コマンド1115をフックし圧縮/
暗号モジュール1200のフック関数1215に渡し、
そこで圧縮/暗号処理を行う。フック関数1215の中
でソケットプログラムの関数1315をコマンドし実際
のソケット処理が行われる。またソケットプログラム1
300の内部でアプリケーションプログラム1100に
対して発行された関数コマンド1325をフックし圧縮
/暗号モジュール1200のフック関数1225に渡
し、そこで圧縮/暗号処理を行う。フック関数1225
の中でアプリケーションプログラムの関数1125をコ
マンドする。他のパーソナルコンピュータ内でも同様の
制御が行われる。
【0030】次に図3から図6を用いてフック処理の詳
細を説明する。この例はパーソナルコンピュータ用オペ
レーティングシステムであるWindows NTの場
合を取り上げる。図3と図4はアプリケーションプログ
ラムがソケット関数をコマンドする場合、図5と図6は
ソケットプログラムからアプリケーションプログラムが
コマンドされる場合である。
【0031】図3はフック処理を行わない場合のアプリ
ケーションプログラムからソケット関数をコールすると
きの制御の流れである。C言語を用いたソースプログラ
ムでソケット関数のconnect()コマンド51
5、send()コマンド516、526を発行してい
る。これをコンパイルすると実行可能モジュールはアプ
リケーションプログラム1100のようになる。すなわ
ちソケットのconnectコマンド515はアセンブ
リ言語のCALL命令1115となる。このコマンド命
令はソケットプログラムのconnect関数1315
を直接呼び出さないで、アプリケーションプログラム1
100内の別の場所にあるJMP命令1175を呼び出
す。このJMP命令は間接ジャンプ命令でありジャンプ
テーブル1180内のDWORDに格納されたポインタ
1185が指し示すアドレスにジャンプする。このアド
レスが目的とするソケットプログラムのconnect
処理関数である。以下同じようにして2つのsendコ
マンド516、526はそれぞれCALL命令111
6、1119となり、これらは一つのJMP命令117
6を呼び出す。このJMP命令はジャンプテーブル11
80内のポインタ1186の指し示すsend処理関数
1316へジャンプする。以上よりジャンプテーブル内
のポインタを書き換えればソケットプログラムに制御を
渡す前に任意の処理に制御を渡すことができる。
【0032】図4はフック処理を行った場合のアプリケ
ーションプログラムからソケット関数をコールするとき
の制御の流れである。ジャンプテーブル1180のポイ
ンタ1185は圧縮/暗号モジュール1200のcon
nectフック処理1215を指す。またポインタ11
86はsendフック処理1216を指す。conne
ctフック処理を例に取り詳細に説明する。conne
ctフック処理はまず圧縮/暗号前処理1235を行
う。次にソケットプログラム1300のconnect
処理関数1315に対するCALL命令1265を発行
する。このコマンド命令はJMP命令1275を呼び出
す。JMP命令はジャンプテーブル1280内のポイン
タ1285が指し示すconnect処理関数1315
へジャンプする。connect処理関数の処理が終わ
ると制御はconnectフック処理へ戻り、続けて圧
縮/暗号後処理1245が行われる。次にRTN命令1
255が実行され制御はアプリケーションプログラム1
100のCALL命令1115の下に戻る。
【0033】図5はフック処理を行わない場合のソケッ
トプログラム1300からアプリケーションプログラム
1100をコールするときの制御の流れである。アプリ
ケーションプログラムはWSAAsyncSelect
コマンド1120を用いてソケットプログラム1300
に、イベントを通知してもらうウインドウプログラム1
130の名称hWnd1を登録する。WSAAsync
Selectコマンドには他にもソケット番号s、イベ
ントを通知してもらうメッセージの名称wMsg及び通
知してもらうイベントの種類lEventを指定する。
ソケットプログラム1300において指定されたイベン
トlEvent1325が発生するとソケットプログラ
ムはメッセージwMsg1330をアプリケーションプ
ログラム1100のウインドウプログラム1130が所
有するメッセージキュー1131にキューする。ウイン
ドウプログラム1130はGetMessageコマン
ド1132を用いてメッセージキュー1131からメッ
セージwMsg1330を取り出しその中にある発生イ
ベントlEvent1325を検出してlEvent対
応処理1125を行う。
【0034】図6はフック処理を行う場合のソケットプ
ログラム1300からアプリケーションプログラム11
00をコールするときの流れを示したものである。圧縮
/暗号モジュール1200はアプリケーションプログラ
ム1100が発行したWSAAsyncSelectコ
マンド1120をフックし、引数のウインドウプログラ
ム名称hWnd1を圧縮/暗号モジュール内にあるウイ
ンドウプログラム1230の名称hWnd2に変更して
ソケットプログラム1300に登録する。
【0035】次にソケットプログラムにおいて、指定さ
れたイベントlEvent1325が発生するとソケッ
トプログラムはメッセージwMsg1330を圧縮/暗
号モジュールのウインドウプログラム1230が所有す
るメッセージキュー1231にキューする。ウインドウ
プログラム1230はGetMessageコマンド1
232を用いてメッセージキュー1231からメッセー
ジwMsg1330を取り出しその中にある発生イベン
トlEvent1325を検出してlEventに対応
した圧縮/暗号処理1225を行う。次にウインドウプ
ログラム1230はPostMessageコマンド1
234を用いてメッセージwMsg1330をアプリケ
ーションプログラム1100のウインドウプログラム1
130が所有するメッセージキュー1131にキューす
る。ウインドウプログラム1130はGetMessa
geコマンド1132を用いてメッセージキュー113
1からメッセージwMsg1330を取り出しその中に
ある発生イベントlEvent1325を検出してlE
vent対応処理1125を行う。
【0036】図7は二つのパーソナルコンピュータの圧
縮/暗号モジュール間でやりとりされるデータフレーム
100のフォーマットを示したものである。コマンド1
10はフレームの種別を示す。フレームの種別にはネゴ
シエーション要求パケット200、ネゴシエーション応
答パケット300、データパケット400、ゲートウェ
イ要求パケット450、ゲートウェイ応答パケット46
0がある。長さ120はデータ130の長さをバイト単
位で示す。
【0037】ネゴシエーション要求パケット200のデ
ータ部は圧縮アルゴリズムフィールド210と暗号アル
ゴリズムフィールド220の二つから構成される。各フ
ィールドのフォーマットを230に示す。方向識別子2
31は2ビットでアルゴリズムの適用方向を指定する。
表240にビットの意味を示す。00は圧縮または暗号
を行わないことを示す。01は本パケット送信側から受
信側に送るデータに対して圧縮または暗号を行うことを
示す。10は逆方向に送るデータに対して圧縮または暗
号を行うことを示す。11は双方向に圧縮または暗号を
行うことを示す。アルゴリズム種別232はネゴシエー
ション要求側が使用を希望する圧縮または暗号のアルゴ
リズム種別をコードで指定する。これらの設定はアプリ
ケーションプログラムの使用者があらかじめ圧縮/暗号
モジュールの構成定義テーブルに設定しておく。
【0038】ネゴシエーション応答パケット300のデ
ータ部は応答フィールド310と圧縮アルゴリズムフィ
ールド320と暗号アルゴリズムフィールド330から
構成される。応答フィールド310にはネゴシエーショ
ン要求に対する応答をセットする。表340に応答の内
容を示す。0X00が否定応答。0XFFが否定応答で
ある。ネゴシエーション要求を受け付けた側が要求パケ
ットで指定された内容に合意する場合は肯定応答、合意
しない場合は否定応答をセットする。肯定するかしない
かは受信側で指定された圧縮または暗号アルゴリズムを
処理する機能があるかないか、もしくは圧縮/暗号モジ
ュールの構成定義の設定に従う。
【0039】ゲートウェイ要求パケット450のデータ
部はネットワークアドレスフィールド451とポート番
号フィールド452とから構成される。
【0040】ゲートウェイ応答パケット460のデータ
部は応答フィールド461から構成される。応答フィー
ルドの内容は表340と同じである。
【0041】次に圧縮/暗号処理の内容をシーケンスチ
ャートにより説明する。
【0042】図8はアプリケーションプログラムのデー
タを一回の送信で送る場合の例である。アプリケーショ
ンプログラム1100は長さnバイトのデータ500を
sendコマンド6111を用いて送信する。圧縮/暗
号モジュール1200はsendコマンドをフックし、
圧縮/暗号処理6210がデータを圧縮/暗号化し、ヘ
ッダ501を付加して長さmバイトのフレーム502を
作成し、sendコマンド6211を用いてソケットプ
ログラム1300へ送信する。ソケットプログラムから
mバイト送信のリターン6212が戻ってきたら、圧縮
/暗号モジュールはアプリケーションプログラムへnバ
イト送信のリターン6112を返す。
【0043】図9はアプリケーションプログラムのデー
タを圧縮/暗号モジュールが二回以上に分けて送信する
例である。アプリケーションプログラム1100は長さ
nバイトのデータ510をsendコマンド6121を
用いて送信する。圧縮/暗号モジュール1200はre
cvコマンドをフックし、圧縮/暗号処理6220がデ
ータを圧縮/暗号化する。このとき圧縮/暗号化した結
果にヘッダを付加した長さがフレーム長の上限値、例え
ばmバイトを超える場合は、mバイトとなるように圧縮
/暗号化を行いフレーム511を作成し、sendコマ
ンド6221を用いてソケットプログラム1300へ送
信する。
【0044】ソケットプログラムからmバイト送信のリ
ターン6222が戻ってきたら、圧縮/暗号モジュール
は判定処理6223によりアプリケーションプログラム
からのデータを全て送信済みかどうかを調べ、送信済み
であれば、アプリケーションプログラムへnバイト送信
のリターン6122を返す。送信済みでなければ、次の
フレーム512を作成するために、圧縮/暗号化処理6
220へジャンプする。
【0045】図10はフレームの分割送信の具体例を示
したものである。本図はアプリケーションプログラム1
100のデータをアプリケーションプログラムの動作と
圧縮/暗号モジュール1200の動作とを同期させずに
送信する場合を示している。また圧縮/暗号モジュール
は内部にバックグラウンド送信中を示すフラグを管理す
る。バックグラウンド送信とは圧縮/暗号モジュールが
アプリケーションプログラムから受け取ったデータを全
て送信し終わらない状態でアプリケーションプログラム
に対して送信終了のリターンを返し、その後で圧縮/暗
号モジュールが残りのデータの送信を行うことを言う。
【0046】以下順を追って説明する。コネクションの
設定が終了するとソケットプログラム1300から送信
可能を示すFD_WRITEメッセージ6230が圧縮
/暗号モジュールに渡される。次に圧縮/暗号モジュー
ルは判定処理6231により、バックグラウンド送信中
かどうかを調べる。最初はバックグラウンド送信中では
ないので、PostMessageコマンド6238で
アプリケーションプログラムにFD_WRITEメッセ
ージ6130を送り送信可能であることを通知し、EX
IT処理6239を実行する。
【0047】FD_WRITEメッセージを受け取った
アプリケーションプログラムはsendコマンド613
1を用いてデータ600を送信する。圧縮/暗号モジュ
ールはsendコマンドをフックし、判定処理6240
によりバックグラウンド送信中かどうか判定する。まだ
バックグラウンド送信中ではないので、フレーム圧縮/
暗号処理部6241はデータの601部分を圧縮/暗号
化し、ヘッダ605を付加してフレーム610を作成す
る。それをsendコマンド6242によりソケットプ
ログラムへ送る。ここでもしバックグラウンド送信中で
あれば、送信待機中のリターン6132をアプリケーシ
ョンプログラムへ返す。
【0048】sendコマンドはソケットプログラムが
データを1バイト以上送信すれば正常リターンを返し、
1バイトも送れなかった場合は送信待機中リターンを返
す。sendコマンド6242が終了すると判定処理6
243はリターンが正常終了かどうか調べ、正常終了で
あれば、判定処理6244によりフレーム610の全て
のデータが送信されたかどうかを調べる。フレームの一
部611のみが送られた場合はsendコマンド624
2を再び実行してフレームの残り612を送信する。
【0049】2度目のsendコマンド6242が終了
し、判定処理6244によりフレーム610全体の送信
が確認されると次に判定処理6245により、未圧縮/
暗号化データがあるかどうかを調べる。まだアプリケー
ションプログラムのデータ602が残っているのでフレ
ーム圧縮/暗号処理部6241はそれを圧縮/暗号化
し、ヘッダ606を付加してフレーム620を作成し、
sendコマンド6242により送信する。
【0050】次にバックグラウンド処理に入る場合の例
について説明する。3度目のsendコマンドが終了
し、判定処理6243により送信待機中であると判定さ
れた場合、処理6246でバックグラウンド送信中フラ
グをONにセットし、アプリケーションプログラムへは
フレーム620まで、すなわちデータ600全てが送れ
たとしてリターン6134を返す。ここから圧縮/暗号
モジュールはバックグラウンド処理に入りフレーム62
0の送信処理を行う。
【0051】バックグラウンドの処理に入ると圧縮/暗
号モジュールはソケットプログラムからの送信許可FD
_WRITEメッセージを待つ。FD_WRITEメッ
セージ6230が来ると圧縮/暗号モジュールは判定処
理6231がバックグラウンド送信中を判定し、sen
dコマンド6232でフレーム620を送信する。
【0052】sendコマンドが終了すると判定処理6
233がソケットプログラムが送信待機中かどうかを調
べ、送信待機中であればEXIT6234を実行し、次
にソケットプログラムからFD_WRITEメッセージ
が来るのを待つ。送信待機中でなければフレームが全て
送られたかどうかを判定処理6235で調べ、残ってい
ればもう一度sendコマンド6232で残りのデータ
を送る。フレームが全て送られていれば単にEXIT6
237を実行し、バックグラウンド送信処理は終了す
る。
【0053】図11はアプリケーションプログラムがフ
レームデータを一回の受信で受け取る場合の例である。
アプリケーションプログラム1100はrecvコマン
ド6160を用いてソケットプログラム1300に受信
要求を出す。圧縮/暗号モジュール1200はrecv
コマンド6160をフックし、代わりに自分でrecv
コマンド6260をソケットプログラム1300に発行
する。ソケットプログラムからrecvコマンドがリタ
ーンすると、判定処理6261によりフレーム630の
全体を受信したかどうかを調べ、全体を受信した場合は
復号/伸張処理6262を行い、データ640を作成
し、それをアプリケーションプログラムへリターン61
61で渡す。フレームの途中まで受信した場合は再びr
ecvコマンド6260をソケットプログラムに出す。
【0054】図12はフレームの分割受信の具体例を示
したものである。本図はネットワークからのデータ受信
をアプリケーションプログラム1100の動作と圧縮/
暗号モジュール1200の動作とを同期させずに行う場
合を示している。
【0055】以下順を追って説明する。コネクションの
設定が終了し他のパーソナルコンピュータからフレーム
650を受信すると、ソケットプログラム1300から
受信可能を示すFD_READメッセージ6270が圧
縮/暗号モジュールに渡される。圧縮/暗号モジュール
はrecvコマンド6271で該フレームを受信する。
recvコマンドがリターンすると判定処理6272に
よりフレームの受信が完了したかどうかを調べる。フレ
ーム650の一部651しか受信できなかった場合はE
XIT6273を実行し、次のFD_READメッセー
ジが来るのを待ち、来たら残りのフレームデータ652
を受信する。
【0056】フレームの受信が完了した場合はフレーム
の複合/伸張処理6274を行い、PostMessa
geコマンド6275を用いてFD_READメッセー
ジ6170をアプリケーションプログラムへ渡し、EX
ITする。同様に次のフレーム660が到着すると圧縮
/暗号モジュールはそれを複合/伸張しデータ672を
作成する。
【0057】FD_READメッセージを受け取ったア
プリケーションプログラム1100はrecvコマンド
6171をソケットプログラム1300へ発行する。圧
縮/暗号モジュールは該recvコマンドをフックし、
複合/伸張済みのデータ671及び672をリターン6
171でアプリケーションプログラムへ渡す。
【0058】本実施例では圧縮と暗号化の実行順序を特
に指定していないが、圧縮の効果を上げるために、暗号
化処理を行う前に圧縮処理を行うように構成することも
できる。
【0059】本実施例によればアプリケーションプログ
ラムが従来通りソケットプログラムに対してデータ送受
信のコマンドを発行するだけで、圧縮/暗号モジュール
がそれを判定して、データ圧縮または暗号化、またはそ
の両方を行うためアプリケーションプログラムに変更を
加えることなくパーソナルコンピュータ間でデータを高
速かつ安全に転送することができる。
【0060】さらに本実施例によれば圧縮/暗号化デー
タが伝送路上の障害あるいは混雑等で途中までしか送ら
れない場合でも、圧縮/暗号処理をフレーム単位で行
い、該フレームについては圧縮/暗号モジュールが最後
まで相手に送り届けることを保証するようにしたので、
圧縮/暗号用の変換テーブルが送信側と受信側とで不一
致が生じデータの圧縮/暗号が不可能になることがな
い。
【0061】(実施例2)図13はクライアントPCと
サーバPCとの間で圧縮/暗号化通信用のコネクション
を設定する方法を示したものである。クライアントPC
1000のアプリケーションプログラム1100がso
cketコマンド6180を発行すると圧縮/暗号モジ
ュール1200はそれフックし、socketコマンド
6280をソケットプログラム1300へ発行し、受け
取ったソケット番号をアプリケーションプログラムへ渡
す。
【0062】サーバPC2000のアプリケーションプ
ログラム2100が同じくsocketコマンド718
0を発行すると圧縮/暗号モジュール2200はそれフ
ックし、同じ内容のsocketコマンド7280をソ
ケットプログラム2300へ発行し、受け取ったソケッ
ト番号をアプリケーションプログラムへ渡す。
【0063】次にアプリケーションプログラム2100
はコネクション受付ポート番号21を指定したbind
コマンド7181を発行する。圧縮/暗号モジュール2
200はbindコマンドをフックし、テーブルポート
番号を21番とは異なる1045に変更してbindコ
マンド7281をソケットプログラム2300に発行す
る。これらの番号の対応関係は主要なサーバアプリケー
ションプログラムの種類についてあらかじめ決めてお
き、テーブル7286に格納しておく。
【0064】次にアプリケーションプログラム2100
はlistenコマンド7182を発行する。圧縮/暗
号モジュールはlistenコマンドをフックし同じ内
容のlistenコマンド7282をソケットプログラ
ムに渡す。
【0065】次にアプリケーションプログラム2100
はacceptコマンド7163を発行する。圧縮/暗
号モジュールはacceptコマンドをフックし同じ内
容のacceptコマンド7283をソケットプログラ
ムへ渡し、クライアントPCからのコネクション接続要
求を待つ。
【0066】クライアントPC1000のアプリケーシ
ョンプログラム1100は相手サーバPCのアドレスと
ポート番号21を指定してconnectコマンド61
81を発行してサーバPCへ接続要求を行う。圧縮/暗
号モジュール1200はconnectコマンド618
1をフックしポート番号を21番から1045番に変更
して、connectコマンド6281をソケットプロ
グラム1300に発行する。これらの番号の対応関係は
主要なサーバアプリケーションプログラムの種類につい
てあらかじめ決めておき、テーブル6284に格納して
おく。
【0067】ソケットプログラムから接続終了のリター
ンを受け取ると、圧縮/暗号モジュール1200はすぐ
にはアプリケーションプログラム1100にコネクショ
ン接続の完了を連絡せずに、ネゴシエーション要求パケ
ット200にクライアントPCが使用する圧縮及び暗号
のアルゴリズム種別を構成定義テーブル6285からセ
ットし、それをsendコマンド6282を用いてを送
信する。次のrecvコマンド6283によってサーバ
から肯定のネゴシエーション応答パケット300を受け
取った場合にのみ圧縮/暗号モジュールはアプリケーシ
ョンプログラムにコネクション成立のリターン6182
を返す。ネゴシエーション応答パケットを受けとらなか
ったり、受け取っても否定応答であった場合はコネクシ
ョン非成立のリターンをアプリケーションプログラムへ
返す。
【0068】ネゴシエーション要求パケット200に指
定する圧縮及び暗号のアルゴリズム種別はアプリケーシ
ョンプログラム1100の使用者がアプリケーションプ
ログラム毎に任意の値をあらかじめ構成定義テーブル6
285にセットしておくことができる。
【0069】サーバPC2000の圧縮/暗号モジュー
ル2200は、クライアントPCからコネクション接続
要求があるとそれを受付け、次にrecvコマンド72
84を発行しクライアントPCからのネゴシエーション
要求パケット200を受信する。受信したネゴシエーシ
ョン要求パケット200に指定されている圧縮及び暗号
のアルゴリズムが構成定義テーブル7287に格納され
ているものと同じであれば、肯定応答のネゴシエーショ
ン応答パケット300をsendコマンド7285でク
ライアントPCへ送り、アプリケーションプログラム2
100にコネクション受付完了のリターン7184を返
す。同じものでなければ、否定応答のネゴシエーション
応答パケットをクライアントへ送り、アプリケーション
プログラムにはコネクション受付完了リターンを返さな
い。
【0070】ネゴシエーション応答パケットに指定する
圧縮及び暗号のアルゴリズム種別はアプリケーションプ
ログラム2100の使用者がアプリケーションプログラ
ム毎に任意の値をあらかじめ構成定義テーブル7287
にセットしておくことができる。
【0071】本実施例においてサーバアプリケーション
プログラムに圧縮/暗号モジュールが実装されていない
場合、bindコマンド7181がそのままソケットプ
ログラム2300に渡される。この場合サーバPCがポ
ート番号21を指定しているにもかかわらず、クライア
ントPCのconnectコマンド6281が相手ポー
ト番号1045を指定してコネクション設定要求を行う
ため接続エラーとなる。この場合、以下の二つの方法を
とることができる。一つはconnectコマンド62
81のエラーをそのままアプリケーションプログラム1
100へ返す方法。もう一つは圧縮/暗号モジュール1
200がユーザにコネクションを設定するかどうかを問
い合わせるメッセージを表示し、それに対しアプリケー
ションプログラムの使用者が了解と応答した場合に、相
手ポート番号21を指定してconnectコマンド6
281を発行しサーバPCとコネクションを設定し、そ
のリターンをアプリケーションプログラム1100に返
し、従来の圧縮/暗号化を行わない通信を行う方法であ
る。
【0072】本実施例によればクライアントPC及びサ
ーバPCの圧縮/暗号モジュールはアプリケーションプ
ログラムが指定したポート番号と異なるポート番号を圧
縮/暗号通信に用いるので、クライアントPC及びサー
バPCの両方に本実施例で述べた圧縮/暗号機能を持つ
場合にのみ圧縮/暗号通信を行うようにもできるし、ま
たもし相手が暗号機能を持たない場合は、ユーザに判断
させて、圧縮/暗号化せずに通信を行うこともできる。
【0073】またサーバPCのオペレーティングシステ
ムがマルチタスク機能を持つ場合は、サーバPC内に圧
縮/暗号機能を持つプロセスと圧縮/暗号機能を持たな
いプロセスの二つを同時に動作させておくことにより、
従来の圧縮/暗号機能を持たないクライアントアプリケ
ーションプログラムは圧縮/暗号機能を持たないサーバ
アプリケーションプログラムと通信し、また圧縮/暗号
機能を持つクライアントアプリケーションプログラムは
圧縮/暗号機能を持つサーバアプリケーションプログラ
ムと通信することができる。
【0074】さらに、ネゴシエーションによりクライア
ントPCとサーバPCの両方で同じ圧縮及び暗号のアル
ゴリズムが用意されている場合にのみコネクションを設
定するようにしたので、受信側で復号/伸張できない圧
縮/暗号化データが送信されることがないので、安全性
が高い。
【0075】(実施例3)図14はゲートウェイ800
0を介してクライアントPC1000とサーバPC20
00が圧縮/暗号化通信する場合の構成を示したもので
ある。クライアントPC1000の圧縮/暗号モジュー
ル1200はアプリケーションプログラム1100から
受け取ったデータを圧縮/暗号化した後、ゲートウェイ
8000に宛ててパケットを送信する。ゲートウェイ8
000の圧縮/暗号モジュール8200は該パケットを
受信し、そのパケットをアプリケーションへ渡さないで
圧縮/暗号化されたままの形でサーバPC2000へ送
信する。サーバPC2000の圧縮/暗号モジュール2
200は該パケットを受信し、復号/伸張した後アプリ
ケーションプログラム2100へ渡す。
【0076】図15はクライアントPCとサーバPCと
の間でゲートウェイを介して圧縮/暗号化用のコネクシ
ョンを設定する方法を示したものである。
【0077】クライアントPC1000のアプリケーシ
ョンプログラム1100がsocketコマンド619
0を発行すると圧縮/暗号モジュール1200はそれフ
ックし、socketコマンド6290をソケットプロ
グラム1300へ発行し、受け取ったソケット番号をア
プリケーションプログラムへ渡す。
【0078】サーバPC2000のアプリケーションプ
ログラム2100が同じくsocketコマンド719
0を発行すると圧縮/暗号モジュール2200はそれフ
ックし、同じ内容のsocketコマンド7290をソ
ケットプログラム2300へ発行し、受け取ったソケッ
ト番号をアプリケーションプログラムへ渡す。次にアプ
リケーションプログラム2100はコネクション受付ポ
ート番号21を指定したbindコマンド7191を発
行する。圧縮/暗号モジュール2200はbindコマ
ンドをフックし、ポート番号を21番とは異なる104
5に変更してbindコマンド7291をソケットプロ
グラム2300に発行する。次にアプリケーションプロ
グラム2100はlistenコマンド7192を発行
する。圧縮/暗号モジュールはlistenコマンドを
フックし同じ内容のlistenコマンド7292をソ
ケットプログラムに渡す。次にアプリケーションプログ
ラム2100はacceptコマンド7193を発行す
る。圧縮/暗号モジュールはacceptコマンドをフ
ックし同じ内容のacceptコマンド7293をソケ
ットプログラムへ渡し、ゲートウェイからのコネクショ
ン接続要求を待つ。
【0079】ゲートウェイ8000の圧縮/暗号モジュ
ール8200はsocketコマンド8290をソケッ
トプログラム8300へ発行する。次にポート番号とし
てゲートウェイ内の特定のポート例えば8000番を指
定してbindコマンド8291をソケットプログラム
8300に発行する。次にlistenコマンド829
2をソケットプログラムに発行する。次に圧縮/暗号モ
ジュールはacceptコマンド8293をソケットプ
ログラムへ発行し、クライアントPCからのコネクショ
ン接続要求を待つ。
【0080】クライアントPC1000のアプリケーシ
ョンプログラム1100はサーバPCのアドレスとポー
ト番号21を指定してconnectコマンド6191
を発行してサーバPCへ接続要求を行う。圧縮/暗号モ
ジュール1200はconnectコマンド6191を
フックしポート番号を21番から1045番に変更す
る。そして、サーバPCのアドレス及びポート番号10
45番をゲートウェイ要求パケット450のデータ部に
セットする。そしてゲートウェイのアドレスとゲートウ
ェイのポート番号例えば8000番を指定して、con
nectコマンド6291をソケットプログラム130
0に発行する。
【0081】ソケットプログラム1300から接続終了
のリターンを受け取ると圧縮/暗号モジュール1200
はsendコマンド6292を用いてゲートウェイ要求
パケット450をゲートウェイへ送る。次のrecvコ
マンド6293によってゲートウェイからゲートウェイ
応答パケット460を受けとり、それが肯定応答であっ
た場合に、圧縮/暗号モジュール1200はsendコ
マンド6294を用いてネゴシエーション要求パケット
200を送る。次のrecvコマンド6295によって
サーバから肯定のネゴシエーション応答パケット300
を受け取ることによってネゴシエーションが成立した場
合に圧縮/暗号モジュールはアプリケーションプログラ
ムにコネクション成立のリターン6192を返す。ゲー
トウェイ応答パケットを受けとらなかったり、受け取っ
ても否定応答であった場合はコネクション非成立のリタ
ーンをアプリケーションプログラムに返す。またネゴシ
エーション応答パケットを受けとらなかったり、受け取
っても否定応答であった場合はコネクション非成立のリ
ターンをアプリケーションプログラムへ返す。
【0082】ゲートウェイ8000の圧縮/暗号モジュ
ール8200は、クライアントPCからコネクション接
続要求があるとそれを受付け、次にrecvコマンド8
294を発行しクライアントPCからのゲートウェイ要
求パケット450を受信する。次にsocketコマン
ド8390をソケットプログラム8300に発行し、新
たなソケット番号を確保し、ゲートウェイ要求パケット
450にセットされているサーバPCのアドレス及びポ
ート番号21を指定してconnectコマンド839
1を発行する。
【0083】ソケットプログラム8300から接続終了
のリターンを受け取ると圧縮/暗号モジュール8200
はsendコマンド8295を用いてゲートウェイ応答
パケット460をクライアントPCへ送る。次のrec
vコマンド8296によってクライアントPCからネゴ
シエーション要求パケット200を受けとると、それを
sendコマンド8392を用いてサーバPC2000
へ送る。次にrecvコマンド8393を用いてネゴシ
エーション応答コマンド300を受け取り、それをse
ndコマンド8297を用いてクライアントPC100
0へ送る。
【0084】サーバPC2000の圧縮/暗号モジュー
ル2200は、acceptコマンド7293のリター
ンとして、ゲートウェイからコネクション接続要求を受
け付けると、次にrecvコマンド7294を発行しゲ
ートウェイから転送されたネゴシエーション要求パケッ
ト200を受信する。受信したネゴシエーション要求が
合意できるものであれば、肯定応答のネゴシエーション
応答パケット300をsendコマンド7295でクラ
イアントPCへ送り、アプリケーションプログラム21
00にコネクション受付完了のリターン7194を返
す。合意できない場合は否定応答のネゴシエーション応
答パケットをゲートウェイへ送り、アプリケーションプ
ログラムにはリターンを返さない。
【0085】本実施例ではクライアントPCからゲート
ウェイへのコネクション設定要求に対し、無条件にゲー
トウェイとサーバPC間のコネクションを設定している
が、ゲートウェイ内にクライアントPCがアクセス可能
なサーバPCのリストを用意しておき、そのリストにあ
るサーバPCへの接続のみを行うようにしても良い。さ
らにゲートウェイ内にクライアントPCがアクセス可能
なサーバPCのポート番号のリストを用意しておき、そ
のリストにあるポートへの接続のみを行うようにしても
良い。
【0086】以上本実施例によれば、ゲートウェイを介
してクライアントPCとサーバPCとがデータを圧縮/
暗号化して通信する場合において、ゲートウェイ上にア
プリケーションの種類毎にゲートウェイ処理用の中継プ
ログラムを用意する必要が無い。さらに、ゲートウェイ
において受信したデータを一旦アプリケーションに渡
し、復号/伸張してから再度圧縮/暗号化して送信する
必要がないため、転送遅延を減らすことが可能となる。
【0087】なお本実施例では圧縮と暗号を供に行う例
を示したが、圧縮のみ、あるいは暗号化のみを行う場合
にも本実施例は同様にあてはまる。
【0088】また本実施例では圧縮/暗号のアルゴリズ
ムについては特に限定しない。
【0089】
【発明の効果】以上説明したように、本発明によれば、
複数のパーソナルコンピュータが通信回線を用いて互い
に接続されており、パーソナルコンピュータのアプリケ
ーションプログラム間でソケットプログラムを用いて通
信する場合において、アプリケーションプログラムのコ
ーディングを変更せずに送受信するデータを圧縮あるい
は暗号化または両方を行うことができ、データ通信の安
全性を向上することができる。
【0090】また圧縮/暗号処理に用いるアルゴリズム
はコネクション設定時のネゴシエーションにより通信す
るパーソナルコンピュータ間で利用できるものを選択す
ることが可能であるため、利用率を向上することができ
る。
【0091】圧縮/暗号をフレーム単位で行い、かつフ
レームごとに相手システムへの送達を保証するようにし
たので。転送データに基づいて圧縮/暗号の変換テーブ
ルを更新する場合においてもテーブルが送信側と受信側
とで同一性が保証されるため、安全性が高い。
【0092】また、転送途中にゲートウェイが存在する
場合においても、ゲートウェイにおけるデータの中継を
自動的に行うようにしたので、途中で圧縮/暗号化され
たデータを元に戻す必要が無いため転送の効率が高い。
【図面の簡単な説明】
【図1】本発明の第一の実施例の通信システム全体構成
を示すブロック図である。
【図2】従来のソケットプログラムによる通信の方法を
示す図である。
【図3】フック処理を行わない場合のアプリケーション
プログラムからのコール動作を示す図である。
【図4】フック処理を行った場合のアプリケーションプ
ログラムからのコール動作を示す図である。
【図5】フック処理を行わない場合のソケットプログラ
ムからのコール動作を示す図である。
【図6】フック処理を行った場合のソケットプログラム
からのコール動作を示す図である。
【図7】第一、第二、及び第三の実施例で用いるデータ
のフォーマットである。
【図8】第一の実施例におけるデータ送信の例(その
1)である。
【図9】第一の実施例におけるデータ送信の例(その
2)である。
【図10】第一の実施例におけるデータ分割送信の例で
ある。
【図11】第一の実施例におけるデータ受信の例であ
る。
【図12】第一の実施例におけるデータ分割受信の例で
ある。
【図13】第二の実施例におけるコネクション設定の例
である。
【図14】本発明の第三の実施例の通信システム全体構
成を示すブロック図である。
【図15】第三の実施例におけるコネクション設定の例
である。
【符号の説明】 10…LAN 1000、2000、3000、4000…パーソナル
コンピュータ 8000…ゲートウェイ 1100、2100…アプリケーションプログラム 1200、2200…圧縮/暗号モジュール 1300、2300…ソケットプログラム
───────────────────────────────────────────────────── フロントページの続き (72)発明者 近藤 毅 神奈川県川崎市麻生区王禅寺1099番地株 式会社日立製作所システム開発研究所内 (72)発明者 大津 豊 神奈川県横浜市戸塚区戸塚町5030番地株 式会社日立製作所ソフトウェア開発本部 内 (56)参考文献 特開 平5−266014(JP,A) 特開 昭59−89054(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 13/00 351 H03M 7/30 H04B 14/04 H04L 9/10

Claims (12)

    (57)【特許請求の範囲】
  1. 【請求項1】他のパーソナルコンピュータと通信回線を
    介して接続され、通信を行う手段を備えた、通信システ
    ムに用いるパーソナルコンピュータであって、 前記他のパーソナルコンピュータとの通信を制御する通
    信プログラムと、前記通信プログラムが提供するコマン
    ドを用いて他の前記パーソナルコンピュータとの間でデ
    ータ通信を行うアプリケーションプログラムを備え、 前記アプリケーションプログラムが発行した、データ通
    信に係わるコマンドをフックするフックプログラムを備
    え、 前記フックプログラムは、フックした前記コマンドを判
    定する手段と、 前記判定したコマンドが、データを伴ったデータ送信コ
    マンドである場合に、前記データ送信コマンドに付随す
    るデータを圧縮及び暗号化する手段と、当該圧縮及び暗
    号化したデータを伴うデータ送信コマンドを通信プログ
    ラムに渡す手段と、を備えることを特徴とする通信シス
    テムに用いるパーソナルコンピュータ。
  2. 【請求項2】請求項1において、前記圧縮及び暗号化す
    る手段は、 データを圧縮した後に暗号化を行うことを特徴とする通
    信システムに用いるパーソナルコンピュータ。
  3. 【請求項3】請求項1において、前記フックプログラム
    は、 フックした前記コマンドを判定する手段と、 通信プログラムから受信したデータを、伸長する手段
    と、 前記判定したコマンドが、データ受信コマンドである場
    合に、前記伸長したデータを伴う、前記データ受信コマ
    ンドへの応答を前記アプリケーションプログラムに渡す
    手段と、を備えることを特徴とする通信システムに用い
    るパーソナルコンピュータ。
  4. 【請求項4】請求項1において、前記フックプログラム
    は、 フックした前記コマンドを判定する手段と、 通信プログラムから受信したデータを、復号化する手段
    と、 前記判定したコマンドが、データ受信コマンドである場
    合に、前記復号化したデータを伴う、前記データ受信コ
    マンドへの応答を前記アプリケーションプログラムに渡
    す手段と、を備えることを特徴とする通信システムに用
    いるパーソナルコンピュータ。
  5. 【請求項5】他のパーソナルコンピュータと通信回線を
    介して接続され、通信を行う手段を備えた、通信システ
    ムに用いるパーソナルコンピュータであって、 前記他のパーソナルコンピュータとの通信を制御する通
    信プログラムと、前記通信プログラムが提供するコマン
    ドを用いて他の前記パーソナルコンピュータとの間でデ
    ータ通信を行うアプリケーションプログラムを備え、 前記アプリケーションプログラムが発行した、データ通
    信に係わるコマンドをフックするフックプログラムを備
    え、 前記フックプログラムは、フックした前記コマンドを判
    定する手段と、 通信プログラムから受信したデータを、復号化および伸
    長する手段と、 前記判定したコマンドが、データ受信コマンドである場
    合に、前記復号化および伸長したデータを伴う、前記デ
    ータ受信コマンドへの応答を前記アプリケーションプロ
    グラムに渡す手段と、を備えることを特徴とする通信シ
    ステムに用いるパーソナルコンピュータ。
  6. 【請求項6】請求項1または2において、前記圧縮及び
    暗号化する手段は、 データ送信コマンドに付随するデータを、圧縮および暗
    号化結果が所定長を超えないように分割して圧縮及び暗
    号化する手段と、 前記圧縮および暗号化結果を前記通信プログラムに送信
    する手段と、 前記通信プログラムから送信完了コマンドを受け取った
    場合に、送信コマンドに付随するデータが全て送信され
    たかどうかを判定する手段と、 送信が終了していない場合に、該フレームの送信完了を
    該フックしたコマンドへの応答として前記アプリケーシ
    ョンプログラムに返すとともに、当該フレームの未送信
    データの送信を行う手段と、を備えることを特徴する通
    信システムに用いるパーソナルコンピュータ。
  7. 【請求項7】請求項1に記載のパーソナルコンピュータ
    を用い、第一と第二のパーソナルコンピュータの間でコ
    ネクションを設定してからデータ送受信を開始する通信
    システムにおいて、 第一のパーソナルコンピュータのアプリケーションプロ
    グラムは、通信プログラムに第二のパーソナルコンピュ
    ータの接続端点値番号を指定してコネクション要求コマ
    ンドを出す手段を備え、 第二のパーソナルコンピュータのアプリケーションプロ
    グラムは、通信プログラムに自パーソナルコンピュータ
    の接続端点番号を指定してコネクション受け付けコマン
    ドを出す手段を備え、 第一のパーソナルコンピュータの前記フックプログラム
    は、 コネクション要求コマンドを判定する手段と、 該コマンドで指定された接続端点番号に一対一に対応し
    た異なる値の接続端点番号を指定して該コマンドを通信
    プログラムに渡す手段と、 第二のパーソナルコンピュータの前記フックプログラム
    は、 コネクション受付コマンドを判定する手段と、 該コマンドで指定された接続端点番号に一対一に対応し
    た異なる値の接続端点番号を指定して該コマンドを通信
    プログラムに渡す手段とを備えることを特徴とする通信
    システム。
  8. 【請求項8】請求項7の通信システムにおいて、第一の
    パーソナルコンピュータの前記フックプログラムと、第
    二のパーソナルコンピュータの前記フックプログラム
    は、 接続端点番号に一対一に対応して、異なる接続端点番号
    に変換するテーブルを備え、 前記コネクション要求コマンドあるいは前記コネクショ
    ン受け付けコマンド通信プログラムに渡す手段は、指定
    された接続端点番号を該テーブルを用いて変換して前記
    通信プログラムに渡すことを特徴とする通信システム。
  9. 【請求項9】請求項7の通信システムにおいて、 前記第一のパーソナルコンピュータのフックプログラム
    は、前記第一のパーソナルコンピュータのフックプログ
    ラムと前記第二のパーソナルコンピュータとのフックプ
    ログラムとの間でコネクションを設定した後、圧縮及び
    あるいは暗号で使用するアルゴリズムの種別を前記第二
    のパーソナルコンピュータのフックプログラムへ送信す
    る手段と、 前記第二のパーソナルコンピュータのフックプログラム
    は、前記第一のパーソナルコンピュータのフックプログ
    ラムから送られたアルゴリズムの種別と前記第二のパー
    ソナルコンピュータが使用するアルゴリズムの種別とが
    一致した場合に第一のパーソナルコンピュータのフック
    プログラムに肯定応答を返す手段と、 前記第一のパーソナルコンピュータのフックプログラム
    は肯定応答を受け取った場合にコネクション設定完了の
    リターンコードをアプリケーションに返す手段と、を備
    えることを特徴とする通信システム。
  10. 【請求項10】請求項9において、 通信を行ういずれか一方の前記パーソナルコンピュータ
    のみが、圧縮および暗号手段を備える場合に、圧縮/暗
    号を行わない通信を行う手段を備えることを特徴とする
    通信システム。
  11. 【請求項11】請求項9において、 通信相手のパーソナルコンピュータが、圧縮および暗号
    手段を持たない場合に、アプリケーションプログラムの
    使用者に通信を開始するかどうかの確認を求める手段を
    備えることを特徴とする通信システム。
  12. 【請求項12】請求項1に記載のパーソナルコンピュー
    タを用い、第一と第二のパーソナルコンピュータの間で
    コネクションを設定してからデータ送受信を開始する通
    信システムにおいて、さらに、 前記第一のパーソナルコンピュータと前記第二のパーソ
    ナルコンピュータとの通信回線上に、フックプログラム
    を備えたゲートウェイを備え、 前記第一のパーソナルコンピュータのフックプログラム
    と前記ゲートウェイのフックプログラムは、当該第一の
    パーソナルコンピュータと当該ゲートウェイ間にコネク
    ションを設定する手段を備え、 前記第一のパーソナルコンピュータのフックプログラム
    は、前記コネクション設定後、前記ゲートウェイのフッ
    クプログラムに前記第二のパーソナルコンピュータのア
    ドレスと接続端点の情報を送る手段を備え、 前記ゲートウェイのフックプログラムは受信した当該情
    報をもとに、前記第二のパーソナルコンピュータと間に
    コネクションを設定する手段を備え、 前記二つのコネクションを用いて、前記第一のパーソナ
    ルコンピュータと前記第二のパーソナルコンピュータと
    が通信することを特徴とする通信システム。
JP30550395A 1995-11-24 1995-11-24 パーソナルコンピュータおよびそれを用いた通信システム Expired - Lifetime JP3196618B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP30550395A JP3196618B2 (ja) 1995-11-24 1995-11-24 パーソナルコンピュータおよびそれを用いた通信システム
US08/755,594 US5854841A (en) 1995-11-24 1996-11-25 Communication system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP30550395A JP3196618B2 (ja) 1995-11-24 1995-11-24 パーソナルコンピュータおよびそれを用いた通信システム

Publications (2)

Publication Number Publication Date
JPH09148993A JPH09148993A (ja) 1997-06-06
JP3196618B2 true JP3196618B2 (ja) 2001-08-06

Family

ID=17945945

Family Applications (1)

Application Number Title Priority Date Filing Date
JP30550395A Expired - Lifetime JP3196618B2 (ja) 1995-11-24 1995-11-24 パーソナルコンピュータおよびそれを用いた通信システム

Country Status (2)

Country Link
US (1) US5854841A (ja)
JP (1) JP3196618B2 (ja)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3516591B2 (ja) * 1997-09-12 2004-04-05 日立ソフトウエアエンジニアリング株式会社 データの保存方法およびシステム並びにデータ保存処理用記録媒体
FI113119B (fi) 1997-09-15 2004-02-27 Nokia Corp Menetelmä tietoliikenneverkkojen lähetysten turvaamiseksi
US6681327B1 (en) * 1998-04-02 2004-01-20 Intel Corporation Method and system for managing secure client-server transactions
DE19819292A1 (de) * 1998-04-30 1999-11-04 Alcatel Sa Verfahren zum Transfer eines Datensatzes sowie Rechnerknoten und Kommunikations-Applikationen
US7096358B2 (en) * 1998-05-07 2006-08-22 Maz Technologies, Inc. Encrypting file system
US7209949B2 (en) 1998-05-29 2007-04-24 Research In Motion Limited System and method for synchronizing information between a host system and a mobile data communication device
US6219694B1 (en) * 1998-05-29 2001-04-17 Research In Motion Limited System and method for pushing information from a host system to a mobile data communication device having a shared electronic address
US6519636B2 (en) * 1998-10-28 2003-02-11 International Business Machines Corporation Efficient classification, manipulation, and control of network transmissions by associating network flows with rule based functions
CA2347011A1 (en) * 1998-10-28 2000-05-04 Ellwood Mcgrogan Apparatus and methods for cryptographic synchronization in packet based communications
US6542734B1 (en) * 2000-03-30 2003-04-01 Qualcomm Incorporated Method and apparatus for detecting specified events in a mobile station
DE10025271A1 (de) * 2000-05-22 2001-11-29 Siemens Ag Verfahren zum Aufbau einer Verbindung zwischen einem Endgerät und einem bedienenden Mobilfunknetz, Mobilfunknetz und Endgerät dafür
US7131137B1 (en) * 2000-06-29 2006-10-31 Intel Corporation Communication system including a security system
JP2002215480A (ja) * 2001-01-15 2002-08-02 Sony Corp マルチプロセッサ・システム及びマルチプロセッサ・システムにおけるデータ通信制御方法
US20020161998A1 (en) * 2001-04-27 2002-10-31 International Business Machines Corporation Method and system for providing hardware cryptography functionality to a data processing system lacking cryptography hardware
JP4734774B2 (ja) * 2001-06-14 2011-07-27 ソニー株式会社 暗号・復号処理方法
US6922727B2 (en) * 2001-06-26 2005-07-26 International Business Machines Corporation Method and system for managing parallel data transfer through multiple sockets to provide scalability to a computer network
US20030115363A1 (en) * 2001-12-06 2003-06-19 Yared Peter A. Method and apparatus for packaging a trimmed object graph
US6988182B2 (en) * 2002-02-13 2006-01-17 Power Measurement Ltd. Method for upgrading firmware in an electronic device
US20080261633A1 (en) 2002-10-22 2008-10-23 Research In Motion Limited System and Method for Pushing Information from a Host System to a Mobile Data Communication Device
US8140694B2 (en) * 2004-03-15 2012-03-20 Hewlett-Packard Development Company, L.P. Method and apparatus for effecting secure communications
US20060050717A1 (en) * 2004-09-09 2006-03-09 International Business Machines Corporation Reducing delays associated with port binding
JP4545050B2 (ja) * 2005-06-15 2010-09-15 シャープ株式会社 画像送信システム及び画像送信装置
US8386768B2 (en) * 2006-02-08 2013-02-26 Safenet, Inc. High performance data encryption server and method for transparently encrypting/decrypting data
JP4948949B2 (ja) * 2006-09-19 2012-06-06 株式会社リコー 遠隔管理システム、管理装置、及び、送受信制御プログラム
JP4934471B2 (ja) * 2007-03-28 2012-05-16 キヤノン株式会社 データ通信システム
US7809820B2 (en) * 2007-07-17 2010-10-05 Microsoft Corporation Optimizing encrypted wide area network traffic
US8572370B1 (en) * 2007-12-21 2013-10-29 Parallels IP Holdings GmbH Accessing a remote virtual environment without user authentication
US9304832B2 (en) * 2008-01-09 2016-04-05 Blue Coat Systems, Inc. Methods and systems for filtering encrypted traffic
MX2011000145A (es) * 2008-06-30 2011-09-06 Able Planet Inc Metodo y sistema para mejorar auditiva y conservacion auditiva.
JP2011035800A (ja) * 2009-08-05 2011-02-17 National Institute Of Information & Communication Technology 電子価格提示システム、電子価格提示装置、及び電子価格提示方法
US9229750B1 (en) 2012-08-17 2016-01-05 Google Inc. Virtual machine networking
JP6480908B2 (ja) * 2013-03-15 2019-03-13 オラクル・インターナショナル・コーポレイション アプリケーション間におけるコンピュータ間の保護された通信
US9344422B2 (en) 2013-03-15 2016-05-17 Oracle International Corporation Method to modify android application life cycle to control its execution in a containerized workspace environment
CN106663018B (zh) 2014-09-24 2020-09-15 甲骨文国际公司 修改移动设备应用生命周期的系统、方法、介质和设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5479512A (en) * 1991-06-07 1995-12-26 Security Dynamics Technologies, Inc. Method and apparatus for performing concryption

Also Published As

Publication number Publication date
JPH09148993A (ja) 1997-06-06
US5854841A (en) 1998-12-29

Similar Documents

Publication Publication Date Title
JP3196618B2 (ja) パーソナルコンピュータおよびそれを用いた通信システム
EP1097553B1 (en) Method of transmitting information data from a sender to a receiver via a transcoder
US7292588B2 (en) Wireless network computing
US5826027A (en) Method for supporting an extensible and dynamically bindable protocol stack in a distrubited process system
JPH09270788A (ja) セキュア・ネットワーク・プロトコル・システム及び方法
US7089311B2 (en) Methods, systems and computer program products for resuming SNA application-client communications after loss of an IP network connection
GB2337671A (en) Security mechanisms in a web server
WO2024032660A1 (zh) 账户数据的更改方法、装置、计算机设备和存储介质
US7162631B2 (en) Method and system for scripting commands and data for use by a personal security device
US6205417B1 (en) Server and terminal emulator for persistent connection to a legacy host system with direct As/400 host interface
CN115280725A (zh) 一种数据帧安全传输方法、装置、电子设备及存储介质
JP4313091B2 (ja) 情報処理システム
WO1996041270A1 (en) Communication device sharing on a local area network
CN107770219A (zh) 一种视窗窗口的共享方法、网关服务器和系统
US5727148A (en) Message control method and system
CN111770099B (zh) 数据传输的方法和装置、电子设备、计算机可读介质
CN114070606B (en) Network security terminal device based on domestic operating system and working method
WO2023078444A1 (zh) 一种公有云系统及其相关方法
CN115426335B (zh) 一种信息交互方法、装置、设备及系统
US11570257B1 (en) Communication protocol, and a method thereof for accelerating artificial intelligence processing tasks
KR101001035B1 (ko) 터미널 환경의 서버 기반 컴퓨팅 시스템에서 다수의 사용자가 동일 ip접속으로 동일 응용 프로그램 실행시 충돌 오류를 방지하기 위한 가상 ip의 동적 할당 방법 및이를 위한 터미널 서버 장치
WO2004066585A1 (en) Secure terminal data transmission system and method
CN116320074A (zh) 基于tcp协议的访问方法、装置及电子设备
JPS62186634A (ja) 端末プロトコル変換システムによるホスト−端末通信方式
CN110035077A (zh) 一种加密上网卡通信方法

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080608

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080608

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090608

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100608

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100608

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110608

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110608

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120608

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120608

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130608

Year of fee payment: 12

EXPY Cancellation because of completion of term