(57)【特許請求の範囲】
【請求項１】
不特定多数の他のコンピュータとの間のデータ送受信を制御するデータ通信システムであって、特定の付加機能が実装されたデータ通信システムにおいて、
前記他のコンピュータ側の前記特定付加機能の実装有無を確認するために用いられる機能確認用ポートをデータの送受信に用いられるデータ送受信用ポートと対にして設け、
前記機能確認用ポートを用いて前記他のコンピュータへの接続を試み、当該機能確認用ポートによる接続可否に基づき、前記特定付加機能の実装有無を判定する判定手段と、
前記判定手段により前記特定付加機能の実装有りと判定された場合、前記特定付加機能を用いたデータ送受信を実行し、前記判定手段により前記特定付加機能の実装無しと判定された場合、前記特定付加機能を用いないデータ送受信を実行する通信制御手段と、
を具備することを特徴とするデータ通信システム。
【請求項２】
不特定多数の他のコンピュータとの間のデータ送受信を制御するデータ通信システムであって、特定の付加機能が実装されたデータ通信システムにおいて、
前記他のコンピュータ側からの前記特定付加機能の実装有無の問い合わせを受け付けるために用いられる機能確認用ポートをデータの送受信に用いられるデータ送受信用ポートと対にして設け、
前記機能確認用ポートを用いて前記他のコンピュータ側から前記特定付加機能の実装有無の問い合わせがあったときに、前記他のコンピュータ側に対して肯定応答を返送する返送手段と、
前記機能確認用ポートを用いた問い合わせを経た後に前記データ送受信用ポートへの接続が要求されたときに、前記特定付加機能を用いたデータ送受信を実行し、前記機能確認用ポートを用いた問い合わせなしに前記データ送受信用ポートへの接続が要求されたときに、前記特定付加機能を用いないデータ送受信を実行する通信制御手段と、
を具備することを特徴とするデータ通信システム。
【請求項３】
前記機能確認用ポートを用いて前記他のコンピュータ側と前記特定付加機能の実装を確認し合う際、前記機能確認用ポートの接続時に得られる相手側の情報を記録する記録手段をさらに具備し、
前記通信制御手段は、前記記録手段により得られた情報に基づいて前記特定付加機能を用いたデータ送受信を実行することを特徴とする請求項１または２記載のデータ通信システム。
【請求項４】
前記機能確認用ポートを用いて前記他のコンピュータ側と前記特定付加機能の実装を確認し合う際、前記データ送受信用ポートを用いて互いを認識し合う情報を交換する情報交換手段をさらに具備し、
前記通信制御手段は、前記情報交換手段により得られた情報に基づいて前記特定付加機能を用いたデータ送受信を実行することを特徴とする請求項１または２記載のデータ通信システム。
【請求項５】
前記情報交換手段は、前記特定付加機能に含まれる複数の付加機能の中のいずれの付加機能を用いるかを認識し合う情報を交換することを特徴とする請求項４記載のデータ通信システム。
【請求項６】
不特定多数の他のコンピュータとの間のデータ送受信を制御するデータ通信システムであって、特定の付加機能が実装されたデータ通信システムにおいて、
前記他のコンピュータ側の前記特定付加機能の実装有無を確認するためおよび前記他のコンピュータ側からの前記特定付加機能の実装有無の問い合わせを受け付けるために用いられる機能確認用ポートをデータの送受信に用いられるデータ送受信用ポートと対にして設け、
前記機能確認用ポートを用いて前記他のコンピュータ側に前記特定付加機能の実装有無を問い合わせる問い合わせ手段と、
前記問い合わせ手段の問い合わせに対して肯定応答が返送されたときに、前記特定付加機能を用いたデータ送受信を実行し、否定応答が返送されたときまたは応答が返送されなかったときに、前記特定付加機能を用いないデータ送受信を実行する第１の通信制御手段と、
前記機能確認用ポートを用いて前記他のコンピュータ側から前記特定付加機能の実装有無の問い合わせがあったときに、前記他のコンピュータ側に対して肯定応答を返送する返送手段と、
前記機能確認用ポートを用いた問い合わせを経た後に前記データ送受信用ポートへの接続が要求されたときに、前記特定付加機能を用いたデータ送受信を実行し、前記機能確認用ポートを用いた問い合わせなしに前記データ送受信用ポートへの接続が要求されたときに、前記特定付加機能を用いないデータ送受信を実行する第２の通信制御手段と、
を具備することを特徴とするデータ通信システム。
【請求項７】
不特定多数の他のコンピュータとの間のデータ送受信を制御するデータ通信システムであって、特定の付加機能が実装されたデータ通信システムに適用されるデータ通信方法において、
前記他のコンピュータ側の前記特定付加機能の実装有無を確認するために用いられる機能確認用ポートをデータの送受信に用いられるデータ送受信用ポートと対にして設け、
前記機能確認用ポートを用いて前記他のコンピュータへの接続を試み、当該機能確認用ポートによる接続可否に基づき、前記特定付加機能の実装有無を判定し、
前記特定付加機能の実装有りと判定した場合、前記特定付加機能を用いたデータ送受信を実行し、前記特定付加機能の実装無しと判定した場合、前記特定付加機能を用いないデータ送受信を実行することを特徴とするデータ通信方法。
【請求項８】
不特定多数の他のコンピュータとの間のデータ送受信を制御するデータ通信システムであって、特定の付加機能が実装されたデータ通信システムに適用されるデータ通信方法において、
前記他のコンピュータ側からの前記特定付加機能の実装有無の問い合わせを受け付けるために用いられる機能確認用ポートをデータの送受信に用いられるデータ送受信用ポートと対にして設け、
前記機能確認用ポートを用いて前記他のコンピュータ側から前記特定付加機能の実装有無の問い合わせがあったときに、前記他のコンピュータ側に対して肯定応答を返送し、
前記機能確認用ポートを用いた問い合わせを経た後に前記データ送受信用ポートへの接続が要求されたときに、前記特定付加機能を用いたデータ送受信を実行し、前記機能確認用ポートを用いた問い合わせなしに前記データ送受信用ポートへの接続が要求されたときに、前記特定付加機能を用いないデータ送受信を実行することを特徴とするデータ通信方法。
【請求項９】
不特定多数の他のコンピュータとの間のデータ送受信を制御するデータ通信システムであって、特定の付加機能が実装されたデータ通信システムに適用されるデータ通信方法において、
前記他のコンピュータ側の前記特定付加機能の実装有無を確認するためおよび前記他のコンピュータ側からの前記特定付加機能の実装有無の問い合わせを受け付けるために用いられる機能確認用ポートをデータの送受信に用いられるデータ送受信用ポートと対にして設け、
前記機能確認用ポートを用いて前記他のコンピュータ側に前記特定付加機能の実装有無を問い合わせ、
前記問い合わせに対して肯定応答が返送されたときに、前記特定付加機能を用いたデータ送受信を実行し、否定応答が返送されたときまたは応答が返送されなかったときに、前記特定付加機能を用いないデータ送受信を実行し、
前記機能確認用ポートを用いて前記他のコンピュータ側から前記特定付加機能の実装有無の問い合わせがあったときに、前記他のコンピュータ側に対して肯定応答を返送し、
前記機能確認用ポートを用いた問い合わせを経た後に前記データ送受信用ポートへの接続が要求されたときに、前記特定付加機能を用いたデータ送受信を実行し、前記機能確認用ポートを用いた問い合わせなしに前記データ送受信用ポートへの接続が要求されたときに、前記特定付加機能を用いないデータ送受信を実行することを特徴とするデータ通信方法。
【請求項１０】
特定の付加機能を実装し、不特定多数の他のコンピュータとの間でデータを送受信するデータ通信システムのデータ送受信を制御するためのプログラムであって、
前記他のコンピュータ側の前記特定付加機能の実装有無を確認するためおよび前記他のコンピュータ側からの前記特定付加機能の実装有無の問い合わせを受け付けるために用いられる機能確認用ポートをデータの送受信に用いられるデータ送受信用ポートと対にして設け、
前記機能確認用ポートを用いて前記他のコンピュータ側に前記特定付加機能の実装有無を問い合わせ、
前記問い合わせに対して肯定応答が返送されたときに、前記特定付加機能を用いたデータ送受信を実行し、否定応答が返送されたときまたは応答が返送されなかったときに、前記特定付加機能を用いないデータ送受信を実行し、
前記機能確認用ポートを用いて前記他のコンピュータ側から前記特定付加機能の実装有無の問い合わせがあったときに、前記他のコンピュータ側に対して肯定応答を返送し、
前記機能確認用ポートを用いた問い合わせを経た後に前記データ送受信用ポートへの接続が要求されたときに、前記特定付加機能を用いたデータ送受信を実行し、前記機能確認用ポートを用いた問い合わせなしに前記データ送受信用ポートへの接続が要求されたときに、前記特定付加機能を用いないデータ送受信を実行するように前記データ通信システムを動作させるプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、たとえばインターネットなどのコンピュータネットワークを介したコンピュータ間のデータ送受信を制御するデータ通信システムおよび同システムに適用されるデータ通信方法に関する。
【０００２】
【従来の技術】
近年、デスクトップタイプやノートブックタイプなどと称される様々な種類の個人用途向けのコンピュータが急速に普及し、また、ネットワーク技術の向上に伴なって、遠隔地に点在するコンピュータ間でのデータの送受信が容易に行なわれるに至っている。そして、それぞれのコンピュータ上で動作し、これらデータの送受信を制御するのがデータ通信システムである。
【０００３】
図６には、このデータ通信システムの概略構成が示されている。なお、この図６に示した例では、２つのコンピュータ（ここでは便宜的に、一方をクライアントコンピュータ１０、他方をサーバコンピュータ２０とするが、クライアントコンピュータ１０はサーバコンピュータとなり得るものであり、また、サーバコンピュータ２０はクライアントコンピュータとなり得るものである）との間は、ＴＣＰ／ＩＰを用いた通信が行なわれるものとし、また、それぞれのコンピュータ（１０，２０）上で動作する、たとえばＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）ブラウザソフトウェアなどの通信プログラム１１（クライアントプログラム）と、たとえばＷＷＷサーバソフトウェアなどの通信プログラム２１（サーバプログラム）との間でデータの送受信が行なわれるものとする。
【０００４】
そして、この図６に示したデータ通信システムは、大きく分けて、前述した通信プログラム（１１，２１）と、ソケットモジュール（１２，２２）および通信スタック（１３，２３）との３つの要素から構成される。
【０００５】
この通信スタック（１３，２３）は、通信回線３０（公衆電話回線やＬＡＮなど）の物理的制御と通信プロトコルの制御とを行なうものである。
また、ソケットモジュール（１２，２２）は、通信プログラム（１１，１２）と通信スタック（１３，２３）とを結びつけるモジュールであり、通信プログラム（１１，２１）に物理的な回線の状態を意識させることなくデータの送受信を行なわせるためのインターフェイス（ＡＰＩ：Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を提供するものである。
【０００６】
たとえば、クライアントコンピュータ１０上の通信プログラム１１が通信相手であるサーバコンピュータ２０上の通信プログラム２１にデータを送るための接続処理を実行する場合、この通信プログラム１１は、まず、同一コンピュータ上で動作するソケットモジュール１２の中からｃｏｎｎｅｃｔというサービスを呼び出す。通信プログラム１１とソケットモジュール１２との間のやりとりは、ソケット１２１というデータの受け渡し用の口が使われるが、このソケット１２１は、通信プログラム１１が通信セッションを開始するときに生成されるものである。そして、ソケットモジュール１２は、ｃｏｎｎｅｃｔ呼び出し時に通信プログラム１１から受け取った通信先の情報を基に通信スタック１３を呼び出し、通信先であるサーバコンピュータ２０の通信プログラム２１に対する接続処理を実行する。
【０００７】
また、通信プログラム１１からソケットモジュール１２に渡される情報は、通信先であるサーバコンピュータ２０を特定するためのアドレスやサーバコンピュータ２０上の通信プログラム２１を特定するためのポート番号などである。したがって、通信先であるサーバコンピュータ２０上で複数の通信プログラムが動作していた場合に、どの通信プログラムにその通信セッションを接続するかを特定するための情報がポート番号ということになる。そして、このポート番号は、通信スタック（１３，２３）において、データ送受信用ポート（１３１，２３１）として管理される。
【０００８】
なお、このとき、通信プログラム１１は、通信スタック１３がどのように動作するかは意識しなくてよい。すなわち、物理的な回線が公衆電話回線、ＬＡＮまたは他のネットワークのいずれなのかなどを意識しなくてよい。
【０００９】
以上のように、図６に示したデータ通信システムでは、通信プログラム同士がデータの交換を行なう場合のデータの流れは、
（ａ）通信プログラム→（ｂ）ソケットモジュール→（ｃ）通信スタック→（ｄ）通信回線→（ｅ）通信先通信スタック→（ｆ）通信先ソケットモジュール→（ｇ）通信先通信プログラム
という形となる。
【００１０】
【発明が解決しようとする課題】
ところで、このデータ通信システムでは、通信し合う通信プログラム双方が互いに各々の機能を認識している。これは、通信のターゲットとなるプログラムを意識してプログラムが書かれているためである。すなわち、通信先が実装する機能を互いに認識しているので、通信プログラム間のデータ送受信を決められたプロトコルで行なうことができるわけである。
【００１１】
ここで、たとえば、これら通信プログラムに何らかの付加機能を追加することを考える。そして、この付加機能を使うためには、新たに異なるプロトコルを用いる必要が生じるものとする。このような場合、通信し合う通信プログラム双方が、ともにこの付加機能の追加に対応させて修正されれば問題はない。しかしながら、最近のデータ通信の利用形態を考慮すれば、通信先として接続する相手は必ずしも付加機能が追加されているとは限らない。
【００１２】
たとえば、インターネットにおけるＷＷＷサーバとＷＷＷブラウザとの接続などでは、一つのブラウザソフトウェアだけで複数のＷＷＷサーバとの接続処理を実行するということは頻繁に起こることである。
【００１３】
このような状況において、ＷＷＷブラウザ側で付加機能が追加されていて、その付加機能を使うためのプロトコルでデータ送信をしようとした場合に、通信先のＷＷＷサーバがその付加機能に対応していないと、この通信セッションは正常に行なうことができなくなってしまう。
【００１４】
その逆に、ＷＷＷサーバ側だけが付加機能の追加に対応していて、ＷＷＷブラウザ側がその付加機能をもっていないために、正常の通信ができないことも起こり得る。このような状態は、複数のサーバおよびクライアントが混在する環境では必ず起きることである。
【００１５】
このようなことから、すべての通信プログラムが持っている基本機能およびプロトコルの他に、追加された付加機能の実装有無を互いに確認し合った上で利用する、あるいは一方が対応していない場合には、自動的に従前の基本機能のみで動作させるような仕組みが強く望まれている。
【００１６】
この発明はこのような実情に鑑みてなされたものであり、通信先における特定付加機能の実装有無を確認することによって自動的に適切な手法を決定してデータ送受信を実行することのできるデータ通信システムおよびデータ通信方法を提供することを目的とする。
【００１７】
【課題を解決するための手段】
前述した目的を達成するために、この発明は、不定期に追加される機能（特定付加機能）の実装有無の確認用のポート（機能確認用ポート）を予め設けられたデータ送受信用のポート（データ送受信用ポート）と対にして新設し、自身がクライアントとなる場合には、まず、機能確認用ポートを用いて通信先に特定付加機能の実装有無を問い合わせ、この問い合わせに対する応答によって、特定付加機能を用いたデータ送受信および特定付加機能を用いないデータ送受信のいずれを実行するかを決定し、また、自身がサーバとなる場合には、機能確認用ポートを用いた特定付加機能の実装有無の問い合わせを経た後にデータ送受信用ポートへの接続が要求されたか、あるいは機能確認用ポートを用いた問い合わせなしに前記データ送受信用ポートへの接続が要求されたによって、特定付加機能を用いたデータ送受信および特定付加機能を用いないデータ送受信のいずれを実行するかを決定するようにしたものである。
【００１８】
すなわち、この発明においては、自身がクライアントおよびサーバのいずれになった場合でも、通信先の特定付加機能の実装有無に応じた適切な手法を決定してデータ送受信を実行することが可能となる。
【００１９】
【発明の実施の形態】
以下、図面を参照してこの発明の実施形態を説明する。
図１には、この発明の実施形態に係るデータ通信システムの概略構成が示されている。なお、この図１に示した例では、２つのコンピュータ（ここでは便宜的に、一方をクライアントコンピュータ１０、他方をサーバコンピュータ２０とするが、クライアントコンピュータ１０はサーバコンピュータとなり得るものであり、また、サーバコンピュータ２０はクライアントコンピュータとなり得るものである）との間は、ＴＣＰ／ＩＰを用いた通信が行なわれるものとし、また、それぞれのコンピュータ（１０，２０）上で動作する、たとえばＷＷＷブラウザソフトウェアなどの通信プログラム１１（クライアントプログラム）と、たとえばＷＷＷサーバソフトウェアなどの通信プログラム２１（サーバプログラム）との間でデータの送受信が行なわれるものとする。
【００２０】
そして、この実施形態のデータ通信システムは、従来と同様、大きく分けて、前述した通信プログラム（１１，２１）と、ソケットモジュール（１２，２２）および通信スタック（１３，２３）との３つの要素から構成される。
【００２１】
この通信スタック（１３，２３）は、通信回線３０（公衆電話回線やＬＡＮなど）の物理的制御と通信プロトコルの制御とを行なうものである。
また、ソケットモジュール（１２，２２）は、通信プログラム（１１，１２）と通信スタック（１３，２３）とを結びつけるモジュールであり、通信プログラム（１１，２１）に物理的な回線の状態を意識させることなくデータの送受信を行なわせるためのインターフェイス（ＡＰＩ）を提供するものである。
【００２２】
そして、この実施形態のデータ通信システムでは、新たな機能（１２０，２２０）がソケットモジュール（１２，２２）に追加されている。ここでは、一例として、基本機能でのデータ送受信では、テキストデータが平文で送受信され、新たに追加された機能（１２０，２２０）でのデータ送受信では、このテキストデータが暗号化されて送受信されるものとする。
【００２３】
なお、クライアントコンピュータ１０上の通信プログラム１１とサーバコンピュータ２０上の通信プログラム２１とは、互いに従来と同一のデータ送受信ポート（１３１，２３１）を用いて、従来と同様に平文のテキストデータの送受信を行なおうとする。というのも、通常、通信プログラム（１１，２１）は、通信先との接続のために固定のポートを用いるからである。これは、ＩＰアドレスで接続先のコンピュータを特定し、さらにポート番号でそのコンピュータ上で動作する複数の通信プログラムの中のどの通信プログラムに接続してデータ送受信を行なうかを特定するためである。このように、ポートと通信プログラムとが密接に連携しているため、その上に流されるデータの形式や送受信の手順などのプロトコルは、固定になっているケースが多い。
【００２４】
そのため、この実施形態のデータ通信システムのように、（基本機能では平文のまま送信される）テキストを暗号化して送信する新機能（１２０，２２０）をソケットモジュール（１２，２２）に追加した場合、通信プログラム（１１，２１）は、その機能追加を知らないので、通常のデータ送受信用ポート（１３１，２３１）を利用して通信セッションを確立し、そのテキスト暗号化プロトコルに基づいたデータの送受信を行なうことになる。
【００２５】
たとえば、クライアントコンピュータ１０上の通信プログラム１１がサーバコンピュータ２０上の通信プログラム２１とのデータ送受信を要求した際、ソケットモジュール１２は、通常のデータ送受信用のソケット１２１でその情報を受け取る。一方、ソケットモジュール１２は、このデータ送受信用ソケット１２１と対にして、機能確認用ソケット１２２を用意する。そして、ソケットモジュール１２は、この機能確認用ソケット１２２を用いて、サーバコンピュータ２０上のソケットモジュール２２が新機能２２０を実装しており、かつ機能確認用ソケット２２２が用意されていることを前提に、その機能確認ソケット２２２に対応する機能確認用ポート２３２への接続を試みる。なお、このとき使用されるポート番号は、ソケットモジュール（１２，２２）によって、データ送受信用のポート番号と対にして保持されており、このソケットモジュール（１２，２２）の制御により通信スタック（１３，２３）内で機能確認用ポートとして管理される。
【００２６】
一方、サーバコンピュータ２０上のソケットモジュール２２は、新機能２２０を実装しているため、この機能確認用ポート２３２への接続を受け付けることができ、この時点でクライアントコンピュータ１０のソケットモジュール１２が新機能１２０を実装していることを認識する。同様に、クライアントコンピュータ１０のソケットモジュール１２は、この機能確認用ポート２３２への接続が確立すると、この時点でサーバコンピュータ２０上のソケットモジュール２２が新機能２２０を実装していることを認識する。
【００２７】
この新機能（１２０，２２０）の実装を認識し合うと、クライアントコンピュータ１０上のソケットモジュール１２およびサーバコンピュータ２０上のソケットモジュール２２は、新機能（１２０，２２０）を用いて、通信プログラム（１１，２１）から引き渡されるテキストを暗号化して送受信し合う。
【００２８】
次に、図２を参照してクライアントコンピュータ１０上のソケットモジュール１２のみが新機能１２０を実装する場合を説明する。
この場合、クライアントコンピュータ１０上の通信プログラム１１がサーバコンピュータ２０上の通信プログラム２１とのデータ送受信を要求した際、ソケットモジュール１２は、通常のデータ送受信用のソケット１２１でその情報を受け取り、別途用意した機能確認用ソケット１２２を用いて、サーバコンピュータ２０上のソケットモジュール２２が新機能２２０を実装しており、かつ機能確認用ソケット２２２が用意されていることを前提に、その機能確認ソケット２２２に対応する機能確認用ポート２３２への接続を試みる。
【００２９】
一方、サーバコンピュータ２０上のソケットモジュール２２は、新機能を実装していないため、この機能確認用ポート２３２への接続を受け付けることができない。したがって、この機能確認用ポート２３２への接続は失敗し、この時点でクライアントコンピュータ１０上のソケットモジュール１２は、サーバコンピュータ２０が新機能を実装していないことを認識する。
【００３０】
このように、サーバコンピュータ２０が新機能を実装していないことを認識すると、クライアントコンピュータ１０上のソケットモジュール１２は、新機能１２０を実装しているにも関わらず、この新機能１２０を用いずに、通信プログラム１１から引き渡されるテキストを平文のまま送信する。
【００３１】
次に、図３を参照してサーバコンピュータ２０上のソケットモジュール２２のみが新機能２２０を実装する場合を考える。
この場合、クライアントコンピュータ１０上の通信プログラム１１がサーバコンピュータ２０上の通信プログラム２１とのデータ送受信を要求した際、ソケットモジュール１２は、通常のデータ送受信用のソケット１２１でその情報を受け取り、サーバコンピュータ２０上のソケットモジュール２２のデータ送受信用ソケット２２１に対応するデータ送受信用ポート２３１への接続を試みる。
【００３２】
一方、サーバコンピュータ２０上のソケットモジュール２２は、機能確認用ポート２３２への接続を経ずにデータ送受信用ポート２３１への接続がなされたことから、この時点でクライアントコンピュータ１０上のソケットモジュール１２が新機能を実装していないことを確信する。
【００３３】
このように、クライアントコンピュータ１０が新機能を実装していないことを認識すると、サーバコンピュータ１０上のソケットモジュール２２は、新機能２２０を実装しているにも関わらず、この新機能２２０を用いずに、通信プログラム２１から引き渡されるテキストを平文のまま送受信する。
【００３４】
ここで、図４および図５を参照して、この実施形態のデータ通信システムの動作手順を説明する。
図４は、クライアント側の動作を説明するためのフローチャートである。
【００３５】
通信プログラム１１は、まず、データ送受信用のソケット１２１を生成し、その生成したソケット１２１を用いて、通信相手のデータ送受信ポート２３１に対するｃｏｎｎｅｃｔ処理を行なう（ステップＡ１）。このとき、通信プログラム１１は、通信先のＩＰアドレスとデータ送受信ポート番号とを指定する。
【００３６】
一方、ソケットモジュール１２は、このｃｏｎｎｅｃｔ処理を実行する前に、通信先であるサーバコンピュータ２０上のソケットモジュール２２が新機能である暗号化機能を実装しているかどうかの確認を行なう。具体的には、ソケットモジュール１２は、通常のデータ送受信で使われるソケット１２１以外に機能確認を行なうためのソケット１２２を用意し、このソケット１２２を用いて、サーバコンピュータ２０上のソケットモジュール２２が用意しているであろう機能確認用ソケット２３２に対応する機能確認ポート２３２に対してｃｏｎｎｅｃｔを行なう（ステップＡ２）。
【００３７】
ソケットモジュール１２は、機能確認のためのセッションが確立すると（ステップＡ３のＹＥＳ）、その時点で自身が使おうとしている新機能１２０である暗号化機能がサーバコンピュータ２０上のソケットモジュール２２に実装されていることを認識し、通信プログラム１１の要求する通常のソケット１３１を用いたｃｏｎｎｅｃｔを行なう（ステップＡ４）。そして、このデータ送受信用のｃｏｎｎｅｃｔが成功したら、通信プログラム１１は、そのセッションを使ってデータの送受信を行なう。このとき、ソケットモジュール１２は、その際に引き渡される平文データを自身のもつ暗号化拡張機能を用いて暗号化してサーバコンピュータ２０側へのデータの送受信を実行する（ステップＡ５）。
【００３８】
一方、機能確認のためのセッション確立に失敗すると（ステップＡ３のＮＯ）、その時点で自身が使おうとしている新機能１２０である暗号化機能がサーバコンピュータ２０上のソケットモジュール２２に実装されていないことを認識し、通信プログラム１１の要求する通常のソケット１３１を用いたｃｏｎｎｅｃｔを行ない（ステップＡ６）、このデータ送受信用のｃｏｎｎｅｃｔが成功したら、通信プログラム１１は、そのセッションを使ってデータの送受信を行なう。このとき、ソケットモジュール１２は、その際に引き渡される平文データを自身のもつ暗号化拡張機能を用いずに、通常の形式でサーバコンピュータ２０側へのデータの送受信を実行する（ステップＡ７）。
【００３９】
図５は、サーバ側の動作を説明するためのフローチャートである。
通信プログラム２１は、データ送受信用の待ち受けソケット２２１を作成してｌｉｓｔｅｎ状態になっている（ステップＢ１）。そして、通常は、その待ち受けソケット２２１に対してクライアント側からの接続が行なわれるが、この実施形態のソケットモジュール２１は、通常の送信セッション接続待ち受けのソケット２２１の他に、自身に追加された機能の確認を受け付けるための別の待ち受けソケット２２２を内部に用意する（ステップＢ２）。なお、この機能確認待ち受けソケット２２２は、通常のソケット２２１と混同されないように、異なるポート番号が用いられる。
【００４０】
そして、この機能確認待ち受けソケット２２２に対し、クライアントコンピュータ１０上のソケットモジュール１２からの接続があった場合（ステップＢ３のＹＥＳ）、ソケットモジュール２２は、その相手先のＩＰアドレスおよびポート番号を記録し保持しておく（ステップＢ４）。その後、ソケットモジュール２２は、データ送受信用の待ち受けソケット２２１にクライアントコンピュータ１０上のソケットモジュール１２からの接続があったときに（ステップＢ５）、そのクライアントコンピュータのＩＰアドレスとポート番号を調べて、直前に機能確認して来たセッションの相手先の情報と比較する（ステップＢ６）。
【００４１】
もし、それが同一のものであったならば（ステップＢ６のＹＥＳ）、この接続されたセッションは、追加された機能２２０を使ってデータの送受信を行なってもよいものと判断し、機能追加されたプロトコルを用いてデータの送受信を行なう（ステップＢ７）。
【００４２】
一方、異なるのものであった場合（ステップＢ６のＮＯ）、この接続されたセッションは、追加された機能２２０を使ってデータの送受信を行なってはいけないものと判断し、機能追加されたプロトコルを用いずに、通常の形式てデータの送受信を行なう（ステップＢ８）。
【００４３】
このように、この実施形態のデータ通信システムによれば、クライアントおよびサーバのいずれにおいても、通信先の特定付加機能の実装有無に応じた適切な手法を決定してデータ送受信を実行することができることになる。
【００４４】
なお、前述した実施形態では、付加機能はソケットモジュール（１２，２２）に組み込まれていたが、データ通信システムの階層構造を見ても分かるように、機能の拡張は、通信プログラム（アプリケーション）、ソケットモジュールおよび通信スタックのどの部分でも行なうことが可能である。
【００４５】
したがって、たとえば、通信プログラム（１１，２１）で機能拡張が行なわれた場合も、同様に通常のｃｏｎｎｅｃｔの前に通信先の機能確認ポートへの接続を行なうことにより、実装機能の確認を行なうことが可能である。
【００４６】
また、前述した実施形態では、追加された機能の実装有無の確認を機能確認用ポート（１３２，２３２）への接続によって行なっていたが、さらに、データ送受信用ポート（１３１，２３１）の接続時にそのセッションを用いて機能の実装情報を交換すれば、複数の付加機能の実装有無をクライアントおよびサーバ間で認識し合うことが可能となる。
【００４７】
さらに、この発明の手法は、ソフトウェアとして実現されるため、コンピュータによって実行制御されるプログラムとして、フロッピィディスク、光ディスクおよび半導体メモリなどのコンピュータ読み取り可能な記録媒体に格納して頒布することが可能である。
【００４８】
【発明の効果】
以上詳述したように、この発明によれば、特定付加機能の実装有無を確認するための機能確認用ポートをデータ送受信用のデータ送受信用ポートと対にして新設し、自身がクライアントとなる場合には、この機能確認用ポートを用いて通信先に特定付加機能の実装有無を問い合わせることにより、また、自身がサーバとなる場合には、機能確認用ポートを用いた特定付加機能の実装有無の問い合わせが行なわれたかどうかにより、特定付加機能を用いたデータ送受信および特定付加機能を用いないデータ送受信のいずれを実行するかを決定するため、自身がクライアントおよびサーバのいずれになった場合でも、通信先の特定付加機能の実装有無に応じた適切なデータ送受信を実行することが可能となる。
【図面の簡単な説明】
【図１】この発明の実施形態に係るデータ通信システムの概略構成を示す図。
【図２】同実施形態のクライアントコンピュータ上のソケットモジュールのみが新機能を実装する場合を説明するための図。
【図３】同実施形態のサーバコンピュータ上のソケットモジュールのみが新機能を実装する場合を説明するための図。
【図４】同実施形態のクライアント側の動作を説明するためのフローチャート。
【図５】同実施形態のサーバ側の動作を説明するためのフローチャート。
【図６】従来のデータ通信システムの概略構成を示す図。
【符号の説明】
１０…クライアントコンピュータ
１１…サーバコンピュータ
１１，２１…通信プログラム
１２，２２…ソケットモジュール
１３，２３…通信スタック
１２１，２２１…データ送受信用ソケット
１２２，２２２…機能確認用ソケット
１３１，２３１…データ送受信用ポート
１３２，２３２…機能確認用ポート
【図１】
0004057696.tif 000002
【図２】
0004057696.tif 000003
【図３】
0004057696.tif 000004
【図４】
0004057696.tif 000005
【図５】
0004057696.tif 000006
【図６】
0004057696.tif 000007