JPH09148993A - 通信システム - Google Patents

通信システム

Info

Publication number
JPH09148993A
JPH09148993A JP7305503A JP30550395A JPH09148993A JP H09148993 A JPH09148993 A JP H09148993A JP 7305503 A JP7305503 A JP 7305503A JP 30550395 A JP30550395 A JP 30550395A JP H09148993 A JPH09148993 A JP H09148993A
Authority
JP
Japan
Prior art keywords
program
command
data
communication
personal computer
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.)
Granted
Application number
JP7305503A
Other languages
English (en)
Other versions
JP3196618B2 (ja
Inventor
Yukio Nakada
幸男 中田
Susumu Matsui
進 松井
Yasuhiro Takahashi
泰弘 高橋
Takeshi Kondo
毅 近藤
Yutaka Otsu
豊 大津
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)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Transmission Systems Not Characterized By The Medium Used For Transmission (AREA)

Abstract

(57)【要約】 【課題】アプリケーションプログラムに変更を加えずに
アプリケーションプログラム間でデータを圧縮/暗号化
して通信する。 【解決手段】複数のパーソナルコンピュータが通信回線
を用いて互いに接続されており、パーソナルコンピュー
タには通信プログラムとアプリケーションプログラムが
あり、アプリケーションプログラムは通信プログラムが
提供するコマンドを用いて他のパーソナルコンピュータ
との間でデータの送受信を行う通信システムにおいて、
アプリケーションプログラムが発行したデータ通信に係
わるコマンドを判定するフックプログラムを用意し、該
フックプログラムが該コマンドの種別に応じてアプリケ
ーションプログラムのデータを圧縮あるいは暗号化した
後、該コマンドを通信プログラムに渡す。

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番地株式 会社日立製作所ソフトウェア開発本部内

