(57)【特許請求の範囲】
【請求項１】
コンピュータの名前と当該コンピュータのアドレスが互いに対応づけられて記憶される名前解決情報データベースと、
名前を含む名前解決要求を送信したコンピュータから当該名前解決要求を受信する名前解決要求受信部と、
当該名前を有するコンピュータのアドレスを含む名前解決応答を生成し、当該名前解決応答を当該名前解決要求を送信したコンピュータに送信する名前解決応答送信部と、
前記名前解決要求受信部により受信された名前解決要求内の名前に対応づけられたアドレスを前記名前解決情報データベースから検索することを試みるアドレス検索部と、
他の名前解決装置から送信される名前解決応答の受信に使用するために生成されるソケットの生成時刻であるソケット生成時刻が記憶されるソケット生成時刻記憶部と、
前記アドレスが検索できなかった場合、前記ソケット生成時刻記憶部からソケット生成時刻を読み出し、当該ソケット生成時刻と当該アドレスが検索できなかった時刻との差を求め、当該差が予め設定されたしきい値を超えているか否かを判定するソケット更新部と、
前記ソケット更新部により、超えていないと判定された場合において、ランダムに生成したトランザクションＩＤと前記名前と当該超えていないと判定されたソケットを示すポート番号とを含む名前解決要求を生成し、当該名前解決要求を前記他の名前解決装置に送信する名前解決要求送信部と、
当該名前解決要求に対して前記名前解決装置から当該ポート番号宛に送信された名前解決応答を当該ソケットを使用して受信し、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定し、一致すると判定した場合、当該名前解決応答内のアドレスを前記名前解決応答送信部に与える名前解決応答受信部と
を備えることを特徴とする名前解決装置。
【請求項２】
コンピュータの名前と当該コンピュータのアドレスが互いに対応づけられて記憶される名前解決情報データベースと、
名前を含む名前解決要求を送信したコンピュータから当該名前解決要求を受信する名前解決要求受信部と、
当該名前を有するコンピュータのアドレスを含む名前解決応答を生成し、当該名前解決応答を当該名前解決要求を送信したコンピュータに送信する名前解決応答送信部と、
前記名前解決要求受信部により受信された名前解決要求内の名前に対応づけられたアドレスを前記名前解決情報データベースから検索することを試みるアドレス検索部と、
他の名前解決装置から送信される名前解決応答の受信に使用するために生成されるソケットの生成時刻であるソケット生成時刻が記憶されるソケット生成時刻記憶部と、
前記アドレスが検索できなかった場合、前記ソケット生成時刻記憶部からソケット生成時刻を読み出し、当該ソケット生成時刻と当該アドレスが検索できなかった時刻との差を求め、当該差が予め設定されたしきい値を超えているか否かを判定し、超えていると判定した場合、当該超えていると判定されたソケットを破棄し、当該ソケットとは異なるソケットを生成し、前記ソケット生成時刻記憶部のソケット生成時刻に代えて、当該ソケットのソケット生成時刻を前記ソケット生成時刻記憶部に記憶させるソケット更新部と、
前記アドレスが検索できなかった場合、ランダムに生成したトランザクションＩＤと前記名前と当該超えていないと判定されたソケットまたは当該生成されたソケットを示すポート番号とを含む名前解決要求を生成し、当該名前解決要求を前記他の名前解決装置に送信する名前解決要求送信部と、
当該名前解決要求に対して前記名前解決装置から当該ポート番号宛に送信された名前解決応答を当該ソケットを使用して受信し、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定し、一致すると判定した場合、当該名前解決応答内のアドレスを前記名前解決応答送信部に与える名前解決応答受信部と
を備えることを特徴とする名前解決装置。
【請求項３】
前記名前解決要求受信部により受信された名前解決要求内の名前と前記名前解決応答送信部に与えられたアドレスを互いに対応づけて前記名前解決情報データベースに記憶させる名前解決情報データベース更新部
を備えることを特徴とする請求項１または２記載の名前解決装置。
【請求項４】
コンピュータの名前と当該コンピュータのアドレスが互いに対応づけられて記憶される名前解決情報データベースと、
名前を含む名前解決要求を送信したコンピュータから当該名前解決要求を受信する名前解決要求受信部と、
前記名前解決要求受信部により受信された名前解決要求内の名前に対応づけられたアドレスを前記名前解決情報データベースから検索することを試みるアドレス検索部と、
他の名前解決装置から送信される名前解決応答の受信に使用するために生成されるソケットの生成時刻であるソケット生成時刻が記憶されるソケット生成時刻記憶部と、
前記アドレスが検索できなかった場合、前記ソケット生成時刻記憶部からソケット生成時刻を読み出し、当該ソケット生成時刻と当該アドレスが検索できなかった時刻との差を求め、当該差が予め設定されたしきい値を超えているか否かを判定し、超えていると判定した場合、当該超えていると判定されたソケットを破棄し、当該ソケットとは異なるソケットを生成し、前記ソケット生成時刻記憶部のソケット生成時刻に代えて、当該ソケットのソケット生成時刻を前記ソケット生成時刻記憶部に記憶させるソケット更新部と
を備えることを特徴とする名前解決装置。
【請求項５】
前記ソケット更新部により、ソケットが生成された場合、ランダムに生成したトランザクションＩＤと前記名前と当該生成されたソケットを示すポート番号とを含む名前解決要求を生成し、当該名前解決要求を前記他の名前解決装置に送信する名前解決要求送信部と、
当該名前解決要求に対して前記他の名前解決装置から当該ポート番号宛に送信された名前解決応答を当該ソケットを使用して受信し、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定する名前解決応答受信部と、
当該トランザクションＩＤ同士が一致しないと判定された場合、当該一致しないと判定されたときに存在しているソケットを破棄し、当該ソケットとは異なるソケットを生成し、前記ソケット生成時刻記憶部に記憶されたソケット生成時刻に代えて、当該ソケットのソケット生成時刻を前記ソケット生成時刻記憶部に記憶させる第２のソケット更新部と
備えることを特徴とする請求項４記載の名前解決装置。
【請求項６】
コンピュータの名前と当該コンピュータのアドレスが互いに対応づけられて記憶される名前解決情報データベースと、
名前を含む名前解決要求を送信したコンピュータから当該名前解決要求を受信する名前解決要求受信部と、
前記名前解決要求受信部により受信された名前解決要求内の名前に対応づけられたアドレスを前記名前解決情報データベースから検索することを試みるアドレス検索部と、
他の名前解決装置から送信される名前解決応答の受信に使用するために生成されるソケットの生成時刻であるソケット生成時刻が記憶されるソケット生成時刻記憶部と、
前記アドレスが検索できなかった場合、前記ソケット生成時刻記憶部からソケット生成時刻を読み出し、当該ソケット生成時刻と当該アドレスが検索できなかった時刻との差を求め、当該差が予め設定されたしきい値を超えているか否かを判定するソケット更新部と、
前記ソケット更新部により、超えていないと判定された場合において、ランダムに生成したトランザクションＩＤと前記名前と当該超えていないと判定されたソケットを示すポート番号とを含む名前解決要求を生成し、当該名前解決要求を前記他の名前解決装置に送信する名前解決要求送信部と、
当該名前解決要求に対して前記他の名前解決装置から当該ポート番号宛に送信された名前解決応答を当該ソケットを使用して受信し、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定する名前解決応答受信部と、
当該トランザクションＩＤ同士が一致しないと判定された場合、当該一致しないと判定されたときに存在しているソケットを破棄し、当該ソケットとは異なるソケットを生成し、前記ソケット生成時刻記憶部に記憶されたソケット生成時刻に代えて、当該ソケットのソケット生成時刻を前記ソケット生成時刻記憶部に記憶させる第２のソケット更新部と
を備えることを特徴とする名前解決装置。
【請求項７】
名前解決装置が行う名前解決方法であって、
前記名前解決装置は、コンピュータの名前と当該コンピュータのアドレスが互いに対応づけられて記憶される名前解決情報データベースと、他の名前解決装置から送信される名前解決応答の受信に使用するために生成されるソケットの生成時刻であるソケット生成時刻が記憶されるソケット生成時刻記憶部とを備え、
前記名前解決方法は、
前記名前解決装置の名前解決要求受信部が、名前を含む名前解決要求を送信したコンピュータから当該名前解決要求を受信するステップと、
前記名前解決装置のアドレス検索部が、当該名前解決要求内の名前に対応づけられたアドレスを前記名前解決情報データベースから検索することを試みるステップと、
前記名前解決装置のソケット更新部が、当該アドレスが検索できなかった場合において、前記ソケット生成時刻記憶部からソケット生成時刻を読み出すステップと、
前記ソケット更新部が、当該ソケット生成時刻と当該アドレスが検索できなかった時刻との差を求めるステップと、
前記ソケット更新部が、当該差が予め設定されたしきい値を超えているか否かを判定するステップと、
前記名前解決装置の名前解決要求送信部が、前記ソケット更新部により、超えていないと判定された場合において、ランダムに生成したトランザクションＩＤと前記名前と当該超えていないと判定されたソケットを示すポート番号とを含む名前解決要求を生成し、当該名前解決要求を前記他の名前解決装置に送信するステップと、
前記名前解決装置の名前解決応答受信部が、当該名前解決要求に対して前記他の名前解決装置から当該ポート番号宛に送信された名前解決応答を当該ソケットを使用して受信するステップと、
前記名前解決応答受信部が、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定するステップと、
前記名前解決応答受信部が、一致すると判定した場合において、当該名前解決応答内のアドレスを前記名前解決装置の名前解決応答送信部に与えるステップと、
前記名前解決応答送信部が、当該アドレスを含む名前解決応答を生成し、当該名前解決応答を前記コンピュータに送信するステップと
を含むことを特徴とする名前解決方法。
【請求項８】
名前解決装置が行う名前解決方法であって、
前記名前解決装置は、コンピュータの名前と当該コンピュータのアドレスが互いに対応づけられて記憶される名前解決情報データベースと、他の名前解決装置から送信される名前解決応答の受信に使用するために生成されるソケットの生成時刻であるソケット生成時刻が記憶されるソケット生成時刻記憶部とを備え、
前記名前解決方法は、
前記名前解決装置の名前解決要求受信部が、名前を含む名前解決要求を送信したコンピュータから当該名前解決要求を受信するステップと、
前記名前解決装置のアドレス検索部が、当該名前解決要求内の名前に対応づけられたアドレスを前記名前解決情報データベースから検索することを試みるステップと、
前記名前解決装置のソケット更新部が、当該アドレスが検索できなかった場合において、前記ソケット生成時刻記憶部からソケット生成時刻を読み出すステップと、
前記ソケット更新部が、当該ソケット生成時刻と当該アドレスが検索できなかった時刻との差を求めるステップと、
前記ソケット更新部が、当該差が予め設定されたしきい値を超えているか否かを判定するステップと、
前記ソケット更新部が、超えていると判定したソケットを破棄するステップと、
前記ソケット更新部が、当該ソケットとは異なるソケットを生成するステップと、
前記ソケット更新部が、前記ソケット生成時刻記憶部のソケット生成時刻に代えて、当該ソケットのソケット生成時刻を前記ソケット生成時刻記憶部に記憶させるステップと、
前記名前解決装置の名前解決要求送信部が、ランダムに生成したトランザクションＩＤと前記名前と当該生成されたソケットを示すポート番号とを含む名前解決要求を生成し、当該名前解決要求を前記他の名前解決装置に送信するステップと、
前記名前解決装置の名前解決応答受信部が、当該名前解決要求に対して前記他の名前解決装置から当該ポート番号宛に送信された名前解決応答を当該ソケットを使用して受信するステップと、
前記名前解決応答受信部が、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定するステップと、
前記名前解決応答受信部が、一致すると判定した場合において、当該名前解決応答内のアドレスを前記名前解決装置の名前解決応答送信部に与えるステップと、
前記名前解決装置の名前解決応答送信部が、当該アドレスを含む名前解決応答を生成し、当該名前解決応答を前記コンピュータに送信するステップと
を含むことを特徴とする名前解決方法。
【請求項９】
前記名前解決装置の名前解決情報データベース更新部が、前記名前解決要求受信部により受信された名前解決要求内の名前と前記名前解決応答送信部に与えられたアドレスを互いに対応づけて前記名前解決情報データベースに記憶させるステップ
を含むことを特徴とする請求項７または８記載の名前解決方法。
【請求項１０】
名前解決装置が行うソケット管理方法であって、
前記名前解決装置は、コンピュータの名前と当該コンピュータのアドレスが互いに対応づけられて記憶される名前解決情報データベースと、他の名前解決装置から送信される名前解決応答の受信に使用するために生成されるソケットの生成時刻であるソケット生成時刻が記憶されるソケット生成時刻記憶部とを備え、
前記ソケット管理方法は、
前記名前解決装置の名前解決要求受信部が、名前を含む名前解決要求を送信したコンピュータから当該名前解決要求を受信するステップと、
前記名前解決装置のアドレス検索部が、当該名前解決要求内の名前に対応づけられたアドレスを前記名前解決情報データベースから検索することを試みるステップと、
前記名前解決装置のソケット更新部が、当該アドレスが検索できなかった場合において、前記ソケット生成時刻記憶部からソケット生成時刻を読み出すステップと、
前記ソケット更新部が、当該ソケット生成時刻と当該アドレスが検索できなかった時刻との差を求めるステップと、
前記ソケット更新部が、当該差が予め設定されたしきい値を超えているか否かを判定するステップと、
前記ソケット更新部が、超えていると判定したソケットを破棄するステップと、
前記ソケット更新部が、当該ソケットとは異なるソケットを生成するステップと、
前記ソケット更新部が、前記ソケット生成時刻記憶部のソケット生成時刻に代えて、当該ソケットのソケット生成時刻を前記ソケット生成時刻記憶部に記憶させるステップと
を含むことを特徴とするソケット管理方法。
【請求項１１】
前記名前解決装置の名前解決要求送信部が、ランダムに生成したトランザクションＩＤと前記名前と前記生成されたソケットを示すポート番号とを含む名前解決要求を生成し、当該名前解決要求を前記他の名前解決装置に送信するステップと、
前記名前解決装置の名前解決応答受信部が、当該名前解決要求に対して前記他の名前解決装置から当該ポート番号宛に送信された名前解決応答を当該ソケットを使用して受信するステップと、
前記名前解決応答受信部が、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定するステップと、
前記名前解決装置の第２のソケット更新部が、当該トランザクションＩＤ同士が一致しないと判定されたときに存在しているソケットを破棄するステップと、
前記第２のソケット更新部が、当該ソケットとは異なるソケットを生成するステップと、
前記第２のソケット更新部が、前記ソケット生成時刻記憶部に記憶されたソケット生成時刻に代えて、当該ソケットのソケット生成時刻を前記ソケット生成時刻記憶部に記憶させるステップと
を含むことを特徴とする請求項１０記載のソケット管理方法。
【請求項１２】
名前解決装置が行うソケット管理方法であって、
前記名前解決装置は、コンピュータの名前と当該コンピュータのアドレスが互いに対応づけられて記憶される名前解決情報データベースと、他の名前解決装置から送信される名前解決応答の受信に使用するために生成されるソケットの生成時刻であるソケット生成時刻が記憶されるソケット生成時刻記憶部とを備え、
前記ソケット管理方法は、
前記名前解決装置の名前解決要求受信部が、名前を含む名前解決要求を送信したコンピュータから当該名前解決要求を受信するステップと、
前記名前解決装置のアドレス検索部が、当該名前解決要求内の名前に対応づけられたアドレスを前記名前解決情報データベースから検索することを試みるステップと、
前記名前解決装置のソケット更新部が、当該アドレスが検索できなかった場合において、前記ソケット生成時刻記憶部からソケット生成時刻を読み出すステップと、
前記ソケット更新部が、当該ソケット生成時刻と当該アドレスが検索できなかった時刻との差を求めるステップと、
前記ソケット更新部が、当該差が予め設定されたしきい値を超えているか否かを判定するステップと、
前記名前解決装置の名前解決要求送信部が、前記ソケット更新部により、超えていないと判定された場合において、ランダムに生成したトランザクションＩＤと前記名前と当該超えていないと判定されたソケットを示すポート番号とを含む名前解決要求を生成し、当該名前解決要求を前記他の名前解決装置に送信するステップと、
前記名前解決装置の名前解決応答受信部が、当該名前解決要求に対して前記他の名前解決装置から当該ポート番号宛に送信された名前解決応答を当該ソケットを使用して受信するステップと、
前記名前解決応答受信部が、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定するステップと、
前記名前解決装置の第２のソケット更新部が、当該トランザクションＩＤ同士が一致しないと判定されたときに存在しているソケットを破棄するステップと、
前記第２のソケット更新部が、当該ソケットとは異なるソケットを生成するステップと、
前記第２のソケット更新部が、前記ソケット生成時刻記憶部に記憶されたソケット生成時刻に代えて、当該ソケットのソケット生成時刻を前記ソケット生成時刻記憶部に記憶させるステップと
を含むことを特徴とするソケット管理方法。
【請求項１３】
請求項１ないし６のいずれかに記載の名前解決装置をコンピュータにより構成するためのコンピュータプログラム。
【請求項１４】
請求項１３記載のコンピュータプログラムが格納されたコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、名前解決装置、名前解決方法およびソケット管理方法に関する。
【背景技術】
【０００２】
ＤＮＳ（Domain Name System）サーバなどと称される名前解決装置は、パーソナルコンピュータなどから送信される名前解決要求内のウェブサーバなどの名前からウェブサーバなどのアドレスを検索し、当該アドレスを含む名前解決応答をパーソナルコンピュータなどに送信することで、パーソナルコンピュータがウェブサーバなどにアクセスできるようにするものである。
【０００３】
図７は、従来の名前解決装置の動作を示すシーケンス図である。
【０００４】
名前解決装置１ａは、ソケットＳＣ１を生成する（ステップＳ１０１）。他のコンピュータ２は、名前解決要求を送信する（ステップＤ１０１）。名前解決装置１ａは、当該名前解決要求内の名前に対応するアドレスを記憶している場合、当該アドレスを含む名前解決応答を生成し、当該名前解決応答をコンピュータ２に送信する。
【０００５】
一方、記憶していない場合、名前解決装置１ａは、ランダムに生成したトランザクションＩＤと当該名前とソケットＳＣ１を示すポート番号とを含む名前解決要求を生成し、名前解決装置３に送信する（ステップＳ１０３）。
【０００６】
名前解決装置１ａは、当該名前解決要求に対して名前解決装置３から当該ポート番号宛に送信された名前解決応答をソケットＳＣ１を使用して受信し（ステップＳ１０５）、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致した場合、当該名前解決応答内のアドレスを含む名前解決応答を生成し、当該名前解決応答をコンピュータ２に送信する（ステップＳ１０７）。これにより、コンピュータ２は、当該アドレスを指定することで、前記名前を有するコンピュータ（サーバなど）にアクセスできるようになる。また、名前解決装置１ａは、次回のために、当該名前とアドレスを対応づけて記憶しておく。
【０００７】
かかる名前解決装置１ａは、悪意のコンピュータ４から攻撃を受けることがある。この攻撃は、コンピュータ２を偽のサーバなどにアクセスさせ、コンピュータ２のユーザが入力したクレジットカード番号などを盗むべくなされる。
【０００８】
コンピュータ２は、例えば、再び名前解決要求を送信し（ステップＤ１０３）、悪意のコンピュータ４が、例えば、偽の名前解決応答を送信してくる（ステップＥ１０１）。    ここで、悪意のコンピュータ４は、無作為に決定したトランザクションＩＤと偽のサーバなどのアドレスとを含む偽の名前解決応答を、無作為に決定したポート番号宛で名前解決装置１ａに対して大量に送信する（ステップＥ１０１）。
【０００９】
悪意のコンピュータ４は、ポート番号を無作為に決定するので、これが正しいポート番号となる可能性は低い。つまり、名前解決装置１ａがソケットＳＣ１を使用して偽の名前解決応答を受信してしまう可能性は低い。しかし、ソケットＳＣ１は生成されたままであり、ポート番号が不変なので、受信されることは皆無ではない（ステップＳ１１５）。しかも、その前に、名前解決装置１ａが、名前解決装置３に名前解決要求を送信しており（ステップＳ１１３）、正規の名前解決応答の送信が、偽の名前解決応答の受信（Ｓ１１５）よりも遅れ（ステップＳ１１７）、当該偽の名前解決応答内のトランザクションＩＤと、当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致してしまった場合、当該名前解決応答内の偽のアドレスを含む名前解決応答が生成され、当該名前解決応答がコンピュータ２に送信されてしまう（ステップＳ１１４）。また、名前解決装置１ａは、当該偽のアドレスを記憶してしまう。
【００１０】
図８は、従来の他の名前解決装置の動作を示すシーケンス図である。
【００１１】
名前解決装置１ｂは、かかる不都合の解決を図ったものであり、コンピュータ２が名前解決要求を送信した場合（ステップＤ２０１）に、ソケットＳＣ１を生成する（ステップＳ２０１）。
【００１２】
名前解決装置１ｂは、当該名前解決要求内の名前に対応するアドレスを記憶していない場合、トランザクションＩＤと名前とソケットＳＣ１のポート番号とを含む名前解決要求を生成し、名前解決装置３に送信する（ステップＳ２０３）。
【００１３】
名前解決装置１ｂは、名前解決応答をソケットＳＣ１を使用して受信し（ステップＳ２０７）、ソケットＳＣ１を破棄し（ステップＳ２０９）、名前解決応答をコンピュータ２に送信する（ステップＳ２１１）。
【００１４】
名前解決装置１ｂは、次の名前解決要求が送信された場合（ステップＤ２１１）、今度は、ソケットＳＣ１とは異なるソケットＳＣ２を生成する（ステップＳ２１１）。
【００１５】
名前解決装置１ｂは、アドレスを記憶していない場合、ソケットＳＣ１のポート番号とは異なるソケットＳＣ２のポート番号を含む名前解決要求を生成し、名前解決装置３に送信する（ステップＳ２１３）。
【００１６】
悪意のコンピュータ４は、例えば、ソケットＳＣ２が存在しているときに偽の名前解決応答を送信してくる（ステップＥ２０１）。この中には、ソケットＳＣ１のポート番号宛の名前解決応答があるかもしれず、仮にソケットＳＣ１が存在しているときに当該名前解決応答が送信されたならば当該名前解決応答は名前解決装置１ｂに受信されてしまうのだが、ソケットＳＣ２はソケットＳＣ１とは異なるので、実際には受信されない。
【００１７】
したがって、名前解決装置１ｂによれば、ソケットＳＣ２のポート番号宛の名前解決応答が送信され、当該名前解決応答を受信してしまう前に、正規の名前解決応答を受信し（ステップＳ２１５）、ソケットＳＣ２を破棄し（ステップＳ２１７）、正規の名前解決応答をコンピュータ２に送信し（ステップＳ２１９）、正規のアドレスを名前解決装置１ｂ自身に記憶する可能性を高めることができる。
【００１８】
なお、下記の非特許文献１には、ソケットを再利用していることの記述（P.5)とランダムにソケットを生成していることの記述(P.7)とがある。
【非特許文献１】Joe Stewart GCIH, "DNS Cache Poisoning - The Next Generation", [online], インターネット<URL:http://www.lurhq.com/dnscache.pdf>
【発明の開示】
【発明が解決しようとする課題】
【００１９】
しかし、名前解決装置１ｂは、ソケットの生成および破棄を名前解決ごとに行うので、ソケットの生成および破棄に多大な処理能力が使用される。
【００２０】
一方、名前解決装置１ａは、ソケットを生成したままとし、当該ソケットを破棄しないので、偽の名前解決応答がコンピュータに送信され、自身も偽のアドレスを記憶してしまう可能性が高い。
【００２１】
本発明は、このような課題に鑑みてなされたものであり、その目的とするところは、ソケットの生成および破棄に使用される処理能力を低減でき且つ偽の名前解決応答を送信するとともに偽のアドレスを記憶してしまう可能性を低減できる名前解決装置、名前解決方法およびソケット管理方法を提供することにある。
【課題を解決するための手段】
【００２２】
上記課題を解決するために、請求項１の本発明は、コンピュータの名前と当該コンピュータのアドレスが互いに対応づけられて記憶される名前解決情報データベースと、名前を含む名前解決要求を送信したコンピュータから当該名前解決要求を受信する名前解決要求受信部と、当該名前を有するコンピュータのアドレスを含む名前解決応答を生成し、当該名前解決応答を当該名前解決要求を送信したコンピュータに送信する名前解決応答送信部と、前記名前解決要求受信部により受信された名前解決要求内の名前に対応づけられたアドレスを前記名前解決情報データベースから検索することを試みるアドレス検索部と、他の名前解決装置から送信される名前解決応答の受信に使用するために生成されるソケットの生成時刻であるソケット生成時刻が記憶されるソケット生成時刻記憶部と、前記アドレスが検索できなかった場合、前記ソケット生成時刻記憶部からソケット生成時刻を読み出し、当該ソケット生成時刻と当該アドレスが検索できなかった時刻との差を求め、当該差が予め設定されたしきい値を超えているか否かを判定するソケット更新部と、前記ソケット更新部により、超えていないと判定された場合において、ランダムに生成したトランザクションＩＤと前記名前と当該超えていないと判定されたソケットを示すポート番号とを含む名前解決要求を生成し、当該名前解決要求を前記他の名前解決装置に送信する名前解決要求送信部と、当該名前解決要求に対して前記名前解決装置から当該ポート番号宛に送信された名前解決応答を当該ソケットを使用して受信し、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定し、一致すると判定した場合、当該名前解決応答内のアドレスを前記名前解決応答送信部に与える名前解決応答受信部とを備えることを特徴とする名前解決装置をもって解決手段とする。
請求項２の本発明は、コンピュータの名前と当該コンピュータのアドレスが互いに対応づけられて記憶される名前解決情報データベースと、名前を含む名前解決要求を送信したコンピュータから当該名前解決要求を受信する名前解決要求受信部と、当該名前を有するコンピュータのアドレスを含む名前解決応答を生成し、当該名前解決応答を当該名前解決要求を送信したコンピュータに送信する名前解決応答送信部と、前記名前解決要求受信部により受信された名前解決要求内の名前に対応づけられたアドレスを前記名前解決情報データベースから検索することを試みるアドレス検索部と、他の名前解決装置から送信される名前解決応答の受信に使用するために生成されるソケットの生成時刻であるソケット生成時刻が記憶されるソケット生成時刻記憶部と、前記アドレスが検索できなかった場合、前記ソケット生成時刻記憶部からソケット生成時刻を読み出し、当該ソケット生成時刻と当該アドレスが検索できなかった時刻との差を求め、当該差が予め設定されたしきい値を超えているか否かを判定し、超えていると判定した場合、当該超えていると判定されたソケットを破棄し、当該ソケットとは異なるソケットを生成し、前記ソケット生成時刻記憶部のソケット生成時刻に代えて、当該ソケットのソケット生成時刻を前記ソケット生成時刻記憶部に記憶させるソケット更新部と、前記アドレスが検索できなかった場合、ランダムに生成したトランザクションＩＤと前記名前と当該超えていないと判定されたソケットまたは当該生成されたソケットを示すポート番号とを含む名前解決要求を生成し、当該名前解決要求を前記他の名前解決装置に送信する名前解決要求送信部と、当該名前解決要求に対して前記名前解決装置から当該ポート番号宛に送信された名前解決応答を当該ソケットを使用して受信し、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定し、一致すると判定した場合、当該名前解決応答内のアドレスを前記名前解決応答送信部に与える名前解決応答受信部とを備えることを特徴とする名前解決装置をもって解決手段とする。
【００２３】
請求項３の本発明は、前記名前解決要求受信部により受信された名前解決要求内の名前と前記名前解決応答送信部に与えられたアドレスを互いに対応づけて前記名前解決情報データベースに記憶させる名前解決情報データベース更新部を備えることを特徴とする請求項１または２記載の名前解決装置をもって解決手段とする。
【００２４】
請求項４の本発明は、コンピュータの名前と当該コンピュータのアドレスが互いに対応づけられて記憶される名前解決情報データベースと、名前を含む名前解決要求を送信したコンピュータから当該名前解決要求を受信する名前解決要求受信部と、前記名前解決要求受信部により受信された名前解決要求内の名前に対応づけられたアドレスを前記名前解決情報データベースから検索することを試みるアドレス検索部と、他の名前解決装置から送信される名前解決応答の受信に使用するために生成されるソケットの生成時刻であるソケット生成時刻が記憶されるソケット生成時刻記憶部と、前記アドレスが検索できなかった場合、前記ソケット生成時刻記憶部からソケット生成時刻を読み出し、当該ソケット生成時刻と当該アドレスが検索できなかった時刻との差を求め、当該差が予め設定されたしきい値を超えているか否かを判定し、超えていると判定した場合、当該超えていると判定されたソケットを破棄し、当該ソケットとは異なるソケットを生成し、前記ソケット生成時刻記憶部のソケット生成時刻に代えて、当該ソケットのソケット生成時刻を前記ソケット生成時刻記憶部に記憶させるソケット更新部とを備えることを特徴とする名前解決装置をもって解決手段とする。
【００２５】
請求項５の本発明は、前記ソケット更新部により、ソケットが生成された場合、ランダムに生成したトランザクションＩＤと前記名前と当該生成されたソケットを示すポート番号とを含む名前解決要求を生成し、当該名前解決要求を前記他の名前解決装置に送信する名前解決要求送信部と、当該名前解決要求に対して前記他の名前解決装置から当該ポート番号宛に送信された名前解決応答を当該ソケットを使用して受信し、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定する名前解決応答受信部と、当該トランザクションＩＤ同士が一致しないと判定された場合、当該一致しないと判定されたときに存在しているソケットを破棄し、当該ソケットとは異なるソケットを生成し、前記ソケット生成時刻記憶部に記憶されたソケット生成時刻に代えて、当該ソケットのソケット生成時刻を前記ソケット生成時刻記憶部に記憶させる第２のソケット更新部と備えることを特徴とする請求項４記載の名前解決装置をもって解決手段とする。
【００２６】
請求項６の本発明は、コンピュータの名前と当該コンピュータのアドレスが互いに対応づけられて記憶される名前解決情報データベースと、名前を含む名前解決要求を送信したコンピュータから当該名前解決要求を受信する名前解決要求受信部と、前記名前解決要求受信部により受信された名前解決要求内の名前に対応づけられたアドレスを前記名前解決情報データベースから検索することを試みるアドレス検索部と、他の名前解決装置から送信される名前解決応答の受信に使用するために生成されるソケットの生成時刻であるソケット生成時刻が記憶されるソケット生成時刻記憶部と、前記アドレスが検索できなかった場合、前記ソケット生成時刻記憶部からソケット生成時刻を読み出し、当該ソケット生成時刻と当該アドレスが検索できなかった時刻との差を求め、当該差が予め設定されたしきい値を超えているか否かを判定するソケット更新部と、前記ソケット更新部により、超えていないと判定された場合において、ランダムに生成したトランザクションＩＤと前記名前と当該超えていないと判定されたソケットを示すポート番号とを含む名前解決要求を生成し、当該名前解決要求を前記他の名前解決装置に送信する名前解決要求送信部と、当該名前解決要求に対して前記他の名前解決装置から当該ポート番号宛に送信された名前解決応答を当該ソケットを使用して受信し、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定する名前解決応答受信部と、当該トランザクションＩＤ同士が一致しないと判定された場合、当該一致しないと判定されたときに存在しているソケットを破棄し、当該ソケットとは異なるソケットを生成し、前記ソケット生成時刻記憶部に記憶されたソケット生成時刻に代えて、当該ソケットのソケット生成時刻を前記ソケット生成時刻記憶部に記憶させる第２のソケット更新部とを備えることを特徴とする名前解決装置をもって解決手段とする。
【００２７】
請求項７の本発明は、名前解決装置が行う名前解決方法であって、前記名前解決装置は、コンピュータの名前と当該コンピュータのアドレスが互いに対応づけられて記憶される名前解決情報データベースと、他の名前解決装置から送信される名前解決応答の受信に使用するために生成されるソケットの生成時刻であるソケット生成時刻が記憶されるソケット生成時刻記憶部とを備え、前記名前解決方法は、前記名前解決装置の名前解決要求受信部が、名前を含む名前解決要求を送信したコンピュータから当該名前解決要求を受信するステップと、前記名前解決装置のアドレス検索部が、当該名前解決要求内の名前に対応づけられたアドレスを前記名前解決情報データベースから検索することを試みるステップと、前記名前解決装置のソケット更新部が、当該アドレスが検索できなかった場合において、前記ソケット生成時刻記憶部からソケット生成時刻を読み出すステップと、前記ソケット更新部が、当該ソケット生成時刻と当該アドレスが検索できなかった時刻との差を求めるステップと、前記ソケット更新部が、当該差が予め設定されたしきい値を超えているか否かを判定するステップと、前記名前解決装置の名前解決要求送信部が、前記ソケット更新部により、超えていないと判定された場合において、ランダムに生成したトランザクションＩＤと前記名前と当該超えていないと判定されたソケットを示すポート番号とを含む名前解決要求を生成し、当該名前解決要求を前記他の名前解決装置に送信するステップと、前記名前解決装置の名前解決応答受信部が、当該名前解決要求に対して前記他の名前解決装置から当該ポート番号宛に送信された名前解決応答を当該ソケットを使用して受信するステップと、前記名前解決応答受信部が、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定するステップと、前記名前解決応答受信部が、一致すると判定した場合において、当該名前解決応答内のアドレスを前記名前解決装置の名前解決応答送信部に与えるステップと、前記名前解決応答送信部が、当該アドレスを含む名前解決応答を生成し、当該名前解決応答を前記コンピュータに送信するステップとを含むことを特徴とする名前解決方法をもって解決手段とする。
【００２８】
請求項８の本発明は、名前解決装置が行う名前解決方法であって、前記名前解決装置は、コンピュータの名前と当該コンピュータのアドレスが互いに対応づけられて記憶される名前解決情報データベースと、他の名前解決装置から送信される名前解決応答の受信に使用するために生成されるソケットの生成時刻であるソケット生成時刻が記憶されるソケット生成時刻記憶部とを備え、前記名前解決方法は、前記名前解決装置の名前解決要求受信部が、名前を含む名前解決要求を送信したコンピュータから当該名前解決要求を受信するステップと、前記名前解決装置のアドレス検索部が、当該名前解決要求内の名前に対応づけられたアドレスを前記名前解決情報データベースから検索することを試みるステップと、前記名前解決装置のソケット更新部が、当該アドレスが検索できなかった場合において、前記ソケット生成時刻記憶部からソケット生成時刻を読み出すステップと、前記ソケット更新部が、当該ソケット生成時刻と当該アドレスが検索できなかった時刻との差を求めるステップと、前記ソケット更新部が、当該差が予め設定されたしきい値を超えているか否かを判定するステップと、前記ソケット更新部が、超えていると判定したソケットを破棄するステップと、前記ソケット更新部が、当該ソケットとは異なるソケットを生成するステップと、前記ソケット更新部が、前記ソケット生成時刻記憶部のソケット生成時刻に代えて、当該ソケットのソケット生成時刻を前記ソケット生成時刻記憶部に記憶させるステップと、前記名前解決装置の名前解決要求送信部が、ランダムに生成したトランザクションＩＤと前記名前と当該生成されたソケットを示すポート番号とを含む名前解決要求を生成し、当該名前解決要求を前記他の名前解決装置に送信するステップと、前記名前解決装置の名前解決応答受信部が、当該名前解決要求に対して前記他の名前解決装置から当該ポート番号宛に送信された名前解決応答を当該ソケットを使用して受信するステップと、前記名前解決応答受信部が、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定するステップと、前記名前解決応答受信部が、一致すると判定した場合において、当該名前解決応答内のアドレスを前記名前解決装置の名前解決応答送信部に与えるステップと、前記名前解決装置の名前解決応答送信部が、当該アドレスを含む名前解決応答を生成し、当該名前解決応答を前記コンピュータに送信するステップとを含むことを特徴とする名前解決方法をもって解決手段とする。
請求項９の本発明は、前記名前解決装置の名前解決情報データベース更新部が、前記名前解決要求受信部により受信された名前解決要求内の名前と前記名前解決応答送信部に与えられたアドレスを互いに対応づけて前記名前解決情報データベースに記憶させるステップを含むことを特徴とする請求項７または８記載の名前解決方法をもって解決手段とする。
請求項１０の本発明は、名前解決装置が行うソケット管理方法であって、前記名前解決装置は、コンピュータの名前と当該コンピュータのアドレスが互いに対応づけられて記憶される名前解決情報データベースと、他の名前解決装置から送信される名前解決応答の受信に使用するために生成されるソケットの生成時刻であるソケット生成時刻が記憶されるソケット生成時刻記憶部とを備え、前記ソケット管理方法は、前記名前解決装置の名前解決要求受信部が、名前を含む名前解決要求を送信したコンピュータから当該名前解決要求を受信するステップと、前記名前解決装置のアドレス検索部が、当該名前解決要求内の名前に対応づけられたアドレスを前記名前解決情報データベースから検索することを試みるステップと、前記名前解決装置のソケット更新部が、当該アドレスが検索できなかった場合において、前記ソケット生成時刻記憶部からソケット生成時刻を読み出すステップと、前記ソケット更新部が、当該ソケット生成時刻と当該アドレスが検索できなかった時刻との差を求めるステップと、前記ソケット更新部が、当該差が予め設定されたしきい値を超えているか否かを判定するステップと、前記ソケット更新部が、超えていると判定したソケットを破棄するステップと、前記ソケット更新部が、当該ソケットとは異なるソケットを生成するステップと、前記ソケット更新部が、前記ソケット生成時刻記憶部のソケット生成時刻に代えて、当該ソケットのソケット生成時刻を前記ソケット生成時刻記憶部に記憶させるステップとを含むことを特徴とするソケット管理方法をもって解決手段とする。
請求項１１の本発明は、前記名前解決装置の名前解決要求送信部が、ランダムに生成したトランザクションＩＤと前記名前と前記生成されたソケットを示すポート番号とを含む名前解決要求を生成し、当該名前解決要求を前記他の名前解決装置に送信するステップと、前記名前解決装置の名前解決応答受信部が、当該名前解決要求に対して前記他の名前解決装置から当該ポート番号宛に送信された名前解決応答を当該ソケットを使用して受信するステップと、前記名前解決応答受信部が、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定するステップと、前記名前解決装置の第２のソケット更新部が、当該トランザクションＩＤ同士が一致しないと判定されたときに存在しているソケットを破棄するステップと、前記第２のソケット更新部が、当該ソケットとは異なるソケットを生成するステップと、前記第２のソケット更新部が、前記ソケット生成時刻記憶部に記憶されたソケット生成時刻に代えて、当該ソケットのソケット生成時刻を前記ソケット生成時刻記憶部に記憶させるステップとを含むことを特徴とする請求項１０記載のソケット管理方法をもって解決手段とする。
請求項１２の本発明は、名前解決装置が行うソケット管理方法であって、前記名前解決装置は、コンピュータの名前と当該コンピュータのアドレスが互いに対応づけられて記憶される名前解決情報データベースと、他の名前解決装置から送信される名前解決応答の受信に使用するために生成されるソケットの生成時刻であるソケット生成時刻が記憶されるソケット生成時刻記憶部とを備え、前記ソケット管理方法は、前記名前解決装置の名前解決要求受信部が、名前を含む名前解決要求を送信したコンピュータから当該名前解決要求を受信するステップと、前記名前解決装置のアドレス検索部が、当該名前解決要求内の名前に対応づけられたアドレスを前記名前解決情報データベースから検索することを試みるステップと、前記名前解決装置のソケット更新部が、当該アドレスが検索できなかった場合において、前記ソケット生成時刻記憶部からソケット生成時刻を読み出すステップと、前記ソケット更新部が、当該ソケット生成時刻と当該アドレスが検索できなかった時刻との差を求めるステップと、前記ソケット更新部が、当該差が予め設定されたしきい値を超えているか否かを判定するステップと、前記名前解決装置の名前解決要求送信部が、前記ソケット更新部により、超えていないと判定された場合において、ランダムに生成したトランザクションＩＤと前記名前と当該超えていないと判定されたソケットを示すポート番号とを含む名前解決要求を生成し、当該名前解決要求を前記他の名前解決装置に送信するステップと、前記名前解決装置の名前解決応答受信部が、当該名前解決要求に対して前記他の名前解決装置から当該ポート番号宛に送信された名前解決応答を当該ソケットを使用して受信するステップと、前記名前解決応答受信部が、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定するステップと、前記名前解決装置の第２のソケット更新部が、当該トランザクションＩＤ同士が一致しないと判定された場合、当該一致しないと判定されたときに存在しているソケットを破棄するステップと、前記第２のソケット更新部が、当該ソケットとは異なるソケットを生成するステップと、前記第２のソケット更新部が、前記ソケット生成時刻記憶部に記憶されたソケット生成時刻に代えて、当該ソケットのソケット生成時刻を前記ソケット生成時刻記憶部に記憶させるステップとを含むことを特徴とするソケット管理方法をもって解決手段とする。
【００２９】
請求項１３の本発明は、請求項１ないし６のいずれかに記載の名前解決装置をコンピュータにより構成するためのコンピュータプログラム。
【００３１】
請求項１４の本発明は、請求項１３記載のコンピュータプログラムが格納されたコンピュータ読み取り可能な記録媒体をもって解決手段とする。
【発明の効果】
【００３２】
本発明によれば、ソケットの生成および破棄に使用される処理能力を低減でき且つ偽の名前解決応答を送信するとともに偽のアドレスを記憶してしまう可能性を低くすることができる。
【発明を実施するための最良の形態】
【００３３】
以下、本発明の実施の形態に係る名前解決装置、名前解決方法およびソケット管理方法を図面を参照して説明する。
【００３４】
［第１の実施の形態］
図１は、第１の実施の形態に係る名前解決装置の構成を示すブロック図である。
【００３５】
名前解決装置１は、ウェブサーバなどの他のコンピュータの名前と当該コンピュータのアドレスが互いに対応づけられて記憶される名前解決情報データベース１１と、名前を含む名前解決要求を送信したパーソナルコンピュータなどのコンピュータから当該名前解決要求を受信する名前解決要求受信部１２と、当該名前を有するコンピュータのアドレスを含む名前解決応答を生成し、当該名前解決応答を当該名前解決要求を送信したコンピュータに送信する名前解決応答送信部１３と、名前解決要求受信部１２により受信された名前解決要求内の名前に対応づけられたアドレスを名前解決情報データベース１１から検索することを試み、当該アドレスが検索できた場合、当該アドレスを名前解決応答送信部１３に与えるアドレス検索部１４と、図示しない名前解決装置から送信される名前解決応答の受信に使用されるソケットの生成時刻であるソケット生成時刻が記憶されるソケット生成時刻記憶部１５と、最初のソケットを生成し、当該ソケットのソケット生成時刻をソケット生成時刻記憶部１５に記憶させるソケット生成部１６と、アドレスが検索できなかった場合、ソケット生成時刻記憶部１５からソケット生成時刻を読み出し、当該ソケット生成時刻と当該アドレスが検索できなかった時刻との差を求め、当該差が予め設定されたしきい値を超えているか否かを判定し、超えていると判定した場合、当該超えていると判定されたときに存在しているソケットを破棄し、当該ソケットとは異なるソケットを生成し、ソケット生成時刻記憶部１５のソケット生成時刻に代えて、当該ソケットのソケット生成時刻をソケット生成時刻記憶部１５に記憶させるソケット更新部１７と、ランダムに生成したトランザクションＩＤとアドレスが検索できなかったときに先だって名前解決要求受信部１２により受信された名前解決要求内の名前と当該生成されたソケットを示すポート番号とを含む名前解決要求を生成し、当該名前解決要求を図示しない名前解決装置に送信する名前解決要求送信部１８と、当該名前解決要求に対して図示しない名前解決装置から当該ポート番号宛に送信された名前解決応答を当該ソケットを使用して受信し、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定し、一致すると判定した場合、当該名前解決応答内のアドレスを名前解決応答送信部１３に与える名前解決応答受信部１９と、名前解決応答受信部１９により名前解決応答送信部１３にアドレスが与えられたときに先だって名前解決要求受信部１２により受信された名前解決要求内の名前と当該アドレスを互いに対応づけて名前解決情報データベース１１に記憶させる名前解決情報データベース更新部１１０と、トランザクションＩＤが記憶されるトランザクションＩＤ記憶部１１１と、現在時刻を計時するタイマー１１２と、しきい値が記憶されるしきい値記憶部１１３とを備える。
【００３６】
（第１の実施の形態に係る名前解決装置１の動作）
図２は、名前解決装置１の動作を示すフローチャートである。図３は、名前解決装置１の動作を示すシーケンス図である。
【００３７】
まず、名前解決装置１のソケット生成部１６は、ソケットＳＣ１を生成し（ステップＳ１）、タイマー１１２から現在時刻すなわちソケットＳＣ１を生成した時刻であるソケット生成時刻を取得し、ソケット生成時刻をソケット生成時刻記憶部１５に記憶させる（ステップＳ３）。
【００３８】
次に、名前解決要求受信部１２が、他のコンピュータ２から送信される名前解決要求を待機する。名前解決要求が送信され（ステップＤ１）、名前解決要求受信部１２が名前解決要求を受信した（ステップＳ５：ＹＥＳ）なら、アドレス検索部１４は、名前解決要求内の名前に対応づけられたアドレスを名前解決情報データベース１１から検索することを試みる（ステップＳ７）。アドレス検索部１４は、当該アドレスが検索できた場合（ステップＳ９：ＹＥＳ）、当該アドレスを名前解決応答送信部１３に与え、名前解決応答送信部１３は、当該アドレスを含む名前解決応答を生成し、当該名前解決応答を当該名前解決要求を送信したコンピュータ２に送信し（ステップＳ１１）、制御はステップＳ５に戻る。
【００３９】
アドレスが検索できなかった場合、ソケット更新部１７は、まず、タイマー１１２から現在時刻すなわちアドレスが検索できなかった時刻を取得する（ステップＳ１３）。ソケット更新部１７は、また、ソケット生成時刻記憶部１５からソケット生成時刻を読み出す（ステップＳ１５）。次に、ソケット更新部１７は、ソケット生成時刻とアドレスが検索できなかった時刻との差を求める（ステップＳ１７）。ソケット更新部１７は、しきい値記憶部１１３からしきい値を読み出し、差がしきい値を超えているか否かを判定する（ステップＳ１９）。超えていないと判定した場合（ステップＳ１７：ＮＯ）、名前解決要求送信部１８が、トランザクションＩＤをランダムに生成し、当該トランザクションＩＤをトランザクションＩＤ記憶部１１１に記憶させ、当該トランザクションＩＤとアドレスが検索できなかったときに先だって名前解決要求受信部１２により受信された名前解決要求内の名前とこのときに存在しているソケット（ここでは当該超えていないと判定されたときに存在しているソケットＳＣ１）を示すポート番号とを含む名前解決要求を生成し、当該名前解決要求を他の名前解決装置３に送信する（ステップＳ２１）。
【００４０】
トランザクションＩＤは、例えば、１６ビットの情報であり、１６ビットで表現できる約６５０００の値の中の１つがランダムに生成される。
【００４１】
ポート番号も、例えば、１６ビットの情報であり、１６ビットで表現できる約６５０００の値の中の１つがソケットに割り当てられる。
【００４２】
名前解決装置３は、例えば、ＤＮＳ権威サーバなどと称されるものである。名前解決装置３は、名前解決装置１などから送信される名前解決要求内の名前から当該名前を有するコンピュータのアドレスを検索し、当該アドレスを含む名前解決応答を名前解決装置１などに送信するものである。
【００４３】
次に、名前解決応答受信部１９が、当該名前解決要求に対して名前解決装置３から当該ポート番号宛に送信された名前解決応答をソケットＳＣ１を使用して受信する（ステップＳ２３）。次に、名前解決応答受信部１９は、トランザクションＩＤ記憶部１１１からトランザクションＩＤすなわち名前解決装置３に送信された名前解決要求内のトランザクションＩＤと同じものを読み出し、当該名前解決応答内のトランザクションＩＤとトランザクションＩＤ記憶部１１１から読み出したトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定する（ステップＳ２５）。一致すると判定した場合（ステップＳ２５：ＹＥＳ）、名前解決応答受信部１９は、当該名前解決応答内のアドレスを名前解決応答送信部１３に与え、名前解決応答送信部１３は、当該アドレスを含む名前解決応答を生成し、当該名前解決応答を当該アドレスが与えられたときに先だって名前解決要求受信部１２により受信された名前解決要求を送信したコンピュータ２に送信する（ステップＳ２７）。
【００４４】
次に、名前解決応答受信部１９は、当該名前解決応答内のアドレスを名前解決情報データベース更新部１１０に与え、名前解決情報データベース更新部１１０は、当該アドレスが与えられたときに先だって名前解決要求受信部１２により受信された名前解決要求内の名前と当該アドレスを互いに対応づけて名前解決情報データベース１１に記憶させる（ステップＳ２９）。トランザクションＩＤ同士が一致しないと判定された場合（ステップＳ２５：ＮＯ）、または、名前とアドレスが名前解決情報データベース１１に記憶された後、制御はステップＳ５に戻る。
【００４５】
上記の動作は、コンピュータ２以外のコンピュータから名前解決要求が送信された場合においても同様になされる。また、上記の動作は、名前解決要求が送信されるタイミングによらず、同様になされる。
【００４６】
例えば、コンピュータ２から次の名前解決要求が送信され（ステップＤ３）、その後、ソケット生成時刻とアドレスが検索できなかった時刻との差がしきい値を超えていると判定された場合（ステップＳ１９：ＹＥＳ）、ソケット更新部１７は、超えていると判定されたときに存在しているソケットすなわちソケットＳＣ１を破棄し（ステップＳ３１）、当該ソケットとは異なるソケットＳＣ２を生成する（ステップＳ３３）。ソケットＳＣ１を示すポート番号とソケットＳＣ２を示すポート番号は互いに異なる。
【００４７】
ソケット更新部１７は、また、タイマー１１２から現在時刻すなわちソケットＳＣ２のソケット生成時刻を取得し、ソケット生成時刻記憶部１５のソケット生成時刻に代えて、当該ソケットＳＣ２のソケット生成時刻をソケット生成時刻記憶部１５に記憶させる（ステップＳ３５）。
【００４８】
次に、名前解決要求送信部１８が、トランザクションＩＤをランダムに生成し、当該トランザクションＩＤをトランザクションＩＤ記憶部１１１に記憶させ、当該トランザクションＩＤとアドレスが検索できなかったときに先だって名前解決要求受信部１２により受信された名前解決要求内の名前とこのときに存在しているソケット（ここでは当該生成されたソケットＳＣ２）を示すポート番号とを含む名前解決要求を生成し、当該名前解決要求を他の名前解決装置３に送信する（ステップＳ２１）。ステップＳ２３以降の動作説明は重複になるので省略する。
【００４９】
悪意のコンピュータ４は、例えば、ソケットＳＣ２が存在しているときに偽の名前解決応答を送信してくる（ステップＥ５１）。この中には、ソケットＳＣ１のポート番号宛の名前解決応答があるかもしれず、仮にソケットＳＣ１が存在しているときに当該名前解決応答が送信されたならば当該名前解決応答は名前解決装置１に受信されてしまうのだが、ソケットＳＣ２はソケットＳＣ１とは異なるので、実際には受信されない。  
したがって、悪意のコンピュータ４からソケットＳＣ２のポート番号宛の名前解決応答が送信され、当該名前解決応答を受信してしまう前に、正規の名前解決応答を受信でき（ステップＳ２３）、正規の名前解決応答をコンピュータ２に送信でき（ステップＳ２７）、正規のアドレスを名前解決装置１に記憶できる可能性を高めることができる。
【００５０】
つまり、名前解決装置１は、ソケットを生成したままとせず、ソケットの生成および破棄を定期的に行うので、偽の名前解決応答がコンピュータ２に送信され、自身も偽のアドレスを記憶してしまう可能性を低減することができる。
【００５１】
また、名前解決装置１は、ソケットの生成および破棄を、ソケット生成時刻とアドレスが検索できなかった時刻との差がしきい値を超えている判定された場合に行うので、しきい値を適切に定めれば、ソケットの生成および破棄を名前解決ごとに行う場合に比べて、単位時間あたりのソケットの生成および破棄の回数を少なくでき、その結果、ソケットの生成および破棄に使用される処理能力を低減することができる。
【００５２】
例えば、名前解決装置１が１秒間に１５０００回の名前解決を行う場合、しきい値を５００［ミリ秒］とすれば、同じソケットで名前解決装置３から７５００回の名前解決応答を受信できるので、ソケットの生成および破棄に使用される処理能力を７５００分の１にすることができる。
【００５３】
すなわち、名前解決装置１によれば、ソケットの生成および破棄に使用される処理能力を低減でき且つ偽の名前解決応答を送信するとともに偽のアドレスを記憶してしまう可能性を低くすることができる
［第２の実施の形態］
図４は、第２の実施の形態に係る名前解決装置の構成を示すブロック図である。
【００５４】
名前解決装置１Ａは、名前解決装置１の構成要素と同じものを備えるので、これらには同一符号を付し、詳細説明を省略する。
【００５５】
名前解決装置１Ａは、名前解決装置１の構成要素に加え、名前解決応答受信部１９によりトランザクションＩＤ同士が一致しないと判定された場合、当該一致しないと判定されたときに存在しているソケットを破棄し、当該ソケットとは異なるソケットを生成し、ソケット生成時刻記憶部１５に記憶されたソケット生成時刻に代えて、当該ソケットのソケット生成時刻をソケット生成時刻記憶部１５に記憶させる第２のソケット更新部１１４を備える。
【００５６】
（第２の実施の形態に係る名前解決装置１Ａの動作）
図５は、名前解決装置１Ａの動作を示すフローチャートである。図６は、名前解決装置１Ａの動作を示すシーケンス図である。
【００５７】
名前解決装置１Ａのフローチャートは、名前解決装置１のフローチャートを構成するステップと同じものを含むので、これらには同一符号を付し、詳細説明を省略する。
【００５８】
名前解決装置１Ａでは、トランザクションＩＤ同士が一致しないと判定された場合（ステップＳ２５：ＮＯ）、制御がステップＳ５に戻るのではなく、第２のソケット更新部１１４が、一致しないと判定されたときに存在しているソケットを破棄し（ステップＳ４１）、当該ソケットとは異なるソケットを生成する（ステップＳ１）。ソケット更新部１７は、また、タイマー１１２から現在時刻すなわち新たなソケットのソケット生成時刻を取得し、ソケット生成時刻記憶部１５のソケット生成時刻に代えて、当該ソケットのソケット生成時刻をソケット生成時刻記憶部１５に記憶させ（ステップＳ３）、制御はステップＳ５に移る。
【００５９】
悪意のコンピュータ４は、例えば、ソケットＳＣ２が存在しているときに偽の名前解決応答を送信してくる（ステップＥ５１）。この中に、ソケットＳＣ２のポート番号宛の名前解決応答があった場合、当該名前解決応答は名前解決装置１Ａに受信される（ステップＥ５１１）。
【００６０】
しかし、トランザクションＩＤ同士が一致することは稀であり、多くの場合、一致しないと判定され、そのときに存在しているソケットが破棄される（ステップＳ４１）、新たなソケットＳＣ３が生成される（ステップＳ１）。
【００６１】
コンピュータ２は、例えば、ソケットＳＣ３が存在しているときに名前解決要求を送信し（ステップＤ５）、悪意のコンピュータ４は、例えば、ソケットＳＣ３が存在しているときに偽の名前解決応答を送信してくる（ステップＥ５３）。この中には、ソケットＳＣ２のポート番号宛の名前解決応答があるかもしれず、仮にソケットＳＣ２が存在しているときに当該名前解決応答が送信されたならば当該名前解決応答は名前解決装置１Ａに受信されてしまうのだが、ソケットＳＣ３はソケットＳＣ２とは異なるので、実際には受信されない。  
したがって、悪意のコンピュータ４からソケットＳＣ３のポート番号宛の名前解決応答が送信され、当該名前解決応答を受信してしまう前に、正規の名前解決応答を受信でき（ステップＳ２３）、正規の名前解決応答をコンピュータ２に送信でき（ステップＳ２７）、正規のアドレスを名前解決装置１Ａに記憶できる可能性を高めることができる。
【００６２】
つまり、名前解決装置１Ａは、名前解決装置１と同様に、ソケットの生成および破棄を定期的に行うので、ソケットを生成したままにする場合に比べ、偽の名前解決応答がコンピュータ２に送信され、自身も偽のアドレスを記憶してしまう可能性を低減することができる。
【００６３】
また、名前解決装置１Ａは、名前解決装置１と同様に、ソケットの生成および破棄を、ソケット生成時刻とアドレスが検索できなかった時刻との差がしきい値を超えている判定された場合に行うので、しきい値を適切に定めれば、ソケットの生成および破棄を名前解決ごとに行う場合に比べ、ソケットの生成および破棄に使用される処理能力を低減することができる。
【００６４】
すなわち、名前解決装置１Ａによれば、ソケットの生成および破棄に使用される処理能力を低減でき且つ偽の名前解決応答を送信するとともに偽のアドレスを記憶してしまう可能性を低くすることができる
また、名前解決装置１Ａは、ソケットの生成および破棄を、トランザクションＩＤ同士が一致しないと判定された場合に行うので、悪意のコンピュータ４が偽の名前解決応答を送信し始めた後においては、トランザクションＩＤ同士が一致しない場合が通常より多くなるので、単位時間あたりのソケットの生成および破棄の回数が多くなり、偽の名前解決応答は受信されにくくなる。よって、悪意のコンピュータ４が偽の名前解決応答を送信し始めた後においては、偽の名前解決応答を送信するとともに偽のアドレスを記憶してしまう可能性を一層低くできる。
【００６５】
一方、悪意のコンピュータ４が偽の名前解決応答を送信し始める前においては、前述のとおり、ソケットの生成および破棄は定期的に行われるので、ソケットの生成および破棄を名前解決ごとに行う場合に比べ、ソケットの生成および破棄に使用される処理能力を低減することができる。
【００６６】
なお、本実施の形態に係る名前解決装置をコンピュータに構成するためのコンピュータプログラム、または、当該名前解決装置が行った上記の名前解決方法またはソケット管理方法を当該名前解決装置に実行させるためのコンピュータプログラムは、半導体メモリ、磁気ディスク、光ディスク、光磁気ディスク、磁気テープなどのコンピュータ読み取り可能な記録媒体に格納し、陳列などして流通させたり、当該コンピュータプログラムをインターネットなどの通信網を介して伝送させてもよい。
【図面の簡単な説明】
【００６７】
【図１】第１の実施の形態に係る名前解決装置の構成を示すブロック図である。
【図２】名前解決装置１の動作を示すフローチャートである。
【図３】名前解決装置１の動作を示すシーケンス図である。
【図４】第２の実施の形態に係る名前解決装置の構成を示すブロック図である。
【図５】名前解決装置１Ａの動作を示すフローチャートである。
【図６】名前解決装置１Ａの動作を示すシーケンス図である。
【図７】従来の名前解決装置の動作を示すシーケンス図である。
【図８】従来の他の名前解決装置の動作を示すシーケンス図である。
【符号の説明】
【００６８】
１、１Ａ、３…名前解決装置
２…コンピュータ
４…悪意のコンピュータ
１１…名前解決情報データベース
１２…名前解決要求受信部
１３…名前解決応答送信部
１４…アドレス検索部
１５…ソケット生成時刻記憶部
１６…ソケット生成部
１７…ソケット更新部
１８…名前解決要求送信部
１９…名前解決応答受信部
１１０…名前解決情報データベース更新部
１１１…トランザクションＩＤ記憶部
１１２…タイマー
１１３…しきい値記憶部
１１４…第２のソケット更新部
【図１】
0004568751.tif 000002
【図２】
0004568751.tif 000003
【図３】
0004568751.tif 000004
【図４】
0004568751.tif 000005
【図５】
0004568751.tif 000006
【図６】
0004568751.tif 000007
【図７】
0004568751.tif 000008
【図８】
0004568751.tif 000009