【文献】
吉田和幸,南浩一,throttlingによる攻撃抑制の効果について,情報処理学会研究報告,日本,社団法人情報処理学会,2007年 3月 1日,第2007巻,第16号,p.381-386
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0009】
以下、図面を参照して本発明に係るウェブサーバ及びウェブページの表示方法について説明する。但し、本発明に係るウェブサーバは多くの異なる態様で実施することが可能であり、以下に示す実施の形態及び実施例の記載内容に限定して解釈されるものではない。なお、実施形態及び実施例で参照する図面において、同一部分又は同様な機能を有する部分には同一の符号を付し、その繰り返しの説明は省略する。
【0010】
(実施形態1)
図1は、本発明の一実施形態に係るウェブサーバの構成を示す機能ブロック図である。
【0011】
図1を参照すると、本発明の一実施形態に係るウェブサーバ100は、電文受信部110、送信元アドレス解析部120、HTTPヘッダ解析部130、レスポンス作成部140、電文送信部150を有する。
【0012】
本発明におけるウェブサーバ100は、物理的に1台のサーバでも、複数台のクラスタリングされたサーバにより構成されてもよく、また、複数のアプリケーション、プラットフォーム、及びインフラストラクチャから構成されたいわゆるクラウドコンピューティングの形態であってもよい。
【0013】
ウェブサーバ100は、クライアント200とネットワーク接続されている。ウェブサーバ100は、クライアント200のHTTPユーザエージェント210から送信されたHTTPリクエストに応じて、クライアント200に対して、HTTPレスポンスを送信してウェブサービスを提供する。
【0014】
HTTPユーザエージェント210は、例えばウェブブラウザであるが、これに限られず、検索エンジンのクローラなどでもよい。
【0015】
電文受信部110は、クライアント200とインターネット等のネットワークを介して接続するためのインターフェースである。電文受信部110は、通信プロトコルとしてのTCP/IPに対応している。そして電文受信部110は、クライアント200のHTTPユーザエージェント210より送信されたHTTPリクエストを含む電文を受信する。
【0016】
送信元アドレス解析部120は、電文受信部110により受信された電文を解析しクライアント200のアドレスを取得する。送信元アドレス解析部120は、例えば、電文受信部110で受信した電文のIPヘッダを解析して、クライアント200のアドレスを取得する。
【0017】
すなわち、送信元アドレス解析部120は、電文のIPパケットからIPヘッダを抽出する。そして、IPヘッダの記述から、送信元アドレス(Source Address)のスロットを取得することによって、クライアント200のアドレスを送信元アドレスとして取得する。IPヘッダは、例えば
図2に示すようなIPヘッダ10であって、そのうち、送信元アドレス11を確認し、送信元アドレス11が「170.2.27.65」であることから、クライアント200のアドレスが「170.2.27.65」であると認識する。送信元アドレス解析部120は、認識した送信元アドレスをレスポンス作成部140へと受け渡す。
【0018】
HTTPヘッダ解析部130は、クライアント200から送信されたHTTPリクエストから、HTTPヘッダを抽出し、HTTPヘッダの記述を確認し、必要な情報を取得する。
【0019】
例えば、HTTPヘッダ解析部130は、HTTPヘッダの記述の中から「Accept−Language」の部分を取得する。すなわち、HTTPヘッダ解析部130は、
図3に示すようなHTTPリクエストのHTTPヘッダ20の記述を確認する場合には、「Accept−Language」21の記述を確認する。「Accept−Language」21の記載は、「ja,en;q=0.5」であるため、HTTPヘッダ解析部130は、HTTPユーザエージェント210の受け入れ可能言語が日本語と英語とであることを認識する。HTTPヘッダ解析部130は、認識した受け入れ可能言語の情報を、レスポンス作成部140へと受け渡す。これにより、後述のレスポンス作成部140において、クライアント200のHTTPユーザエージェント210の受け入れ可能言語に基づいてレスポンスのデータを作成することができる。
【0020】
なお、HTTPヘッダ解析部130は、「Accept−Language」の記載に限られず、その他のHTTPヘッダの記載をレスポンス作成部140へ受け渡してもよい。例えば、「User−Agent」の記述を確認して、HTTPユーザエージェント210の種類を確認し、その種類に応じたデータをレスポンス作成部140において選択できるようにしてもよい。
【0021】
レスポンス作成部140は、送信元アドレス解析部120から受け渡されたクライアント200のアドレス及びHTTPヘッダ解析部130より受け渡された情報に基づいて、クライアント200へと送信するHTTPレスポンスの内容を決定し、HTTPレスポンスのデータを作成する。なお、ここで作成とは、予め複数作成したデータから、クライアント200のアドレスとHTTPヘッダ解析部130より受け渡された情報とに応じて送信するデータを選択することも含む。
【0022】
HTTPヘッダ解析部130において、「Accept−Language」の記述を確認して受け入れ可能言語の情報をレスポンス作成部140へ受け渡した場合、レスポンス作成部140は、クライアント200のアドレスと受け入れ可能言語との組合せにより、HTTPレスポンスとしてクライアント200へと送信するデータの内容を決定しHTTPレスポンスのデータを作成する。
【0023】
例えば、「Accept−Language」に「ja」の記述があり、受け入れ可能言語として日本語を含む場合で、クライアント200のアドレスから、クライアント200が日本国内に存在することを確認した場合、レスポンス作成部140は、日本国内に在住する日本語でのコミュニケーション可能な者向けのコンテンツを提供するためのデータをHTTPレスポンスに含める。この場合、レスポンス作成部140は、例えば
図4のようなウェブページを表示させるためのHTTPレスポンスのデータを作成する。これにより、日本国内に居住している日本語が理解できる人向けのウェブページがクライアント200に送信される。
【0024】
例えば、「Accept−Language」に「ja」の記述がなく、「zh」の記述があり、受け入れ可能言語が中国語である場合で、クライアント200のアドレスから、クライアント200が日本国内に存在することを確認した場合、レスポンス作成部140は、日本国内に在住する中国語でのコミュニケーション可能な者向けのコンテンツを提供するためのデータをHTTPレスポンスへと含める。この場合、レスポンス作成部140は、例えば
図5のようなウェブページを表示させるためのHTTPレスポンスのデータを作成する。これにより、日本国内に居住しているが中国語しか理解できない人向けのウェブページがクライアント200に送信される。
【0025】
例えば、「Accept−Language」に「ja」の記述があり、受け入れ可能言語に日本語を含む場合で、クライアント200のアドレスから、クライアント200が日本国外に存在することを確認した場合、レスポンス作成部140は、日本国外に在住する日本語でのコミュニケーション可能な者向けのコンテンツを提供するためのデータをHTTPレスポンスへと含める。この場合、レスポンス作成部140は、例えば
図6のようなウェブページを表示させるためのHTTPレスポンスのデータを作成する。これにより、日本国外に居住している日本語が理解できる人向けのウェブページがクライアント200に送信される。
【0026】
例えば、「Accept−Language」に「en」の記述のみがあり、受け入れ可能言語が英語である場合で、クライアント200のアドレスから、クライアント200が日本国外に存在することを確認した場合、レスポンス作成部140は、英語によるコミュニケーションが可能である日本国外に在住する者向けのコンテンツを提供するためのデータをHTTPレスポンスへと含める。この場合、レスポンス作成部140は、例えば
図6のようなウェブページを表示させるためのHTTPレスポンスのデータを作成する。これにより、日本国外に居住している英語しか理解できない人向けのウェブページがクライアント200に送信される。
【0027】
このように、レスポンス作成部140において、クライアント200のアドレス及び受け入れ可能言語を把握し、その組み合わせに応じてHTTPレスポンスのデータを作成することにより、それぞれのユーザに応じたウェブページを表示することができる。
【0028】
なお、受け入れ可能言語ごとに異なるHTTPレスポンスのデータを作成せず、例えば受け入れ可能言語に日本語を含む場合と日本語を含まない場合、といった場合分けなどもレスポンス作成部140において適宜設定可能である。また、アドレスをより詳細に判別して、国より小さな、地域単位でデータを作成してもよいし、ある国の国内、国外、といった単位でなく国単位でデータを作成してもよい。
【0029】
また、HTTPヘッダの記述のうち、「Accept−Language」以外の「User−Agent」の記述などをさらに組み合わせて用いてもよい。
【0030】
レスポンス作成部140において作成したHTTPレスポンスのデータから、電文送信部150においてクライアント200に送信する電文を作成してクライアント200へと送信する。
【0031】
本実施形態により、クライアント側における複雑な手続きが不要で、かつユーザの属性を正確に判別してユーザの属性に応じたウェブページを表示できるウェブサーバが提供される。
【0032】
(実施形態2)
次に、本発明の他の実施形態に係るウェブページの表示方法を
図4を参照して説明する。
【0033】
図4に係る本実施形態においては、
図1を参照して説明した実施形態に加えて、時刻管理部160を有する。時刻管理部160は、電文の受信時刻及び電文の受信間隔等を判別し、記憶装置へと書き込み記憶する。時刻管理部160は、電文の受信時刻をウェブサーバ100の時計の示す時刻から取得してもよいし、電文自体にタイムスタンプなどの形式で時刻情報が含まれる場合、それを用いてもよい。
【0034】
時刻管理部160で取得した電文の受信時刻、受信時刻間隔は、レスポンス作成部140へただちに、またはレスポンス作成部140からの要求に応じて、レスポンス作成部140へと受け渡される。
【0035】
レスポンス作成部140は、時刻管理部160から受け渡された受信時刻及びHTTPヘッダ解析部130より受け渡された情報に基づき、HTTPレスポンスの内容を決定する。
【0036】
たとえば、HTTPヘッダのうち、「Accept−Language」と、受信時刻間隔を参照して、所定の受け入れ可能言語のHTTPユーザエージェント210より、所定の期間内に閾値以上の量の電文を受信している場合、HTTPレスポンスの内容を変更してもよい。
【0037】
また、変形例として、HTTPヘッダのうち、「Accept−Language」と、受信時刻間隔を参照した際に、通常、当該ウェブサーバ100が提供するウェブページへのアクセスが想定されていない所定の受け入れ可能言語が「Accept−Language」に記述されており、当該受け入れ可能言語が記述されたHTTPリクエストを、所定の期間内に、閾値を超えた量を受信したことをレスポンス作成部140において検知した場合、作成するHTTPレスポンスの内容を変えることなく、ウェブサーバ100の動作モードを変更する機能やウェブサーバ100の管理者へと何らかの通知を行う機能を、レスポンス作成部140が有してもよく、そうした機能を有する他のコンポーネントへとレスポンス作成部140が通知してもよい。
【0038】
上記の動作モードを変更する一例を説明する。同じ受け入れ可能言語が記述されたHTTPリクエストを所定期間内に閾値を超えた量を受信した場合には、クライアント200からのHTTPリクエストの誤送信など、ユーザがHTTPレスポンスの受信を希望していないケースが考えられる。ウェブサーバ100のリソース確保のため、レスポンス作成部140ないしレスポンス作成部140から通知を受けた他のコンポーネントにより、ウェブサーバ100をスリープモードに変更して、クライアント200へのHTTPレスポンスをウェブサーバ100の通常の動作モードにおける応答速度よりも遅らせて送信してもよい。これにより、クライアント200のユーザからは、ウェブサーバ100の動作が遅くなっているように認識される。
【0039】
本変形例により、通常アクセスが想定されない受け入れ可能言語が記述されたHTTPリクエストに対して、ウェブサーバ100において自動で、または管理者において、より適切なアクションを行うことができる。例えば当該受け入れ可能言語向けのウェブページを表示するためのHTTPレスポンスを新たに作成するための準備を迅速に行うことなどもできる。
【0040】
また、HTTPヘッダのうち、「User−Agent」と、電文の受信時刻の情報を用いて、レスポンス作成部140で作成するHTTPレスポンスの全部または一部の内容を変更してもよい。例えば、「User−Agent」で記述されたHTTPユーザエージェント220の情報が、電文の受信時刻と比較して、最新のバージョンのウェブブラウザを示している場合には、クライアント200のユーザは、パーソナルコンピュータの使用について詳しい知識を有するユーザであるものとして、そうしたユーザ向けの情報を表示してもよい。例えば、最新のコンピュータ製品に関する広告を、ポップアップ表示するなどしてもよい。
【0041】
本実施形態により、クライアント側における複雑な手続きが不要で、かつユーザの属性を正確に判別してユーザの属性や、電文の受信間隔に応じてウェブページを表示するウェブサーバが提供される。
【0042】
なお、本実施形態の変形例として、レスポンス作成部140において、クライアント200のアドレス情報は用いず、アドレスに応じたHTTPレスポンスは作成しない場合には、アドレス解析部120を有しないより簡易な構成としてもよい。
【0043】
(実施形態3)
次に、本発明の一実施形態に係るウェブページの表示方法を説明する。
【0044】
図9は、本発明の一実施形態に係るウェブページの表示方法の流れを説明するためのフローチャートである。
【0045】
図9を参照すると、まず、ウェブサーバ100は、クライアント200から、HTTPリクエストを含む電文を受信する(S110)。
【0046】
ウェブサーバ100は、電文のIPヘッダの送信元アドレスの記述から、クライアント200のアドレスを解析する(S120)。
【0047】
次に、ウェブサーバ100は、電文のHTTPヘッダの記述から、所定の情報を解析する(S130)。
【0048】
ウェブサーバ100は、クライアント200のアドレスとHTTPヘッダの所定の情報を参照し、クライアント200へと送信するHTTPレスポンスのデータを作成する(S140)。なお、予め作成してあるデータのうちからクライアント200のアドレスとHTTPヘッダの所定の情報に応じたデータを選択してもよい。
【0049】
作成したHTTPレスポンスを含む電文をクライアント200へと送信する(S150)。
【0050】
本実施形態により、クライアント側における複雑な手続きが不要で、かつユーザの属性を正確に判別してユーザの属性に応じたウェブページの表示方法が提供される。
【0051】
(実施形態4)
次に、本発明の他の実施形態に係るウェブページの表示方法を説明する。
【0052】
図10は、本発明の他の実施形態に係るウェブページの表示方法を説明するためのフローチャートである。
【0053】
図10を参照すると、まず、ウェブサーバ100は、クライアント200から、HTTPリクエストを含む電文を受信する(S210)。
【0054】
ウェブサーバ100は、電文の受信時刻を確認し記憶する(S220)。
【0055】
ウェブサーバ100は、電文のHTTPヘッダの記述から、所定の情報を解析する(S230)。
【0056】
ウェブサーバ100は、電文の受信時刻とHTTPヘッダの所定の情報を参照し、クライアント200へと送信するHTTPレスポンスのデータを作成する(S240)。なお、予め作成してあるデータのうちから受信時刻とHTTPヘッダの所定の情報に応じたデータを選択してもよい。また、
図4に係る実施形態の説明において上述したように、ウェブサーバ100の管理者に通知するなど、その他のアクションを行ってもよい。
【0057】
作成したHTTPレスポンスを含む電文をクライアント200へと送信する(S250)。
【0058】
本実施形態により、クライアント側における複雑な手続きが不要で、かつユーザの属性を正確に判別してユーザの属性や、電文の受信間隔に応じたウェブページの表示方法が提供される。