Claims (15)

    【特許請求の範囲】
  1. 【請求項1】複数のパーソナルコンピュータを通信回線
    を介して互いに接続し、前記パーソナルコンピュータに
    は通信プログラムとアプリケーションプログラムを備
    え、前記アプリケーションプログラムは前記通信プログ
    ラムが提供するコマンドを用いて他の前記パーソナルコ
    ンピュータとの間でデータの送受信を行う通信システム
    において、 前記アプリケーションプログラムが発行したデータ通信
    に係わるコマンドを判定するフックプログラムを備え、
    当該フックプログラムが前記コマンドの種別に応じて前
    記アプリケーションプログラムのデータを圧縮あるいは
    暗号化した後、当該コマンドを前記通信プログラムに渡
    すことを特徴とする通信システム。
  2. 【請求項2】請求項1において、データ送信コマンドを
    判定するフックプログラムを備え、当該フックプログラ
    ムが前記データ送信コマンドに付随するデータを圧縮し
    た後、当該データ送信コマンドを前記通信プログラムに
    渡すことを特徴とする通信システム。
  3. 【請求項3】請求項1において、データ送信コマンドを
    判定するフックプログラムを備え、当該フックプログラ
    ムが前記データ送信コマンドに付随するデータを暗号化
    した後、当該データ送信コマンドを通信プログラムに渡
    すことを特徴とする通信システム。
  4. 【請求項4】請求項1において、データ送信コマンドを
    判定するフックプログラムを備え、当該フックプログラ
    ムが前記データ送信コマンドに付随するデータを圧縮及
    び暗号化した後、当該データ送信コマンドを通信プログ
    ラムに渡すことを特徴とする通信システム。
  5. 【請求項5】請求項4において、データを圧縮してから
    暗号化を行うことを特徴とする通信システム。
  6. 【請求項6】請求項1において、データ受信コマンドを
    判定するフックプログラムを備え、当該フックプログラ
    ムが前記通信プログラムからデータを受信し、伸張した
    後、それを該データ受信コマンドの応答に付してアプリ
    ケーションプログラムに返すことを特徴とする通信シス
    テム。
  7. 【請求項7】請求項1において、データ受信コマンドを
    判定するフックプログラムを備え、当該フックプログラ
    ムが前記通信プログラムからデータを受信し、復号した
    後、当該複合化したデータを前記データ受信コマンドの
    応答に付してアプリケーションプログラムに返すことを
    特徴とする通信システム。
  8. 【請求項8】請求項1において、データ受信コマンドを
    判定するフックプログラムを備え、当該フックプログラ
    ムが前記通信プログラムからデータを受信し、復号及び
    伸張した後、当該複合及び伸張したデータを前記データ
    受信コマンドの応答に付してアプリケーションプログラ
    ムに返すことを特徴とする通信システム。
  9. 【請求項9】請求項2又は請求項3又は請求項4又は請
    求項5において、フックプログラムはデータ送信コマン
    ドに付随するデータをある決まった長さのフレーム単位
    に圧縮及び暗号化して送信し、フレームの送信が途中で
    中断した場合に、該フレームの送信完了を該データ送信
    コマンドの応答として返し、未送信のフレームの送信を
    引き続き行うことを特徴とする通信システム。
  10. 【請求項10】請求項1において、第一のパーソナルコ
    ンピュータのアプリケーションプログラムは、通信プロ
    グラムに第二のパーソナルコンピュータの接続端点値番
    号を指定してコネクション要求コマンドを出し、第二の
    パーソナルコンピュータのアプリケーションプログラム
    は、通信プログラムに自パーソナルコンピュータの接続
    端点番号を指定してコネクション受け付けコマンドを出
    し、第一と第二のパーソナルコンピュータの間でコネク
    ションを設定してからデータ送受信を開始する通信シス
    テムにおいて、第一のパーソナルコンピュータにはコネ
    クション要求コマンドを判定するフックプログラムを用
    意し、該フックプログラムは該コマンドで指定された接
    続端点番号に一対一に対応した異なる値の接続端点番号
    を指定して該コマンドを通信プログラムに渡し、第二の
    パーソナルコンピュータにはコネクション受付コマンド
    を判定するフックプログラムを用意し、該フックプログ
    ラムは該コマンドで指定された接続端点番号に一対一に
    対応した異なる値の接続端点番号を指定して該コマンド
    を通信プログラムに渡すことを特徴とする通信システ
    ム。
  11. 【請求項11】請求項10の通信システムにおいて、接
    続端点番号に一対一に対応して、それとは異なる値を格
    納するテーブルを用意し、テーブルの値をアプリケーシ
    ョンプログラムの使用者が設定できるようにし、コネク
    ション要求コマンドあるいはコネクション受け付けコマ
    ンドで指定された接続端点番号に対応する値を該テーブ
    ルから引用して用いることを特徴とする通信システム。
  12. 【請求項12】請求項10の通信システムにおいて、第
    一のパーソナルコンピュータのフックプログラムと第二
    のパーソナルコンピュータとのフックプログラムとの間
    でコネクションを設定した後、第一のパーソナルコンピ
    ュータのフックプログラムは圧縮及びあるいは暗号で使
    用するアルゴリズムの種別を第二のパーソナルコンピュ
    ータのフックプログラムへ送信し、該フックプログラム
    は第一のパーソナルコンピュータのフックプログラムか
    ら送られたアルゴリズムの種別と第二のパーソナルコン
    ピュータが使用するアルゴリズムの種別とが一致した場
    合に第一のパーソナルコンピュータのフックプログラム
    に肯定応答を返し、第一のパーソナルコンピュータのフ
    ックプログラムは肯定応答を受け取った場合にコネクシ
    ョン設定完了のリターンコードをアプリケーションに返
    すことを特徴とする通信システム。
  13. 【請求項13】請求項12において通信を行う一方のパ
    ーソナルコンピュータにおいてのみ圧縮/暗号プログラ
    ムが実装されている場合に、圧縮/暗号を行わない通信
    を行うことを特徴とする通信システム。
  14. 【請求項14】請求項12において通信相手のパーソナ
    ルコンピュータが圧縮/暗号機能を持っていない場合に
    アプリケーションプログラムの使用者に通信を開始する
    かどうかの確認を求めることを特徴とする通信システ
    ム。
  15. 【請求項15】請求項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 true JPH09148993A (ja) 1997-06-06
