説明

通信プロトコルを用いた相互接続方法および装置

【課題】通信プロトコルによる通信装置間の相互接続性を向上させる相互接続方法および装置を提供する。
【解決手段】HTTPのバージョンとヘッダの両方を制御することにより通信装置間の相互接続性を高める。HTTP−HEAD生成部104は、クライアント11から受信したHTTPリクエストからサーバ12のHTTPバージョンを取得するためのHTTPリクエストを生成し、HTTPバージョン判定部106はサーバ12の応答からそのバージョンを判定する。HTTPリクエスト生成部107は、クライアント11とサーバ12との間でHTTPバージョンおよびヘッダ情報を整合させたHTTPリクエストを生成し、サーバ12へ送信する。これによってクライアント11とサーバ12との相互接続を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はデータ通信システムに係り、特に通信プロトコルを用いた通信装置間の相互接続方法および装置に関する。
【背景技術】
【0002】
HTTP(Hyper Text Transfer Protocol)は、インターネットを利用してユーザ端末上のブラウザとウェブサーバとが相互にデータを送受信するために一般的に採用されている代表的通信プロトコルである。しかしながら、このように通信プロトコルは不変のものではなく進化するものであり、HTTPのバージョンとしてはHTTP/1.0(RFC1945)やHTTP/1.1(RFC2616)などがある。一般に旧バージョンのコマンドは新バージョンで解釈可能であるが、新バージョンに新たに導入されたコマンドは旧バージョンのサーバには解釈できない。このために通信プロトコルには常にバージョン適合の問題があるというべきであり、異なるHTTPバージョンを適合させるシステムや方法がこれまでにも多く提案されてきた。
【0003】
たとえば、特表2004−530231号公報(特許文献1)には、ユーザ端末とサーバとが異なるバージョンに準拠している場合、両者の相互接続性を向上させるプロキシサーバが開示されている。このプロキシサーバはユーザ端末とサーバの両方のメッセージを分析し、相互にプロトコルバージョンを変換することで良好な接続性を維持している。たとえばHTTPバージョンをHTTP/1.1からHTTP/1.0へ変換し、サーバとの接続性を向上させる。
【0004】
【特許文献1】特表2004−530231号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかしながら、従来のように通信プロトコルのバージョンを整合させるだけでは、良好な接続性を確保することができない可能性がある。たとえば、HTTP/1.0に準拠したサーバにHTTP/1.1のヘッダを含むHTTPリクエストを送信した場合、通常はHTTP/1.1のヘッダは無視されるべきである。しかしながら、この対応はサーバ側の実装によっているために、HTTP/1.1のヘッダを拒否する動作がされる場合もあり得る。その場合にはクライアントはサーバへの接続自体ができないことになる。
【0006】
また、将来新しいHTTPバージョンが追加されたり、あるいはヘッダ情報を確認する仕様が追加されたりした場合、バージョン制御機能のみでは高い接続性を確保することが出来ない可能性がある。
【0007】
また、RFC2145の第2章のNOTEにて、将来のHTTPバージョンにおいては、理解不能なヘッダを含むリクエストは、却下する仕様が追加されるかもしれない(MAY)と記述がある。このような仕様が追加されると、従来の装置が行うバージョン変換のみではヘッダの不整合により接続不能となる可能性がある。
【0008】
本発明の目的は、通信プロトコルによる通信装置間の相互接続性を向上させる相互接続方法および装置を提供することにある。
【0009】
本発明の他の目的は、通信プロトコルのバージョンが将来追加された場合でも高い接続性を確保することできる相互接続方法および装置を提供することにある。
【課題を解決するための手段】
【0010】
本発明によれば、通信プロトコルのバージョンとヘッダの両方を制御することにより通信装置間の相互接続性を高める。
【0011】
本発明の第1の側面によれば、所定の通信プロトコルにより通信装置間の通信を可能にする相互接続方法であって、a)前記通信装置の各々が準拠する前記通信プロトコルのバージョンを判定し、b)前記通信プロトコルのバージョンとそのヘッダとを前記通信装置間で一致させ、c)前記一致させた通信プロトコルのバージョンおよびヘッダを用いて前記通信装置間を相互接続する、ことを特徴とする。
【0012】
前記b)において、前記通信プロトコルの上位バージョンを下位バージョンへ変換し、前記上位バージョンのみに関係するヘッダ情報を削除することで、前記下位バージョンに従った新たなヘッダのメッセージを生成することを特徴とする。
【0013】
本発明の一実施例によれば、前記a)において、一方の通信装置から受信した第1メッセージから当該一方の通信装置が準拠する通信プロトコルの第1バージョンを判定し、前記第1バージョン以下のバージョンの第2メッセージを他方の通信装置へ送信し、前記他方の通信装置から受信した前記第2メッセージに対する応答メッセージから当該他方の通信装置が準拠する通信プロトコルの第2バージョンを判定する、ことを特徴とする。
【0014】
本発明の他の実施例によれば、前記a)において、一方の通信装置から受信した第1メッセージから当該一方の通信装置が準拠する通信プロトコルの第1バージョンを判定し、予め定められた複数のバージョンの各々に従った複数の第2メッセージを他方の通信装置へそれぞれ送信し、前記他方の通信装置から前記複数の第2メッセージのそれぞれに対する応答メッセージを受信すると、これら応答メッセージから当該他方の通信装置が準拠する通信プロトコルの第2バージョンを判定する、ことを特徴とする。
【0015】
本発明の他の側面によれば、所定の通信プロトコルにより通信装置間の通信を可能にする相互接続装置であって、一方の通信装置から受信した第1メッセージと、当該第1メッセージに基づいて他方の通信装置へ送信された第2メッセージに対する応答メッセージと、からの前記一方および他方の通信装置がそれぞれ準拠する前記通信プロトコルの第1バージョンおよび第2バージョンを判定するバージョン判定手段と、前記通信プロトコルのバージョンとそのヘッダとを前記通信装置間で一致させた第3メッセージを生成するメッセージ生成手段と、を有し、前記第3メッセージを前記他方の通信装置へ送信することで前記通信装置間を相互接続することを特徴とする。
【発明の効果】
【0016】
以上説明したように、本発明によれば、通信プロトコルのバージョンだけでなくヘッダ情報も整合させることができるために、通信装置間、たとえばクライアントとサーバとの間で高い接続性を達成することができる。また、将来、通信プロトコルの新しいバージョンが追加され下位互換性が低いプロトコルとなった場合でも高い接続性を確保することが可能である。
【発明を実施するための最良の形態】
【0017】
1.装置構成
図1は本発明の一実施形態による相互接続装置の機能的構成を示すブロック図である。相互接続装置10にはデータ受信部101およびデータ送信部102が設けられ、ネットワークを介してクライアント11およびサーバ12の各々と通信可能である。
【0018】
HTTPリクエスト保存部103はクライアント11から受信したHTTPリクエストを保存するためのメモリである。HTTP−HEAD生成部104は、サーバ12のHTTPバージョンを取得するためのHTTP−HEADリクエストを生成し、HTTP−HEADリクエストはデータ送信部102からサーバ12へ送信される。
【0019】
HTTP−HEAD解析部105は、サーバ12から受信したHTTP−HEADリクエストに対するレスポンスを解析し、サーバ12のHTTPバージョンを取得する。HTTPバージョン判定部106は、取得したサーバ12のHTTPバージョンから生成するHTTPリクエストのバージョンを決定する。HTTPリクエスト生成部107は、HTTPリクエスト保存部103に保存しているHTTPリクエストをHTTPバージョン判定部106より指示されたHTTPバージョンに改造する。
【0020】
なお、図1は相互接続装置10の機能的な構成を示しており、全体的な動作制御は図示されていない制御部により実行される。また、HTTP−HEAD生成部104、HTTP−HEAD解析部105、HTTPバージョン判定部106およびHTTPリクエスト生成部107はハードウェアにより回路構成されても良いし、プログラム制御プロセッサ上でプログラムを実行することにより同様の機能をソフトウェア的に実現しても良い。
【0021】
2.動作
図2は本実施形態による相互接続装置の動作を示すフローチャートである。まず、データ受信部101がクライアント11からHTTPリクエストを受信すると(ステップS201)、制御部はHTTPリクエストをHTTPリクエスト保存部103に保存する(ステップS202)。
【0022】
続いて、HTTP−HEAD生成部104は、サーバ12のHTTPバージョンを取得するために、クライアント11から受信したHTTPリクエストのバージョン以下のバージョンによりHTTP−HEADリクエストを生成してデータ送信部102を通してサーバ12へ送信し(ステップS203)、サーバ12からの応答を待つ。
【0023】
サーバ12からレスポンスを受信すると(ステップS204)、HTTP−HEAD解析部105はそのレスポンスを解析する。HTTPバージョン判定部106は解析結果からサーバ12のHTTPバージョンを判定し(ステップS205)、HTTPリクエスト生成部107へ通知する。
【0024】
HTTPリクエスト生成部107は、サーバ12のHTTPバージョンと、HTTPリクエスト保存部103に保存しているクライアント11のHTTPリクエストとに基づいて、両者のHTTPバージョンを比較する。サーバ12のHTTPバージョンがクライアント11のHTTPバージョンと同一あるいは上位でサポートできる場合には問題が生じないので、クライアント11のHTTPリクエストをそのまま送信用のHTTPリクエストとして使用する。
【0025】
他方、サーバ12が下位バージョンの場合には、HTTPリクエスト生成部107はクライアント11のHTTPリクエストから上位バージョン用のヘッダを削除し、下位バージョンへバージョンおよびヘッダ情報を適合させたHTTPリクエストを生成する(ステップS206)。
【0026】
こうしてHTTPリクエスト生成部107から出力されたHTTPリクエストがデータ送信部102からサーバ12へ送信される(ステップS207)。これに対するレスポンスをサーバ12から受信すると(ステップS208)、そのHTTPレスポンスをクライアント11へ送信する(ステップS209)。
【0027】
上述したように、クライアント11とサーバ12との間を接続する際に、両者のHTTPバージョンだけでなくヘッダ情報も整合させることで、接続不能の事態を回避することができ高い接続性を得ることができる。
【0028】
なお、本実施形態ではサーバ12のHTTPバージョン取得のためにHEADメソッドを使用しているが、その他のGET、POST、TRACE、PUTあるいはDELTEメソッドを使用する場合も、HEADメソッドと同様にサーバ12のバージョンを取得することが可能である。
【実施例1】
【0029】
以下、説明を煩雑にしないためにHTTPバージョンをHTTP/1.0およびHTTP/1.1の2種類とする。
【0030】
図3は本発明の第1実施例による相互接続装置の動作を説明するためのシーケンス図である。ここでは、本実施例による相互接続装置がルータ10に組み込まれ、クライアント11とサーバ12との間を中継しているものとする。
【0031】
まず、クライアント11はHTTP/1.1リクエストを送信する(S11)。クライアント11からHTTP/1.1HTTPリクエストを受信すると、ルータ10はHTTP/1.1以下のバージョンであるHTTP/1.0のHEADリクエストを生成し、HTTPリクエストで指定されたサーバ12へ送信する(S12)。その後、サーバ12からHTTPレスポンスを受信すると(S13)、そのHTTPレスポンスからサーバ12のHTTPバージョンを取得する。
【0032】
ルータ10のHTTPリクエスト生成部107は、上述したように、取得したサーバ12のバージョンとクライアント11から受信したHTTPリクエストとをバージョンおよびHTTPヘッダの両方を含めて一致させたHTTPリクエストを新たに生成し、サーバ12へ送信する(S14)。その後サーバ12からHTTPリクエストを受信すると(S15)、それをクライアント11へ透過させる(S16)。
【0033】
HTTPリクエスト生成部107が実行するバージョン情報およびヘッダ情報の制御方法を具体的に説明する。
【0034】
図4はHTTPリクエスト生成部107が実行するバージョン情報およびヘッダ情報の制御方法を説明するためのHTTPメッセージを示す模式的フォーマット図である。まず、図4(a)に示すように、HTTPリクエストメッセージのフォーマットは、先頭行のリクエストラインに、メソッド、URLのパスおよびHTTPバージョンが指定され、続く行にヘッダが1行ずつ続く。そして設定するヘッダの最後にヘッダとデータとの区切りを示す改行を挟んでデータ部分が続く。
【0035】
図4(b)に示すように、クライアント11からHTTP/1.1リクエスト301を受信すると、ルータ10はそれをHTTPリクエスト保存部103に格納する。そして、サーバ12のHTTPバージョンがHTTP/1.0であると判定されると、HTTPリクエスト生成部107は、バージョンをHTTP/1.1からHTTP/1.0へ変換し、さらにHTTP/1.1リクエスト301のヘッダを検索してHTTP/1.1のヘッダ情報が存在する場合はこれを削除する。ここではHostヘッダとAccept−Languageヘッダは、HTTP/1.1のヘッダであるから削除される。ただし、AuthorizationヘッダとContent−LengthヘッダはHTTP/1.0とHTTP/1.1に共通のヘッダであるから保持される。以上が図2のステップS206に対応する。こうして新たなHTTP/1.0リクエスト302が生成され、サーバ12に送信される。
【0036】
なお、HTTPバージョンとヘッダの対応およびリクエストメッセージのフォーマットの詳細は、以下のRFCを参照のこと:
HTTP/1.0:RFC1945の4.3章、5.2章、7.1章
HTTP/1.1:RFC2616の4.5章、5.3章、7.1章。
【0037】
上述したように、ルータ10の処理は、取得したクライアント11およびサーバ12のバージョンによって異なる。
【0038】
図5はサーバの下位のHTTPバージョン1.0である場合のルータの処理を示すシーケンス図である。クライアント11からHTTP/1.1リクエストを受信することでクライアント11のHTTPバージョンをHTTP/1.1であると判定し(S21)、続いてサーバ12のHTTPバージョンがHTTP/1.0であると判定する(S22,S23)。これよりHTTPリクエスト生成部107は、クライアント11から受信したHTTP/1.1リクエストをHTTPバージョン1.0に変換し、HTTP/1.1リクエストからHTTP/1.1用のヘッダを削除する。こうして作成したHTTP/1.0リクエストをサーバ12に送信する(S24)。
【0039】
その後、ルータ10は、サーバ12からHTTP/1.0レスポンスを受信すると(S25)、それをクライアント11へ透過的に送信する(S26)。
【0040】
図6はサーバの同一HTTPバージョン1.1である場合のルータの処理を示すシーケンス図である。クライアント11からHTTP/1.1リクエストを受信することでクライアント11のHTTPバージョンをHTTP/1.1であると判定し(S231、続いてサーバ12のHTTPバージョンがHTTP/1.1であると判定する(S32,S33)。両者は同一バージョンであるから、HTTPリクエスト生成部107は、クライアント11から受信したHTTP/1.1リクエストをサーバ12へ送信する(S34)。その後、ルータ10は、サーバ12からHTTP/1.1のレスポンスを受信すると(S35)、それをクライアント11へ透過的に送信する(S36)。
【実施例2】
【0041】
将来、HTTPのバージョンが追加された場合も本発明は適用可能である。以下、HTTP/1.0およびHTTP/1.1に加えてHTTP/2.0が追加され、計3種類のバージョンが存在する場合を一例として説明する。4種類以上のバージョンが存在する場合でも同様である。
【0042】
図7は本発明の第2実施例による相互接続装置の動作を説明するためのシーケンス図である。ここでは、本実施例による相互接続装置がルータ10に組み込まれ、クライアント11とサーバ12との間を中継しているものとする。
【0043】
まず、クライアント11はHTTP/1.1リクエストを送信する(S41)。クライアント11からHTTPリクエストを受信すると、ルータ10のHTTP−HEAD生成部104は、サーバ12のHTTPバージョンを正確に取得するために、HTTP−HEADリクエストを各バージョンに分けて送信する。すなわち、可能性のある3種類のHEADリクエスト:HTTP/1.0−、HTTP/1.1−、およびHTTP/2.0−HEADリクエスト、を送信する(S42、S43、S44)。
【0044】
これらに応答してサーバ12からレスポンスを受信するが(S45、S46、S47)、ルータ10のHTTPバージョン判定部106は、これらレスポンスのバージョンとステータスコードの両方を参照して、サーバ12に送信すべきHTTPリクエストのバージョンを決定する。ここでは、HTTP/1.0のリクエスト(S42)に対して、ステータスコード“505”(HTTP Version Not Suppoted:リクエストしたHTTPバージョンは未サポート)を通知しているために(S45)、サーバ12はHTTP/1.0を受け付けない事がわかる。また、HTTP/1.1のリクエスト(S43)に対して、HTTP/2.0のステータスコード“200”(OK:リクエストを正常に受け付けた)で応答し(S46)、HTTP/2.0のリクエスト(S44)に対しても同様にHTTP/2.0のステータスコード“200”で応答している(S47)。これにより、サーバ12に送信する最適なリクエストはHTTP/2.0と判定可能である。その判定を元に、HTTPリクエスト生成部107はHTTP/2.0のリクエストを生成してサーバ12に送信する(S48)。ルータ10は、サーバ12からHTTP/2.0のレスポンスを受信すると(S49)、それをクライアント11へ透過的に送信する(S50)。
【0045】
このように、将来HTTPバージョンが追加され、下位互換性が低いプロトコルとなった場合でも、本発明によれば高い接続性を確保することが可能となる。
【0046】
なお、上記第1および第2実施例ではルータ10に本実施例による相互接続装置を実装したが、データを送受信する機能が存在する通信装置であれば良く、パーソナルコンピュータ(PC)などを用いても実現可能である。
【産業上の利用可能性】
【0047】
本発明は通信装置間のデータ通信を中継して両者を相互接続する中継装置一般に適用可能であり、たとえばクライアントとサーバを中継するルータ、ゲートウェイなどに適用できる。
【図面の簡単な説明】
【0048】
【図1】本発明の一実施形態による相互接続装置の機能的構成を示すブロック図である。
【図2】本実施形態による相互接続装置の動作を示すフローチャートである。
【図3】本発明の第1実施例による相互接続装置の動作を説明するためのシーケンス図である。
【図4】HTTPリクエスト生成部107が実行するバージョン情報およびヘッダ情報の制御方法を説明するためのHTTPメッセージを示す模式的フォーマット図である。
【図5】サーバの下位のHTTPバージョン1.0である場合のルータの処理を示すシーケンス図である。
【図6】サーバの同一HTTPバージョン1.1である場合のルータの処理を示すシーケンス図である。
【図7】本発明の第2実施例による相互接続装置の動作を説明するためのシーケンス図である。
【符号の説明】
【0049】
10 相互接続装置(ルータ)
11 クライアント
12 サーバ
101 データ受信部
102 データ送信部
103 HTTPリクエスト保存部
104 HTTP−HEAD生成部
105 HTTP−HEAD解析部
106 HTTPバージョン判定部
107 HTTPリクエスト生成部


【特許請求の範囲】
【請求項1】
所定の通信プロトコルにより通信装置間の通信を可能にする相互接続方法において、
a)前記通信装置の各々が準拠する前記通信プロトコルのバージョンを判定し、
b)前記通信プロトコルのバージョンとそのヘッダとを前記通信装置間で一致させ、
c)前記一致させた通信プロトコルのバージョンおよびヘッダを用いて前記通信装置間を相互接続する、
ことを特徴とする相互接続方法。
【請求項2】
前記b)において、
前記通信プロトコルの上位バージョンを下位バージョンへ変換し、前記上位バージョンのみに関係するヘッダ情報を削除することで、前記下位バージョンに従った新たなヘッダのメッセージを生成することを特徴とする請求項1に記載の相互接続方法。
【請求項3】
前記a)において、
一方の通信装置から受信した第1メッセージから当該一方の通信装置が準拠する通信プロトコルの第1バージョンを判定し、
前記第1バージョン以下のバージョンの第2メッセージを他方の通信装置へ送信し、
前記他方の通信装置から受信した前記第2メッセージに対する応答メッセージから当該他方の通信装置が準拠する通信プロトコルの第2バージョンを判定する、
ことを特徴とする請求項1または2に記載の相互接続方法。
【請求項4】
前記a)において、
一方の通信装置から受信した第1メッセージから当該一方の通信装置が準拠する通信プロトコルの第1バージョンを判定し、
予め定められた複数のバージョンの各々に従った複数の第2メッセージを他方の通信装置へそれぞれ送信し、
前記他方の通信装置から前記複数の第2メッセージのそれぞれに対する応答メッセージを受信すると、これら応答メッセージから当該他方の通信装置が準拠する通信プロトコルの第2バージョンを判定する、
ことを特徴とする請求項1または2に記載の相互接続方法。
【請求項5】
所定の通信プロトコルにより通信装置間の通信を可能にする相互接続装置において、
一方の通信装置から受信した第1メッセージと、当該第1メッセージに基づいて他方の通信装置へ送信された第2メッセージに対する応答メッセージと、からの前記一方および他方の通信装置がそれぞれ準拠する前記通信プロトコルの第1バージョンおよび第2バージョンを判定するバージョン判定手段と、
前記通信プロトコルのバージョンとそのヘッダとを前記通信装置間で一致させた第3メッセージを生成するメッセージ生成手段と、
を有し、前記第3メッセージを前記他方の通信装置へ送信することで前記通信装置間を相互接続することを特徴とする相互接続装置。
【請求項6】
前記メッセージ生成手段は、第1バージョンおよび第2バージョンのうち上位バージョンを下位バージョンへ変換し、前記上位バージョンのみに関係するヘッダ情報を下位バージョンのメッセージヘッダから削除することで、前記下位バージョンに従った新たなヘッダの前記第3メッセージを生成することを特徴とする請求項5に記載の相互接続装置。
【請求項7】
請求項5または6に記載の相互接続装置を含むルータ。
【請求項8】
所定の通信プロトコルにより通信装置間の通信を可能にする相互接続機能をコンピュータに実現するためのプログラムにおいて、
前記通信装置の各々が準拠する前記通信プロトコルのバージョンを判定する判定ステップと、
前記通信プロトコルのバージョンとそのヘッダとを前記通信装置間で一致させる整合ステップと、
前記一致させた通信プロトコルのバージョンおよびヘッダを用いて前記通信装置間を相互接続するステップと、
を有することを特徴とするプログラム。
【請求項9】
前記整合ステップは、前記通信プロトコルの上位バージョンを下位バージョンへ変換し、前記上位バージョンのみに関係するヘッダ情報を削除することで、前記下位バージョンに従った新たなヘッダのメッセージを生成することを特徴とする請求項8に記載のプログラム。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2007−265356(P2007−265356A)
【公開日】平成19年10月11日(2007.10.11)
【国際特許分類】
【出願番号】特願2006−93262(P2006−93262)
【出願日】平成18年3月30日(2006.3.30)
【出願人】(000197366)NECアクセステクニカ株式会社 (1,236)
【Fターム(参考)】