JP3196618B2 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)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001027964A (ja) * 1997-09-12 2001-01-30 Hitachi Software Eng Co Ltd データの保存方法およびシステム並びにデータ保存処理用記録媒体
JP2002215480A (ja) * 2001-01-15 2002-08-02 Sony Corp マルチプロセッサ・システム及びマルチプロセッサ・システムにおけるデータ通信制御方法
JP2002374245A (ja) * 2001-06-14 2002-12-26 Sony Corp 暗号・復号処理方法
JP2003529865A (ja) * 2000-03-30 2003-10-07 クゥアルコム・インコーポレイテッド 移動局における指定された事象を検出するための方法および装置
JP2003534744A (ja) * 2000-05-22 2003-11-18 シーメンス アクチエンゲゼルシヤフト 端末機とサービス移動無線ネットワークとの間の接続を行う方法、ならびに、そのための移動無線ネットワーク及び端末機
JP2006352483A (ja) * 2005-06-15 2006-12-28 Sharp Corp 画像送信システム、画像送信装置、及び画像処理装置
JP2008078715A (ja) * 2006-09-19 2008-04-03 Ricoh Co Ltd 遠隔管理システム、管理装置、及び、送受信制御プログラム
JP2008245039A (ja) * 2007-03-28 2008-10-09 Canon Inc データ通信システム
JP2010534042A (ja) * 2007-07-17 2010-10-28 マイクロソフト コーポレーション 暗号化広域ネットワークトラフィック最適化方法
WO2011016450A1 (ja) * 2009-08-05 2011-02-10 独立行政法人情報通信研究機構 電子価格提示システム、電子価格提示装置、及び電子価格提示方法
JP2016512374A (ja) * 2013-03-15 2016-04-25 オラクル・インターナショナル・コーポレイション コンピュータアプリケーションのオブジェクトコードを変更することによるコンピュータアプリケーションのためのセキュリティサービス管理
US10057293B2 (en) 2013-03-15 2018-08-21 Oracle International Corporation Method to modify android application life cycle to control its execution in a containerized workspace environment
US10225287B2 (en) 2014-09-24 2019-03-05 Oracle International Corporation Method to modify android application life cycle to control its execution in a containerized workspace environment

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
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
AU1517600A (en) * 1998-10-28 2000-05-15 L-3 Communications Corporation Encryption and authentication methods and apparatus for securing telephone communications
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
US7131137B1 (en) * 2000-06-29 2006-10-31 Intel Corporation Communication system including a security system
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
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
US8386768B2 (en) * 2006-02-08 2013-02-26 Safenet, Inc. High performance data encryption server and method for transparently encrypting/decrypting data
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
NZ590307A (en) * 2008-06-30 2013-04-26 Able Planet Inc Hearing conservation and auditory enhancement by amplifying a sound signal and producing an increased perceptual bandwidth without using a feedback loop
US9229750B1 (en) 2012-08-17 2016-01-05 Google Inc. Virtual machine networking

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

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001027964A (ja) * 1997-09-12 2001-01-30 Hitachi Software Eng Co Ltd データの保存方法およびシステム並びにデータ保存処理用記録媒体
JP2011176858A (ja) * 2000-03-30 2011-09-08 Qualcomm Inc 移動局における指定された事象を検出するための方法および装置
JP2003529865A (ja) * 2000-03-30 2003-10-07 クゥアルコム・インコーポレイテッド 移動局における指定された事象を検出するための方法および装置
JP2003534744A (ja) * 2000-05-22 2003-11-18 シーメンス アクチエンゲゼルシヤフト 端末機とサービス移動無線ネットワークとの間の接続を行う方法、ならびに、そのための移動無線ネットワーク及び端末機
JP2002215480A (ja) * 2001-01-15 2002-08-02 Sony Corp マルチプロセッサ・システム及びマルチプロセッサ・システムにおけるデータ通信制御方法
JP2002374245A (ja) * 2001-06-14 2002-12-26 Sony Corp 暗号・復号処理方法
JP2006352483A (ja) * 2005-06-15 2006-12-28 Sharp Corp 画像送信システム、画像送信装置、及び画像処理装置
JP2008078715A (ja) * 2006-09-19 2008-04-03 Ricoh Co Ltd 遠隔管理システム、管理装置、及び、送受信制御プログラム
JP2008245039A (ja) * 2007-03-28 2008-10-09 Canon Inc データ通信システム
JP2010534042A (ja) * 2007-07-17 2010-10-28 マイクロソフト コーポレーション 暗号化広域ネットワークトラフィック最適化方法
JP2011035800A (ja) * 2009-08-05 2011-02-17 National Institute Of Information & Communication Technology 電子価格提示システム、電子価格提示装置、及び電子価格提示方法
WO2011016450A1 (ja) * 2009-08-05 2011-02-10 独立行政法人情報通信研究機構 電子価格提示システム、電子価格提示装置、及び電子価格提示方法
JP2016512374A (ja) * 2013-03-15 2016-04-25 オラクル・インターナショナル・コーポレイション コンピュータアプリケーションのオブジェクトコードを変更することによるコンピュータアプリケーションのためのセキュリティサービス管理
JP2016513945A (ja) * 2013-03-15 2016-05-16 オラクル・インターナショナル・コーポレイション コンピュータ上におけるアプリケーション間の信頼性の確立
JP2016514912A (ja) * 2013-03-15 2016-05-23 オラクル・インターナショナル・コーポレイション アプリケーション間におけるコンピュータ間の保護された通信
US10057293B2 (en) 2013-03-15 2018-08-21 Oracle International Corporation Method to modify android application life cycle to control its execution in a containerized workspace environment
US10225287B2 (en) 2014-09-24 2019-03-05 Oracle International Corporation Method to modify android application life cycle to control its execution in a containerized workspace environment

Also Published As

Publication number Publication date
JP3196618B2 (ja) 2001-08-06
US5854841A (en) 1998-12-29

Similar Documents

Publication Publication Date Title
JP3196618B2 (ja) パーソナルコンピュータおよびそれを用いた通信システム
EP1678885B1 (en) Encapsulating protocol for session persistence and reliability
US7260599B2 (en) Supporting the exchange of data by distributed applications
EP1501256B1 (en) System and method for automatic negotiation of a security protocol
JP4245838B2 (ja) セキュアクライアントサーバトランザクションを管理するための方法及びシステム
US6363478B1 (en) Security mechanisms in a web server
Meyer The PPP encryption control protocol (ECP)
US20030167223A1 (en) System with methodology for improved transmission of financial information
EP1832971B1 (en) System and method for transmitting documents over network
US7089311B2 (en) Methods, systems and computer program products for resuming SNA application-client communications after loss of an IP network connection
WO2000003525A1 (en) Method of transmitting information data from a sender to a receiver via a transcoder
CN106789952B (zh) 一种局域网服务互联网化的方法和系统
WO2021073155A1 (zh) 视频会议方法、装置、设备及存储介质
US6401123B1 (en) Systems, methods and computer program products for employing presumptive negotiation in a data communications protocol
US6470390B1 (en) Method and apparatus for a dual connection communication session
CN111092888B (zh) 数据同时互通方法、装置、设备及存储介质
CN109474608B (zh) 一种多平台通讯方法及系统
CN110602225A (zh) 一种适用于工控环境的linux系统高效收发包方法
WO2007030174A2 (en) System and method for non-obtrusive monitoring and control of remote services and control gateways
CN111770099B (zh) 数据传输的方法和装置、电子设备、计算机可读介质
JPH1132088A (ja) ネットワークシステム
CN114070606B (en) Network security terminal device based on domestic operating system and working method
JPH0522282A (ja) エンドシステム間の通信デ−タ暗号方式
CN112583934B (zh) 数据通信方法、设备及计算机可读存储介质
Jungmaier et al. RFC3436: Transport Layer Security over Stream Control Transmission Protocol

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