(57)【要約】  アドレス変換装置（１００）は、ＬＡＮ（１０１）内のＰＡ１からＷＡＮ（１０２）内のＧＡ１に対して送信する第２のパケット（１つ目のパケット）のプライベートＩＰ（ＰＡ１）をグローバルＩＰであるＧＡ３に変換すると共に、第２のパケットのプライベートポート番号（３０００）をグローバルｐｏｒｔである１０２４に変換する。そして、ＰＡ１からＧＡ２への第１のパケット（３つ目のパケット）のあて先ＩＰ（ＧＡ２）が第２のパケットのあて先ＩＰ（ＧＡ１）と異なるので、アドレス変換装置（１００）は、第１のパケットのプライベートＩＰ（ＰＡ１）を、第２のパケットに割り当てられたグローバルＩＰと同一であるＧＡ３に変換すると共に、第１のパケットのプライベートポート番号（３００２）を、第２のパケットに割り当てられたグローバルポート番号と同一である１０２４に変換する。
2011052082.tif 000002
【特許請求の範囲】
【請求項１】
プライベートネットワーク内の通信装置からグローバルネットワーク内の通信装置へのパケットを受信する受信手段と、
前記受信手段により受信された第１のパケットのあて先アドレスが、前記第１のパケットよりも前に受信された第２のパケットのあて先アドレスと同一であるか否かを判断するアドレス判断手段と、
前記アドレス判断手段により異なると判断された場合、前記第１のパケットの送信元プライベートアドレスを、前記第２のパケットに割り当てられた送信元グローバルアドレスに変換する変換手段と、
前記変換手段により変換された変換後の第１のパケットを送信する送信手段と、
を備えることを特徴とするアドレス変換装置。
【請求項２】
前記変換手段は、
前記アドレス判断手段により異なると判断された場合、さらに、前記第１のパケットの送信元プライベートポート番号を、前記第２のパケットの送信元グローバルポート番号に変換し、
前記送信手段は、
前記変換手段により変換された変換後の第１のパケットを送信することを特徴とする請求項１に記載のアドレス変換装置。
【請求項３】
前記アドレス判断手段は、
前記第１のパケットのあて先アドレスおよびポート番号が、前記第２のパケットのあて先アドレスおよびポート番号と同一であり、かつ前記第１のパケットの送信元プライベートアドレスおよびポート番号が、前記第２のパケットの送信元プライベートアドレスおよびポート番号と同一であるか否かを判断し、
前記変換手段は、
前記アドレス判断手段によりすべて同一であると判断された場合、前記第１のパケットの送信元プライベートアドレスおよびポート番号を、前記第２のパケットの送信元プライベートアドレスおよびポート番号に変換し、
前記送信手段は、
前記変換手段により変換された変換後の第１のパケットを送信することを特徴とする請求項２に記載のアドレス変換装置。
【請求項４】
前記アドレス判断手段は、
前記第１のパケットのあて先アドレスおよびポート番号が、前記第２のパケットのあて先アドレスおよびポート番号と同一であり、かつ前記第１のパケットの送信元プライベートアドレスおよびポート番号が、前記第２のパケットの送信元プライベートアドレスおよびポート番号と同一であるか否かを判断し、
前記変換手段は、
前記アドレス判断手段により前記第１のパケットのあて先アドレスが、前記第２のパケットのあて先アドレスと同一であると判断された場合において、前記第１のパケットのあて先ポート番号が、前記第２のパケットのあて先ポート番号と異なると判断された場合、または前記第１のパケットの送信元プライベートアドレスが、前記第２のパケットの送信元プライベートアドレスと異なると判断された場合、または前記第１のパケットの送信元プライベートポート番号が、前記第２のパケットの送信元プライベートポート番号と異なると判断された場合、前記第１のパケットの送信元プライベートアドレスを、前記第２のパケットの送信元グローバルアドレスに変換すると共に、前記第１のパケットの送信元プライベートポート番号を、前記送信元グローバルアドレスと対になるグローバルポート番号群内の前記第２のパケットの送信元グローバルポート番号と異なるグローバルポート番号に変換し、
前記送信手段は、
前記変換手段により変換された変換後の第１のパケットを送信することを特徴とする請求項２に記載のアドレス変換装置。
【請求項５】
前記第２のパケットのあて先アドレスと前記第２のパケットの送信元グローバルアドレスとを組み合わせとして設定する設定手段と、
前記設定手段により設定された組み合わせが、当該組み合わせ以前に設定され、第１のリスト構造内で関連付けられた一連の組み合わせの中にあるか否かを判断する第１の判断手段と、
前記一連の組み合わせが関連付けられた第１のリスト構造の最後尾に、前記第１の判断手段によりないと判断された組み合わせを関連付ける第１のリスト構造生成手段と、
前記設定手段により設定された各組み合わせについての割り当て済みポートを示す第２のリスト構造内で関連付けられた一連のノードの中に、前記第２のパケットに割り当てられた送信元グローバルポート番号を有するノードがあるか否かを判断する第２の判断手段と、
前記２の判断手段によりないと判断された場合、前記第２のパケットに割り当てられた送信元グローバルポート番号を有するノードを生成するノード生成手段と、
前記一連のノードが関連付けられた第２のリスト構造内の最後尾に前記ノード生成手段により生成されたノードを関連付ける第２のリスト構造生成手段と、
を備えることを特徴とする請求項４に記載のアドレス変換装置。
【請求項６】
前記第２のリスト構造生成手段は、
前記第２のパケットに割り当てられたグローバルポート番号と前記第２のリスト構造内の各ノードが有するグローバルポート番号に基づいて、前記第２のリスト構造内に前記ノード生成手段により生成されたノードを番号順に関連付けることを特徴とする請求項５に記載のアドレス変換装置。
【請求項７】
前記第１のパケットのあて先アドレスと一致する前記第２のパケットのグローバルアドレスを含む前記組み合わせを、前記第１のリスト構造生成手段により生成された第１のリスト構造内を順に探索する第１の探索手段と、
前記第１の探索手段により探索された組み合わせについての第２のリスト構造内の一連のノードが有するグローバルポート番号を順に探索して前記グローバルポート番号群の中で空いているグローバルポート番号を探索する第２の探索手段と、
を備え、
前記変換手段は、
前記第１のパケットの送信元プライベートアドレスを、前記第２のパケットの送信元グローバルアドレスに変換すると共に、前記第１のパケットの送信元プライベートポート番号を、前記第２の探索手段により探索されたグローバルポート番号に変換し、
前記送信手段は、
前記変換手段により変換された変換後の第１のパケットを送信することを特徴とする請求項５に記載のアドレス変換装置。
【請求項８】
前記第２の探索手段は、
前記第１の探索手段により探索された組み合わせについての前記第２のリスト構造内の各ノードを所定のノード数まで順に探索し、
前記変換手段は、
前記第１のパケットの送信元プライベートアドレスを、前記第２のパケットの送信元グローバルアドレスに変換すると共に、前記第１のパケットの送信元プライベートポート番号を、前記第２の探索手段により探索されたグローバルポート番号に変換し、
前記送信手段は、
前記変換手段により変換された変換後の第１のパケットを送信することを特徴とする請求項７に記載のアドレス変換装置。
【請求項９】
前記変換手段は、
前記第２の探索手段により前記空いているグローバルポート番号が探索されなかった場合、前記第１のパケットの送信元プライベートアドレスを、前記第２のパケットに割り当てられた送信元グローバルアドレスと異なる送信元グローバルアドレスに変換し、前記第１のパケットの送信元プライベートポート番号を、前記異なる送信元グローバルアドレスと対になるグローバルポート群の中で選択されたグローバルポート番号に変換し、
前記送信手段は、
前記変換手段により変換された変換後の第１のパケットを送信することを特徴とする請求項８に記載のアドレス変換装置。
【請求項１０】
前記受信手段は、
前記グローバルネットワーク内の通信装置から前記プライベートネットワーク内の通信装置へのパケットを受信し、
前記判断手段は、
前記受信手段により受信された第３のパケットのあて先アドレスおよびポート番号が、前記変換後の第１のパケットの送信元グローバルアドレスおよびポート番号と同一であり、かつ前記第３のパケットの送信元グローバルアドレスおよびポート番号が、前記第１のパケットのあて先アドレスおよびポート番号が同一であるか否かを判断し、
前記変換手段は、
前記判断手段により同一であると判断された場合、前記第３のパケットのあて先アドレスおよびポート番号を、前記第１のパケットの送信元プライベートアドレスおよびポート番号に変換し、
前記送信手段は、
前記変換手段により変換された変換後の第３のパケットを送信することを特徴とする請求項１ないし８に記載のアドレス変換装置。
【請求項１１】
コンピュータが、
プライベートネットワーク内の通信装置からグローバルネットワーク内の通信装置へのパケットを受信する受信工程と、
前記受信工程により受信された第１のパケットのあて先アドレスが、前記第１のパケットよりも前に受信された第２のパケットのあて先アドレスと同一であるか否かを判断するアドレス判断工程と、
前記アドレス判断工程により異なると判断された場合、前記第１のパケットの送信元プライベートアドレスを、前記第２のパケットに割り当てられた送信元グローバルアドレスに変換する変換工程と、
前記変換工程により変換された変換後の第１のパケットを送信する送信工程と、
を実行することを特徴とするアドレス変換方法。
【請求項１２】
コンピュータを、
プライベートネットワーク内の通信装置からグローバルネットワーク内の通信装置へのパケットを受信する受信手段、
前記受信手段により受信された第１のパケットのあて先アドレスが、前記第１のパケットよりも前に受信された第２のパケットのあて先アドレスと同一であるか否かを判断するアドレス判断手段、
前記アドレス判断手段により異なると判断された場合、前記第１のパケットの送信元プライベートアドレスを、前記第２のパケットに割り当てられた送信元グローバルアドレスに変換する変換手段、
前記変換手段により変換された変換後の第１のパケットを送信する送信手段、
として機能させることを特徴とするアドレス変換プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プライベートネットワークとグローバルネットワークとの間で通信されるパケットのアドレスを変換するアドレス変換装置、アドレス変換方法、およびアドレス変換プログラムに関する。
【背景技術】
【０００２】
現在のインターネットの通信環境では、ＩＰｖ４（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  ｖｅｒｓｉｏｎ  ４）が用いられており、インターネット上では、ＩＰｖ４のグローバルアドレス（全世界で一意に割り当てられたアドレス）での通信のみ行われている。【０００３】
しかしながら、ネットワーク接続端末数の増加や端末の脆弱性を突く攻撃の増大に対する防御の必要性の高まりから、企業や各家庭では、企業内や各家庭内でのみ使用可能なプライベートアドレスを用いて通信を行っている。インターネットを経由した先の端末と通信するときは、一般的には、アドレス変換装置を用いてプライベートアドレスからグローバルアドレスに変換を行っている（ＮＡＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｅ））（下記特許文献１および２を参照。）。なお、グローバルアドレスの数×ポート番号の数のコネクションに対しては、一意に、グローバルアドレスとポート番号を割り当てることができる。【０００４】
アドレス変換については、たとえば、企業の場合は企業ネットワークとインターネットの境界上で実施し、各家庭においては、各家庭に置かれたブロードバンドルータで実施している。【０００５】
しかしながら、近年のネットワーク接続端末数の増大度合いは著しく、ＩＰｖ４アドレスが枯渇すると想定されており、インターネットに通信するためのＩＰｖ４グローバルアドレスが足りなくなる状況が近づいてきている。【０００６】
また、複数の端末に同一のグローバルアドレスを集約可能なアドレス変換は有効ではある。しかしながら、各家庭の場合は、ブロードバンドルータでアドレス変換を実施しているので家庭単位に１つのグローバルアドレスを割り当てているため、アドレスの割り当てはあまり効率化されていない。【０００７】
そのため、各家庭に置かれたブロードバンドルータでアドレス変換をするのではなく、ＩＳＰ（Ｉｎｔｅｒｎｅｔ  Ｓｅｒｖｉｃｅ  Ｐｒｏｖｉｄｅｒ）等のキャリア事業者でまとめてアドレス変換を実施するキャリアグレードＮＡＴが知られている。キャリアグレードＮＡＴとは非常に大規模にＮＡＴを実施する装置であり、ＩＳＰに加入している全端末の通信を一手に引き受け、アドレス変換を実施する装置である。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００２−２０４２５２号公報
【特許文献２】特開２０００−１５６７１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、キャリアグレードＮＡＴであってもアドレス変換方式は各家庭のブロードバンドルータが実施するＮＡＴのアドレス変換方式と同一である。したがって、一つの通信（ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）／ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）等の通信）単位にグローバルＩＰとポート番号の組をユニークに割り当てる。そして、通信が終了したら別の通信に再割り当てすることで、グローバルアドレスの利用を効率化していた。【００１０】
しかしながら、現在はインターネットに接続する端末の数／種類共に非常に増大していると共に、一度の通信で使用するＴＣＰコネクションの数が増大している問題点があった。たとえば、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）の利用者がブラウザでＷｅｂ画面を見るだけでも、従来では１ＴＣＰコネクションで行っていたのが、近年では数百のＴＣＰコネクションで行う場合がある。【００１１】
また、グローバルアドレスの使用数が増大しているという問題点があるため、キャリアグレードＮＡＴを導入してグローバルアドレス使用の効率化がそれほど実現できないといった問題点があった（具体的には、ポート番号は約６万５千個なので、６万５千のＴＣＰコネクションやＵＤＰ通信が発生すると、別のグローバルＩＰアドレスを用意しなければならなくなるためである。）。【００１２】
本発明は、上述した従来技術による問題点を解消するため、グローバルアドレスおよびポート番号の割り当ての効率化を図り、グローバルアドレスの使用数を削減することができるアドレス変換装置、アドレス変換方法、およびアドレス変換プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の一観点によれば、プライベートネットワーク内の通信装置からグローバルネットワーク内の通信装置へのパケットを受信する受信手段と、前記受信手段により受信された第１のパケットのあて先アドレスが、前記第１のパケットよりも前に受信された第２のパケットのあて先アドレスと同一であるか否かを判断するアドレス判断手段と、前記アドレス判断手段により異なると判断された場合、前記第１のパケットの送信元プライベートアドレスを、前記第２のパケットに割り当てられた送信元グローバルアドレスに変換する変換手段と、前記変換手段により変換された変換後の第１のパケットを送信する送信手段と、を備えるアドレス変換装置が提供される。
【発明の効果】
【００１４】
本アドレス変換装置、アドレス変換方法、およびアドレス変換プログラム、によれば、グローバルアドレスおよびポート番号の割り当ての効率化を図り、グローバルアドレスの使用数を削減することができるという効果を奏する。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施例を示す説明図である。
【図２】ＮＡＴ検索テーブルを示す説明図である。
【図３】状態管理テーブルを示す説明図である。
【図４】使用ＩＰ／ｐｏｒｔ情報テーブルを示す説明図である。
【図５】本実施の形態にかかるアドレス変換装置のハードウェア構成を示すブロック図である。
【図６】アドレス変換装置１００の機能的構成を示すブロック図である。
【図７】実施例１においてエントリ追加後のＮＡＴ検索テーブルを示す説明図である。
【図８】実施例１においてエントリ追加後の状態管理テーブルを示す説明図である。
【図９】実施例１においてエントリ追加後の使用ＩＰ／ｐｏｒｔ情報テーブルを示す説明図である。
【図１０】実施例２においての再設定後の状態管理テーブルを示す説明図である。
【図１１】実施例３においてのエントリ追加後の使用ＩＰ／ｐｏｒｔ情報テーブルである。
【図１２】実施例３においてのエントリ追加後のＮＡＴ検索テーブルを示す説明図である。
【図１３】アドレス変換装置によるアドレス変換処理手順の一例を示すフローチャート（その１）である。
【図１４】アドレス変換装置によるアドレス変換処理手順の一例を示すフローチャート（その２）である。
【図１５】アドレス変換装置によるアドレス変換処理手順の一例を示すフローチャート（その３）である。
【図１６】アドレス変換装置によるアドレス変換処理手順の一例を示すフローチャート（その４）である。
【図１７】アドレス変換装置によるアドレス変換処理手順の一例を示すフローチャート（その５）である。
【図１８】アドレス変換装置によるアドレス変換処理手順の一例を示すフローチャート（その６）である。
【図１９】アドレス変換装置によるアドレス変換処理手順の一例を示すフローチャート（その７）である。
【図２０】アドレス変換装置によるアドレス変換処理手順の一例を示すフローチャート（その８）である。
【図２１】アドレス変換装置によるアドレス変換処理手順の一例を示すフローチャート（その９）である。
【図２２】アドレス変換装置によるアドレス変換処理手順の一例を示すフローチャート（その１０）である。
【図２３】アドレス変換装置によるエントリの削除処理手順の一例を示すフローチャート（その１）である。
【図２４】アドレス変換装置によるエントリの削除処理手順の一例を示すフローチャート（その２）である。
【図２５】アドレス変換装置によるエントリの削除処理手順の一例を示すフローチャート（その３）である。
【図２６】他のリスト構造を用いる例１を示す説明図である。
【図２７】他のリスト構造を用いる例２を示す説明図である。
【発明を実施するための形態】
【００１６】
本発明にかかるアドレス変換装置、アドレス変換方法、およびアドレス変換プログラムの好適な実施の形態を詳細に説明する。
【００１７】
本実施の形態では、アドレス変換において変換後のグローバルアドレスおよびポート番号を複数の通信（本実施の形態では、パケット）に対して同一値を割り当てることで、１グローバルアドレスで約６万５千通信しか割り当てることができない壁を取り払うことが可能となる。これにより、アドレス使用効率を向上させることができる。
【００１８】
グローバルアドレスとポート番号は、１つの通信にユニークな値（アドレスとポート番号の組み合わせ）を設定しなければ動作できない。サーバもしくはクライアントが複数の通信に同一ＩＰアドレスおよびポート番号を割り当てるのは規約違反のため、正しい動作ができなくなる。
【００１９】
しかしながら、当該規約はサーバもしくはクライアントのエンド端末に対する制約であり、プライベートネットワークとグローバルネットワーク間でアドレス変換を行うアドレス変換装置において、送信元プライベートアドレスおよびポート番号とあて先アドレスおよびポート番号の組み合わせがユニークに決定していればアドレス変換の判別ができる。
【００２０】
したがって、通信のあて先アドレスが異なる複数の通信に対して、アドレス変換で使用するグローバルアドレスとポートの組み合わせを割り当てても、通信が破綻することはない。具体的には、アドレス変換装置においては、あて先アドレスが異なっているため、送信元アドレスおよびポートとあて先アドレスおよびポートの組み合わせが複数の通信に対して同じになることはなく、アドレス変換処理のための判別処理は可能である。そして、サーバにおいては、同一の送信元グローバルアドレスおよびポート番号の組み合わせを持つ別通信がネットワーク上を流れていても、当該サーバにその通信が届くことはないため、サーバの処理が破綻することはない。
【００２１】
また、クライアントにおいては、アドレス変換が問題なく動けば、当該クライアントで割り当てた送信元プライベートアドレスとポート番号の組み合わせは一意であり、その内容を変えられることはないため、クライアントの処理が破綻することはない。
【００２２】
よって、本実施の形態では、あて先アドレスが異なる２つのパケットに対して同一の送信元グローバルアドレスを割り当てることで、アドレス割り当ての効率を向上させ、アドレス使用数を抑制する。
【００２３】
以下に添付図面を参照して、本実施の形態を詳細に説明する。
【００２４】
図１は、本発明の一実施例を示す説明図である。図１では、ＰＡ１が、プライベートネットワークであるＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）１０１内の通信端末であり、ＧＡ１およびＧＡ２が、グローバルネットワークであるＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）１０２内の通信端末である。ＰＡ１からＧＡ１またはＧＡ２へのパケットは、アドレス変換装置１００によりアドレスが変換されることで送信される。
【００２５】
ここでは、アドレス変換装置１００が割り当て可能なグローバルアドレスがＧＡ３とＧＡ４とし、割り当て可能なポート番号が１０２４とする。
【００２６】
まず、１つ目のパケットのあて先ＩＰ（あて先アドレス）が、ＧＡ１であり、ｐｏｒｔ（ポート番号）が２０００であり、送信元プライベートＩＰがＰＡ１であり、ｐｏｒｔが３０００である。
【００２７】
つぎに、アドレス変換装置１００が、変換テーブル１０３にあて先ＩＰ１０４およびｐｏｒｔ１０５と、送信元プライベートＩＰ１０６およびｐｏｒｔ１０７を設定する。変換テーブル１０３は、あて先ＩＰ１０４およびｐｏｒｔ１０５と、送信元プライベートＩＰ１０６およびｐｏｒｔ１０７と、送信元グローバルＩＰ１０８およびｐｏｒｔ１０９とを１レコードとして受信されたパケットごとに設定される。
【００２８】
そして、アドレス変換装置１００が、割り当て可能なグローバルアドレスからＧＡ３が選択すると共に、ポート番号に１０２４を選択し、変換テーブル１０３内の送信元グローバルＩＰ１０８にＧＡ３を設定し、送信元グローバルｐｏｒｔ１０９に１０２４を設定する。
【００２９】
そして、アドレス変換装置１００が、１つ目のパケットの送信元プライベートＩＰを、送信元グローバルＩＰ１０８であるＧＡ３に変換すると共に、１つ目のパケットの送信元プライベートｐｏｒｔを、送信元グローバルｐｏｒｔ１０９である１０２４に変換し、送信する。
【００３０】
つぎに、２つ目のパケットのあて先ＩＰがＧＡ１であり、ｐｏｒｔが２００１であり、送信元プライベートＩＰがＰＡ１であり、ｐｏｒｔが３００１である。よって、アドレス変換装置１００が、変換テーブル１０３内のあて先ＩＰ１０４およびｐｏｒｔ１０５と、送信元プライベートＩＰ１０６およびｐｏｒｔ１０７を設定する。そして、アドレス変換装置１００が、割り当て可能なグローバルアドレスからＧＡ３を選択する。
【００３１】
しかしながら、送信元グローバルＩＰにＧＡ３が割り当てられた１つ目のパケットのあて先ＩＰと２つ目のパケットのあて先ＩＰが同一であり、かつあて先ｐｏｒｔが異なるため、ＧＡ４がグローバルアドレスとして割り当てられる。そして、ポート番号に１０２４が割り当てられ、アドレス変換装置１００が、変換テーブル１０３内の送信元グローバルＩＰ１０８にＧＡ４、送信元グローバルｐｏｒｔ１０９に１０２４を設定する。
【００３２】
アドレス変換装置１００が、２つ目のパケットの送信元プライベートＩＰを送信元グローバルＩＰ１０８であるＧＡ４に変換すると共に、２つ目のパケットの送信元プライベートｐｏｒｔを送信元グローバルｐｏｒｔ１０９である１０２４に変換する。そして、変換後のパケットを送信する。
【００３３】
そして、３つ目のパケットのあて先ＩＰが、ＧＡ２であり、ｐｏｒｔが２０００であり、送信元プライベートＩＰがＰＡ１であり、ｐｏｒｔが３００２である。アドレス変換装置１００が、変換テーブルテーブル１０３内のあて先ＩＰ１０４およびｐｏｒｔ１０５と、送信元プライベートＩＰ１０６およびｐｏｒｔ１０７を設定する。そして、アドレス変換装置１００が、割り当て可能なグローバルアドレスからＧＡ３を選択する。
【００３４】
送信元グローバルＩＰにＧＡ３が割り当てられた１つ目のパケットのあて先ＩＰと３つ目のパケットのあて先ＩＰが異なるため、３つ目のパケットの送信元グローバルＩＰにＧＡ３が割り当てられ、ｐｏｒｔに１０２４が割り当てられる。アドレス変換装置１００が、変換テーブル１０３内の送信元グローバルＩＰ１０８にＧＡ３、送信元グローバルｐｏｒｔ１０９に１０２４を設定する。
【００３５】
そして、アドレス変換装置１００が、３つ目のパケットの送信元プライベートＩＰを送信元グローバルＩＰであるＧＡ３に変換すると共に、送信元プライベートｐｏｒｔを送信元グローバルｐｏｒｔである１０２４に変換する。つぎに、変換後のパケットを送信する。
【００３６】
これにより、あて先アドレスが異なれば、同一のグローバルアドレスおよびポート番号を割り当てることができ、アドレス割り当ての効率化を図ることができ、グローバルアドレス使用数を抑制することができる。
【００３７】
そして、４つ目のパケットのあて先ＩＰが、ＧＡ２であり、ｐｏｒｔが２００１であり、送信元プライベートＩＰがＰＡ１であり、ｐｏｒｔが３００３である。つぎに、アドレス変換装置１００が、変換テーブル１０３内のあて先ＩＰ１０４およびｐｏｒｔ１０５と、送信元プライベートＩＰ１０６およびｐｏｒｔ１０７を設定する。そして、割り当て可能なグローバルアドレスからＧＡ３を選択する。
【００３８】
送信元グローバルＩＰにＧＡ３が割り当てられた１つ目のパケットのあて先ＩＰと４つ目のパケットのあて先ＩＰが異なる。しかしながら、３つ目のパケットのあて先ＩＰと４つ目のパケットのあて先ＩＰが同一であり、あて先ｐｏｒｔが異なるため、つぎに、アドレス変換装置１００が、割り当て可能なグローバルアドレスからＧＡ４を選択する。
【００３９】
そして、送信元グローバルＩＰにＧＡ４が割り当てられた２つ目のパケットのあて先ＩＰと４つ目のパケットのあて先ＩＰが異なるため、４つ目のパケットの送信元グローバルＩＰには、ＧＡ４が割り当てられる。そして、４つ目のパケットの送信元グローバルポート番号に１０２４が割り当てられ、アドレス変換装置１００が、変換テーブル１０３内の送信元グローバルＩＰ１０８にＧＡ４、送信元グローバルｐｏｒｔ１０９に１０２４を設定する。
【００４０】
さらに、アドレス変換装置１００が、４つ目のパケットの送信元プライベートＩＰを送信元グローバルＩＰであるＧＡ４に変換し、送信元プライベートｐｏｒｔを送信元グローバルｐｏｒｔである１０２４に変換する。そして、変換後のパケットが送信される。
【００４１】
これにより、あて先アドレスが異なる２つ目のパケットの送信元グローバルアドレスおよびポート番号と同一のグローバルアドレスおよびポート番号を４つ目のパケットに割り当てることができ、アドレス割り当ての効率化を図ることができる。さらに、グローバルアドレス使用数を抑制することができる。
【００４２】
つぎに、ＷＡＮ１０２からＬＡＮ１０１へのパケットの送信について説明する。変換テーブル１０３内のレコードごとにＷＡＮ１０２からのパケットの送信元ＩＰとＩＰ１０４が同一であるか、パケットの送信元ポート番号とｐｏｒｔ１０５が同一であるか否かを判断する。さらに、ＩＰ１０８とパケットのあて先ＩＰが同一であるか、ｐｏｒｔ１０９とパケットのあて先ｐｏｒｔが同一であるか否かを判断する。そして、パケットのあて先ＩＰを、すべてが同一であると判断されたレコードのＩＰ１０６に変換し、パケットのあて先ポート番号を当該レコードのｐｏｒｔ１０７に変換する。
【００４３】
これにより、あて先が異なる２つのパケットに同一の送信元アドレスを割り当てても、グローバルネットワークからプライベートネットワークへの通信時にアドレスを変換することができる。
【００４４】
つぎに、図１では、変換テーブル１０３を用いてアドレスの変換処理を実施している。本実施の形態では、ＮＡＴ検索テーブルと、状態管理テーブルと、使用ＩＰ／ｐｏｒｔ情報テーブルとの３つのテーブルを用いてアドレスの変換処理を実施する例について説明する。
【００４５】
（ＮＡＴ検索テーブル）
図２は、ＮＡＴ検索テーブルを示す説明図である。ＮＡＴ検索テーブル２０１およびＮＡＴ検索テーブル２０２は、パケットのフロー単位（送信元あて先アドレスおよびポート番号（以下、「ｐｏｒｔ」と称する。）で一意に決定できるパケット群）で、変換元のアドレスおよび変換先の情報を保持し、パケット到着時に検索し、アドレス変換対象かどうかを識別、変換を実施する情報となるテーブルである。
【００４６】
ＮＡＴ検索テーブル２０１は、プライベートネットワークで用いるプライベートアドレスをグローバルネットワークで用いるグローバルアドレスに変換させるためのテーブルである。そして、ＮＡＴ検索テーブル２０２は、グローバルネットワークで用いるグローバルアドレスをプライベートネットワークで用いるプライベートアドレスに変換させるためのテーブルである。なお、本実施の形態では、リスト構造内の各ノードをエントリと称する。
【００４７】
また、本実施の形態では、ＮＡＴ変換テーブルエントリの最初のエントリ（ハッシュから直接繋がっているエントリ）であるＮ１＿Ｅ１およびＮ２＿Ｅ１は、ダミーのエントリであり、エントリの挿入または削除処理用の簡便化のために配置している。
【００４８】
各ＮＡＴ変換テーブルエントリは、ｐｒｉｖａｔｅ２０３と、ｇｌｏｂａｌ２０４と、状態管理エントリリンク２０５と、アドレス情報エントリリンク２０６と、使用ｐｏｒｔエントリリンク２０７を備えている。さらに、ＮＡＴ検索テーブル２０１内のＮＡＴ変換テーブルエントリは、前リンク（ｐ（ｐｒｉｖａｔｅ（プライベート））→ｇ（ｇｌｏｂａｌ（グローバル）））２０８と、次リンク（ｐ→ｇ）２０９とを備えている。そして、ＮＡＴ検索テーブル２０２内のＮＡＴ変換テーブルエントリは、前リンク（ｇ→ｐ）２１９と、次リンク（ｇ→ｐ）２２０を備えている。
【００４９】
ｐｒｉｖａｔｅ２０３は、ｓｏｕｒｃｅ２１０と、ｄｅｓｔｉｎａｔｉｏｎ２１１とを備え、ｓｏｕｒｃｅ２１０は、ＩＰ２１３とｐｏｒｔ２１４を備え、ｄｅｓｔｉｎａｔｉｏｎ２１１は、ＩＰ２１５と、ｐｏｒｔ２１６を備えている。ＩＰ２１３は、ＬＡＮ１０１内で用いられる送信元プライベートアドレスであり、ｐｏｒｔ２１４は、ＬＡＮ１０１内で用いられる送信元プライベートポートである。ＩＰ２１５は、あて先アドレスであり、ｐｏｒｔ２１６は、あて先ポートである。
【００５０】
ｇｌｏｂａｌ２０４は、ｓｏｕｒｃｅ２１２を備え、ｓｏｕｒｃｅ２１２は、ＩＰ２１７とｐｏｒｔ２１８を備えている。ＩＰ２１７は、ＷＡＮ１０２内で用いられる送信元グローバルアドレスであり、ｐｏｒｔ２１８は、ＷＡＮ１０２内で用いられる送信元グローバルポートである。
【００５１】
状態管理エントリリンク２０５は、図３で説明する状態管理テーブル内のどの状態管理エントリにリンクされているかを示している。
【００５２】
アドレス情報エントリリンク２０６は、図４で説明する使用ＩＰ／ｐｏｒｔ情報テーブル内のどのアドレス情報エントリにリンクされているかを示す説明図である。
【００５３】
使用ｐｏｒｔエントリリンク２０７は、アドレス情報エントリリンク２０６で示されるアドレス情報エントリの使用ｐｏｒｔエントリを示している。
【００５４】
ＮＡＴ変換テーブルエントリは、双方向リストであるため、前リンク（ｐ→ｇ）２０８と、次リンク（ｐ→ｇ）２０９と、前リンク（ｇ→ｐ）２１９と、次リンク（ｇ→ｐ）２２０を用いている。
【００５５】
Ｎ１＿Ｅ３およびＮ２＿Ｅ３を例に挙げると、ＩＰ２１３は、ＰＡ１であり、ｐｏｒｔ２１４は、２０００であり、ＩＰ２１５は、ＧＡ１であり、ｐｏｒｔ２１６は、３０００である。そして、あて先アドレスが、ＧＡ１であり、あて先ポートが３０００であることを示している。ＩＰ２１７は、ＧＡ３であり、ｐｏｒｔ２１８は、６５０００である。たとえば、ＬＡＮからＷＡＮにパケットが送信される場合、ＰＡ１および２０００と、ＧＡ１および３０００がパケットに付与され、ＰＡ１が、ＧＡ３に変換され、２０００が、６５０００に変換されて、ＷＡＮ内のＧＡ１にパケットが送信される。
【００５６】
なお、ＮＡＴ検索テーブル２０１およびＮＡＴ検索テーブル２０２は、コンピュータがアクセス可能な記憶装置に記憶されている。
【００５７】
（状態管理テーブル）
図３は、状態管理テーブルを示す説明図である。状態管理テーブル３００は、ＮＡＴ変換テーブルエントリの状態管理を行うためのテーブルである。あるパケットフローが一定時間流れなくなった（ＴＣＰではＦＩＮ（ＦＩＮＩＳＨ）パケット到着後しばらくした時／ＵＤＰならばパケットが流れなくなってしばらくした時）ら、ＮＡＴ変換テーブルエントリを削除し、次のフローに割り当てる必要がある。
【００５８】
状態管理テーブル３００は、削除時期を検知するためのテーブルであるため各エントリにはＥｘｐｉｒｅ時刻３０２が記述されている。また、該当エントリがどのＮＡＴ変換エントリに対応しているかを示すＮＡＴ変換エントリリンク３０１も備えている。
【００５９】
状態管理テーブル３００内の各状態管理エントリは、ＮＡＴ変換エントリリンク３０１と、Ｅｘｐｉｒｅ時刻３０２と、前リンク３０３と、次リンク３０４とを備えている。ＮＡＴ変換エントリリンク３０１は、ＮＡＴ検索テーブル内のどのリンクと連携しているのかを示している。
【００６０】
各状態管理エントリは、ＮＡＴ変換エントリリンク３０１と、Ｅｘｐｉｒｅ時刻３０２と、前リンク３０３と、次リンク３０４とを備えている。状態管理エントリ（ｔｏｐ）は、先頭のエントリでありダミーエントリである。状態管理エントリ（ｔａｉｌ）は、最後尾のエントリでありダミーエントリである。
【００６１】
具体的には、たとえば、状態管理エントリ（ｔｏｐ）（Ｓ＿Ｅ１）は、ダミーエントリであるため、Ｓ＿Ｅ１のＮＡＴ変換エントリリンク３０１と、Ｅｘｐｉｒｅ時刻３０２と、前リンク３０３がｎｕｌｌである。Ｓ＿Ｅ１の次リンク３０４は、Ｓ＿Ｅ２のポインタである。
【００６２】
Ｓ＿Ｅ２のＮＡＴ変換エントリリンク３０１は、Ｎ１＿Ｅ２であり、Ｅｘｐｉｒｅ時刻３０２がＥｔ１であり、前リンク３０３がＳ＿Ｅ１のポインタであり、次リンク３０４がＳ＿Ｅ３のポインタである。
【００６３】
なお、状態管理テーブル３００は、コンピュータがアクセス可能な記憶装置に記憶されている。
【００６４】
（使用ＩＰ／ｐｏｒｔ情報テーブル）
図４は、使用ＩＰ／ｐｏｒｔ情報テーブルを示す説明図である。使用ＩＰ／ｐｏｒｔ情報テーブル４００は、ＮＡＴ変換で使用できるＩＰ／ｐｏｒｔの組のうち、どのあて先に対してどのＩＰ／ｐｏｒｔを使用したかを管理するためのテーブルであり、同じくハッシュテーブルとハッシュテーブルからの双方向リスト構造で構成される。
【００６５】
なお、当該双方向リスト構造が、第１のリスト構造である。使用ＩＰ／ｐｏｒｔ情報テーブル４００の先頭はＮＡＴ検索テーブル２０１，２０２と同様にダミーエントリで、初期値は全ハッシュエントリから単一のアドレス情報エントリ（全てダミー）だけが繋がった状態となる。
【００６６】
各アドレス情報エントリは、ハッシュテーブルから繋がる双方向リストであり、あて先アドレスとＮＡＴ変換で使用する送信元グローバルアドレスの組み合わせが登録されている。また、あて先アドレスと送信元グローバルアドレスの組み合わせ単位で、どのｐｏｒｔ番号をＮＡＴ変換に使用しているかの一覧を保持するため、各アドレス情報エントリからそれぞれｐｏｒｔ番号を有する双方向リストの構造を持つ。なお、当該双方向リストが第２のリスト構造である。
【００６７】
各アドレス情報エントリは、変換ＩＰ４０１と、ｄｓｔＩＰ４０２と、次使用ｐｏｒｔ４０３と、使用ｐｏｒｔエントリリンク４０４と、使用ｐｏｒｔエントリ先頭リンク４０５と、前リンク４０６と、次リンク４０７を備えている。
【００６８】
各アドレス情報エントリは、双方向リスト構造のノードであるため、前段のアドレス情報エントリへのリンクを示す前リンク４０６と、次段のアドレス情報エントリへのリンクを示す次リンク４０７の２つを持つ。
【００６９】
変換ＩＰ４０１が、送信元グローバルアドレスであり、ｄｓｔＩＰ４０２が、あて先アドレスである。使用ｐｏｒｔエントリ先頭リンク４０５が、使用されているｐｏｒｔの情報を保持する使用ｐｏｒｔエントリと関連付けている。
【００７０】
次使用ｐｏｒｔ４０３は、検索処理の高速化のために用意されたもので、新規にＮＡＴ変換対象パケットが到着したとき、該当アドレス情報エントリに合致した場合、ＰＯＲＴ番号として本値を使用できることを示す値となる。新規フロー到着時は次使用ｐｏｒｔ４０３の値を使えばよく、検索処理を不要としている。ここで、次使用ｐｏｒｔがない（ｐｏｒｔのリソースがない）ことを示す値を０とし、０であった場合はｐｏｒｔ番号の割り当てができないことを示すこととする。
【００７１】
また、使用ｐｏｒｔエントリは、ｐｏｒｔ番号順にソートすることで探索処理の高速化を図ることができるため、アドレス変換装置１００が、使用ｐｏｒｔエントリを挿入する際、次使用ｐｏｒｔ４０３が、どこに挿入すべきかを指し示すポインタとなり、挿入箇所を探索する必要がなくなる。使用ｐｏｒｔエントリは、ｐｏｒｔ４０８を備えている。さらに、使用ｐｏｒｔエントリは、双方向リスト構造のため、前段の使用ｐｏｒｔエントリへのリンクを示す前リンク４０９と、次段のアドレス情報エントリへのリンクを示す次リンク４１０を備えている。なお、Ｐ２＿Ｅ１、Ｐ３＿Ｅ１は、ダミーエントリである。
【００７２】
また、本実施の形態では、割り当て可能な送信元グローバルアドレスごとに使用可能なポート番号については以下とする。
・使用可能なポート番号：１０２４〜６５０００
・ｐｏｒｔ（ポート番号）の最小値：１０２４
・ｐｏｒｔ（ポート番号）の最大値：６５０００
【００７３】
なお、使用ＩＰ／ｐｏｒｔ情報テーブル４００は、コンピュータがアクセス可能な記憶装置に記憶されている。
【００７４】
（アドレス変換装置のハードウェア構成）
図５は、本実施の形態にかかるアドレス変換装置のハードウェア構成を示すブロック図である。図５において、アドレス変換装置は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）５０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）５０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）５０３と、磁気ディスクドライブ５０４と、磁気ディスク５０５と、光ディスクドライブ５０６と、光ディスク５０７と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）５０８と、を備えている。また、各構成部はバス５００によってそれぞれ接続されている。
【００７５】
ここで、ＣＰＵ５０１は、アドレス変換装置１００の全体の制御を司る。ＲＯＭ５０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ５０３は、ＣＰＵ５０１のワークエリアとして使用される。磁気ディスクドライブ５０４は、ＣＰＵ５０１の制御にしたがって磁気ディスク５０５に対するデータのリード／ライトを制御する。磁気ディスク５０５は、磁気ディスクドライブ５０４の制御で書き込まれたデータを記憶する。
【００７６】
光ディスクドライブ５０６は、ＣＰＵ５０１の制御にしたがって光ディスク５０７に対するデータのリード／ライトを制御する。光ディスク５０７は、光ディスクドライブ５０６の制御で書き込まれたデータを記憶したり、光ディスク５０７に記憶されたデータをコンピュータに読み取らせたりする。
【００７７】
Ｉ／Ｆ５０８は、通信回線を通じてＬＡＮ１０１などのプライベートネットワーク、ＷＡＮ１０２、などのグローバルネットワークに接続され、ＬＡＮ１０２、ＷＡＮ１０３などからのパケットを受信する。
【００７８】
（アドレス変換装置１００の機能的構成）
つぎに、図６は、アドレス変換装置１００の機能的構成を示すブロック図である。アドレス変換装置１００は、受信部６０１と、情報抽出部６０２と、アドレス判断部６０３と、変換部６０４と、送信部６０５と、設定部６０６と、第１の判断部６０７と、第１のリスト構造生成部６０８と、第２の判断部６０９と、第２のリスト構造生成部６１１と、第１の探索部６１２と、第２の探索部６１３を含む構成である。各機能（受信部６０１〜第２の探索部６１３）は、具体的には、たとえば、図５に示したＲＯＭ５０２、ＲＡＭ５０３、磁気ディスク５０５、光ディスク５０７などの記憶装置に記憶されたプログラムをＣＰＵ５０１に実行させることにより、または、Ｉ／Ｆ５０８により、各機能を実現する。
【００７９】
各機能の具体的な処理については、実施例１〜４を用いて説明する。実施例１〜３は、プライベートネットワークからグローバルネットワークへ送信されるパケットのアドレス変換について説明する。まず、実施例１では、受信されたパケットのあて先アドレスが、変換済のパケットのあて先アドレスと異なる場合について説明する。
【００８０】
つぎに、実施例２では、受信されたパケットのあて先アドレスおよびｐｏｒｔおよびプライベートアドレスおよびｐｏｒｔが、変換済パケットのあて先アドレスおよびｐｏｒｔおよびプライベートアドレスおよびｐｏｒｔと同一の場合について説明する。
【００８１】
そして、実施例３では、受信されたパケットのあて先アドレスおよびｐｏｒｔが、変換済パケットのあて先アドレスおよびｐｏｒｔと同一で、パケットのプライベートアドレスおよびｐｏｒｔが、変換済パケットのプライベートアドレスおよびｐｏｒｔと異なる場合について説明する。
【００８２】
最後に、実施例４では、グローバルネットワークからプライベートネットワークへのパケットが受信される場合について説明する。
【００８３】
（実施例１）
まず、実施例１では、ＬＡＮ１０１からＷＡＮ１０２への下記のアドレス情報が付与されたパケットを受信するとする。
【００８４】
・送信元プライベートアドレス：ＰＡ１
・送信元プライベートｐｏｒｔ：２０００
・あて先アドレス：ＧＡ２
・あて先ｐｏｒｔ：３０００
【００８５】
まず、受信部６０１は、プライベートアドレス内の通信端末からグローバルアドレス内の通信端末へのパケットを受信する機能を有する。具体的には、たとえば、Ｉ／Ｆ５０８が、ＰＡ１からＧＡ２へのパケットを受信する。
【００８６】
つぎに、情報抽出部６０２が、パケットのアドレス情報を抽出する機能を有する。なお、パケットからの情報抽出部６０２の処理については、従来の中継処理やサーバでの処理と同じであり公知であるため、詳細な説明を省略する。
【００８７】
そして、アドレス変換装置１００が、あて先アドレスがグローバルアドレスであるため、パケットの送信元プライベートアドレスおよびｐｏｒｔおよびあて先アドレスおよびｐｏｒｔの情報を基にＮＡＴ検索テーブル２０１からハッシュエントリを検索する。具体的には、たとえば、送信元プライベートアドレスおよびｐｏｒｔ、およびあて先アドレスおよびｐｏｒｔの値を加算して該当のハッシュエントリを検索することとしてもよい。ここで、Ｎ１＿Ｅ１が検索されたとし、Ｎ１＿Ｅ１はダミーエントリであるため、Ｎ１＿Ｅ２をＥｓとする。
【００８８】
つぎに、アドレス判断部６０３が、送信元プライベートアドレスとＥｓのＩＰ２１３が同一であり、パケットの送信元プライベートポートとＥｓのｐｏｒｔ２１４が同一であり、パケットのあて先アドレスとＥｓのＩＰ２１５が同一であり、あて先ポートとＥｓのｐｏｒｔ２１６が同一であるか否かを判断する。アドレス判断部６０３によりいずれか一つであっても同一でないと判断された場合、Ｅｓの次リンク２０９が示すエントリをＥｓとし、それぞれが同一であると判断されるまでアドレス判断部６０３の処理を繰り返す。
【００８９】
そして、アドレス変換装置１００は、アドレス判断部６０３により同一でないと判断され、Ｅｓの次リンク２０９が、ｎｕｌｌの場合、グローバルアドレス群から任意のアドレスを選択する。下記に本実施の形態で用いるグローバルアドレス群の一例を示す。
【００９０】
・グローバルアドレス群：ＧＡ３、ＧＡ４、ＧＡ５、ＧＡ６
【００９１】
具体的には、たとえば、アドレス変換装置１００が、ＧＡ３を選択してＡｄとする。
【００９２】
そして、設定部６０６が、Ａｄとパケットのあて先アドレスとを組み合わせとして設定し、第１の探索部６１２が、設定部６０６により設定された組み合わせと一致する組み合わせを使用ＩＰ／ｐｏｒｔ情報テーブル４００から探索する。たとえば、第１の探索部６１２が、パケットのあて先アドレスとＡｄに基づいて使用ＩＰ／ｐｏｒｔ情報テーブル４００から該当エントリを検索する。具体的には、たとえば、パケットのあて先アドレスとＡｄの合計値に基づいてＩＰ／ｐｏｒｔ情報テーブル４００からエントリを検索する。ここでは、該当エントリの次リンク４０７であるＡ＿Ｅ２をＥａとする。
【００９３】
そして、第１の判断部６０７が、設定部６０６により設定された組み合わせが当該組み合わせ以前に設定された一連の組み合わせの中にあるか否かを判断する。ここでは、一連の組み合わせとは、使用ＩＰ／ｐｏｒｔ情報テーブル４００内の各アドレス情報エントリ同士が関連付けられていることを示している。
【００９４】
そして、グローバルアドレスであるＡｄとＥａの変換ＩＰが同一であるか、当該組み合わせのあて先アドレスであるＥａのｄｓｔＩＰ４０２が同一であるか否かを判断する。ここでは、ＡｄがＧＡ３であり、Ａ＿Ｅ２の変換ＩＰ４０１がＧＡ３であるため、ＡｄがＡ＿Ｅ２の変換ＩＰ４０１と同一であると判断される。一方、パケットのあて先アドレスがＧＡ１であり、ｄｓｔＩＰ４０２がＧＡ２であるため、パケットのあて先アドレスが、ｄｓｔＩＰ４０２と同一でないと判断される。いずれかが同一でないと判断された場合、第１の判断部６０７が、Ｅａの次リンク４０７で示されるエントリをあらたにＥａとする。なお、ＬａｄｄｒにＥａのポインタを設定する。なお、ここでは、第１の判断部６０７により組み合わせと一致するエントリがないと判断される。
【００９５】
つぎに、第１のリスト構造生成部６０８が、第１の判断部６０７によりないと判断された場合（Ｅａの次リンク４０７が、ｎｕｌｌの場合）、あらたにアドレス情報エントリをＥａｎとして生成し、使用ＩＰ／ｐｏｒｔ情報テーブル４００に追加する。
【００９６】
つぎに、アドレス変換装置１００が、割り当て可能な複数のグローバルポート番号から任意のグローバルポート番号を選択する。そして、第２の判断部６０９が、設定部６０６により設定された組み合わせ（生成されたアドレス情報エントリ）が有する使用ｐｏｒｔエントリの中に選択されたグローバルポート番号があるか否かを判断する。
【００９７】
ここでは、アドレス情報エントリが、生成された直後であるため、第２の判断部６０９は、アドレス情報エントリ内に選択されたグローバルポート番号がないと判断される。
【００９８】
そして、ノード生成部６１０は、第２の判断部６０９によりないと判断された場合、割り当て可能な複数のグローバルポート番号から任意のグローバルポート番号をｐｏｒｔ４０８とする使用ｐｏｒｔエントリを生成する。ここでは、ノード生成部６１０が、使用ｐｏｒｔエントリをＥｕ＿ｔｏｐ（ダミーエントリ）およびＥａｕとして生成する。
【００９９】
第２のリスト構造生成部６１１は、ノード生成部６１０により生成された使用ｐｏｒｔエントリを設定された組み合わせと一致するアドレス情報エントリに関連付ける。
【０１００】
具体的には、たとえば、第２のリスト構造生成部６１１が、生成したアドレス情報エントリおよび使用ｐｏｒｔエントリに下記の値を設定することで関連付ける。
・Ｅｕ＿ｔｏｐのｐｏｒｔ４０８：ｎｕｌｌ
・Ｅｕ＿ｔｏｐの前リンク４０９：ｎｕｌｌ
・Ｅｕ＿ｔｏｐの次リンク４１０：Ｅａｕのポインタ
・Ｅａｕのｐｏｒｔ４０８：ｐｏｒｔの最小値
・Ｅａｕの前リンク４０９：Ｅｕ＿ｔｏｐのポインタ
・Ｅａｕの次リンク４１０：ｎｕｌｌ
・Ｅａｎの変換ＩＰ４０１：Ａｄ
・ＥａｎのｄｓｔＩＰ４０２：パケットのあて先ＩＰ
・Ｅａｎの次使用ｐｏｒｔ４０３：ｐｏｒｔの最小値＋１
・Ｅａｎの使用ｐｏｒｔエントリリンク４０４：Ｅａｕのポインタ
・Ｅａｎの使用ｐｏｒｔエントリ先頭リンク４０５：Ｅｕ＿ｔｏｐのポインタ
・Ｅａｎの前リンク４０６：Ｅａのポインタ
・Ｅａｎの次リンク４０７：ｎｕｌｌ
・Ｅａの次リンク４０７：Ｅａｎのポインタ
【０１０１】
ここで、Ｅａｕのｐｏｒｔ４０８にｐｏｒｔの最小値が設定されているが、Ｅａｕのｐｏｒｔ４０８には、Ｅａの使用ｐｏｒｔエントリリンク４０４で示される使用ｐｏｒｔエントリのｐｏｒｔ４０８を設定してもよい。これにより、同一の送信元グローバルアドレスおよびｐｏｒｔを割り当てることができ、アドレス割り当ての効率化を図ることができる。なお、Ｅａｎの次使用ｐｏｒｔ４０３には、Ｅａの使用ｐｏｒｔエントリリンク４０４で示される使用ｐｏｒｔエントリのｐｏｒｔ４０８の値＋１が設定される。
【０１０２】
また、ＮＡＴ変換テーブルエントリの生成に用いるためにＰｄとＬｐｏｒｔを設定する。
・Ｐｄ＝Ｅａｕのｐｏｒｔ
・Ｌｐｏｒｔ＝Ｅａｕのポインタ
【０１０３】
つぎに、アドレス変換装置１００が、ＮＡＴ変換テーブルエントリをＥｎとして生成し、ＮＡＴ検索テーブル２０１およびＮＡＴ検索テーブル２０２に関連付ける。さらに、状態管理エントリをＥｓｔとして生成し、状態管理テーブル３００に追加する。
【０１０４】
アドレス変換装置１００によりＥｎの各項目と、Ｅｓｔの各項目には、下記が設定される。
・Ｅｎのｐｒｉｖａｔｅ２０３  ｓｏｕｒｃｅ２１０  ＩＰ２１３：パケットの送信元プライベートアドレス
・Ｅｎのｐｒｉｖａｔｅ２０３  ｓｏｕｒｃｅ２１０  ｐｏｒｔ２１４：パケットの送信元プライベートｐｏｒｔ
・Ｅｎのｐｒｉｖａｔｅ２０３  ｄｅｓｔｉｎａｔｉｏｎ２１１  ＩＰ２１５：パケットのあて先アドレス
・Ｅｎのｐｒｉｖａｔｅ２０３  ｄｅｓｔｉｎａｔｉｏｎ２１１  ｐｏｒｔ２１６：パケットのあて先ｐｏｒｔ
・Ｅｎのｇｌｏｂａｌ２０４  ｓｏｕｒｃｅ２１２  ＩＰ２１７：Ａｄ
・Ｅｎのｇｌｏｂａｌ２０４  ｓｏｕｒｃｅ２１２  ｐｏｒｔ２１８：Ｐｄ
・Ｅｎの状態管理エントリリンク２０５：Ｅｓｔのポインタ
・Ｅｎのアドレス情報エントリリンク２０６：Ｌａｄｄｒ
・Ｅｎの使用ｐｏｒｔエントリリンク２０７：Ｌｐｏｒｔ
・ＥｓｔのＮＡＴ変換エントリリンク３０１：Ｅｎ
・ＥｓｔのＥｘｐｉｒｅ時刻３０２：現時刻＋Ｅｘｐｉｒｅ時間
・Ｅｓｔの前リンク３０３：状態管理エントリ（ｔｏｐ）のポインタ
・Ｅｓｔの次リンク３０４：状態管理エントリ（ｔｏｐ）の次リンクの値
・状態管理エントリ（ｔｏｐ）の次リンク３０４で示されるエントリの前リンク３０３の値：Ｅｓｔのポインタ
・状態管理エントリ（ｔｏｐ）の次リンク３０４：Ｅｓｔのポインタ
【０１０５】
なお、Ｅｘｐｉｒｅ時間については、利用者によってあらかじめ設定されている時間である。
【０１０６】
そして、アドレス変換装置１００が、パケットの送信元プライベートアドレスおよびｐｏｒｔおよびあて先アドレスおよびｐｏｒｔの情報に基づいてＮＡＴ検索テーブル２０１から該当のハッシュエントリを検索する。そして、検索されたハッシュエントリにあるＮＡＴ変換テーブルエントリのリンクで示されるエントリをＥｐｒｅｖとする。ここでは、Ｎ１＿Ｅ１がＥｐｒｅｖである。Ｅｐｒｅｖの次リンクで示されたエントリをＥｎｅｘｔとする。ここでは、Ｎ１＿Ｅ２がＥｎｅｘｔである。
【０１０７】
そして、ＮＡＴ検索テーブル２０１へＥｎを追加させるためにアドレス変換装置１００が、以下の設定を行う。
・Ｅｎの次リンク（ｐ→ｇ）２０９：Ｅｎｅｘｔのポインタ
・Ｅｎの前リンク（ｐ→ｇ）２０８：Ｅｐｒｅｖのポインタ
・Ｅｐｒｅｖの次リンク（ｐ→ｇ）２０９：Ｅｎのポインタ
・Ｅｎｅｘｔの前リンク（ｐ→ｇ）２０８：Ｅｎのポインタ
【０１０８】
また、アドレス変換装置１００が、パケットの送信元プライベートアドレスおよびｐｏｒｔおよびあて先アドレスおよびｐｏｒｔの情報に基づいてＮＡＴ検索テーブル２０２から該当のハッシュエントリを検索する。そして、ハッシュエントリにあるＮＡＴ変換テーブルエントリのリンクで示されるエントリをＥｐｒｅｖとする。ここでは、Ｎ２＿Ｅ１がＥｐｒｅｖである。Ｅｐｒｅｖの次リンクで示されたエントリをＥｎｅｘｔとする。ここでは、Ｎ２＿Ｅ２がＥｎｅｘｔである。
【０１０９】
そして、ＮＡＴ検索テーブル２０２へＥｎを追加させるため、アドレス変換装置１００が、以下の設定を行う。
・Ｅｎの次リンク（ｇ→ｐ）２２０：Ｅｎｅｘｔのポインタ
・Ｅｎの前リンク（ｇ→ｐ）２１９：Ｅｐｒｅｖのポインタ
・Ｅｐｒｅｖの次リンク（ｇ→ｐ）２２０：Ｅｎのポインタ
・Ｅｎｅｘｔの前リンク（ｇ→ｐ）２１９：Ｅｎのポインタ
【０１１０】
つぎに、変換部６０４が、パケットの送信元プライベートアドレスをＥｎのＩＰ２１７に変換し、パケットの送信元プライベートポートをＥｎのｐｏｒｔ２１８に変換する。
【０１１１】
そして、送信部６０５が、変換部６０４により変換された後のパケットを送信する。なお、送信部６０５の具体的な例については公知であるため説明を省略する。
【０１１２】
これにより、あらたにＮＡＴ変換エントリ、状態管理エントリ、アドレス情報エントリ、使用ｐｏｒｔエントリが追加される。図７〜図９に追加された例を示す。
【０１１３】
図７は、実施例１においてエントリ追加後のＮＡＴ検索テーブルを示す説明図である。ＮＡＴ検索テーブル７０１は、Ｎ１＿Ｅ５としてエントリが追加され、ＮＡＴ検索テーブル７０２は、Ｎ２＿Ｅ５としてエントリが追加されている。Ｎ１＿Ｅ５およびＮ２＿Ｅ５は、ＩＰ２１５がＧＡ２であり、ｐｏｒｔ２１６が３０００であり、ＩＰ２１７がＧＡ３であり、ｐｏｒｔ２１８が１０２４である。図２で上述したようにＮ１＿Ｅ３のＩＰ２１５は、ＧＡ１であり、ｐｏｒｔ２１６が３０００であり、ＩＰ２１７がＧＡ３であり、ｐｏｒｔ２１８が５０００である。したがって、異なる複数のパケット送信であっても、あて先アドレスが異なれば、送信元プライベートアドレスを同一の送信元グローバルアドレスに変換することができる。
【０１１４】
図８は、実施例１においてエントリ追加後の状態管理テーブルを示す説明図である。状態管理テーブル８００には、Ｓ＿Ｅ１とＳ＿Ｅ２の間にＳ＿Ｅ５があらたに追加されている。よって、Ｓ＿Ｅ１の次リンク３０４がＳ＿Ｅ５のポインタであり、Ｓ＿Ｅ５の前リンク３０３がＳ＿Ｅ１のポインタであり、Ｓ＿Ｅ５の次リンク３０４がＳ＿Ｅ２のポインタであり、Ｓ＿Ｅ２の前リンク３０３がＳ＿Ｅ５のポインタである。そして、Ｓ＿Ｅ５のＮＡＴ変換エントリリンク３０１が、Ｎ１＿Ｅ５（Ｎ２＿Ｅ５）であり、ＮＡＴ検索テーブル７０１（およびＮＡＴ検索テーブル７０２）にあらたに追加されたエントリと連携されている。
【０１１５】
図９は、実施例１においてエントリ追加後の使用ＩＰ／ｐｏｒｔ情報テーブルを示す説明図である。使用ＩＰ／ｐｏｒｔ情報テーブル９００は、リンクの最後尾であったＡ＿Ｅ３の次にＡ＿Ｅ４があらたに追加されている。したがって、Ａ＿Ｅ３の次リンク４０７が、Ａ＿Ｅ４のポインタであり、Ａ＿Ｅ４の前リンク４０６がＡ＿Ｅ３のポインタであり、Ａ＿Ｅ４の次リンク４０７がｎｕｌｌである。そして、Ａ＿Ｅ４の次使用ｐｏｒｔ４０３が１０２５であり、使用ｐｏｒｔエントリリンク４０４がＰ４＿Ｅ２であり、使用ｐｏｒｔエントリ先頭リンク４０５がＰ４＿Ｅ１である。
【０１１６】
そして、図４で示したようにＡ＿Ｅ２の変換ＩＰ４０１は、ＧＡ３であり、Ａ＿Ｅ２のｄｓｔＩＰ４０２は、ＧＡ１である。したがって、異なる複数のパケットであっても、少なくともあて先アドレスが異なるために各パケットの送信元プライベートアドレスに同一の送信元グローバルアドレス（ＧＡ３）を割り当てることができる。また、アドレスだけでなくｐｏｒｔの割り当ても同時にすることで、さらに、グローバルアドレスの使用数を抑制することができる。
【０１１７】
（実施例２）
実施例２では、異なる複数のパケットの送信元プライベートアドレスおよびｐｏｒｔ、かつあて先アドレスおよびｐｏｒｔがすべて同一の場合、送信元プライベートアドレスおよびｐｏｒｔと送信元グローバルアドレスおよびｐｏｒｔを割り当てる例を示す。実施例２では、以下の様なアドレス情報を有するパケットがＬＡＮ１０１内のクライアントからＷＡＮ１０２内のサーバに送信される例を示す。
【０１１８】
・送信元プライベートアドレス：ＰＡ１
・送信元プライベートｐｏｒｔ：２０００
・あて先アドレス：ＧＡ１
・あて先ｐｏｒｔ：３０００
【０１１９】
実施例２では、実施例１で用いたＮＡＴ検索テーブル２０１、ＮＡＴ検索テーブル２０２、状態管理テーブル３００、使用ＩＰ／ｐｏｒｔ情報テーブル４００を用いて詳細な処理について説明する。
【０１２０】
まず、受信部６０１と情報抽出部６０２の処理については実施例１と同一であるため説明を省略する。
【０１２１】
そして、アドレス変換装置１００が、パケットの送信元プライベートアドレスおよびｐｏｒｔとあて先アドレスおよびｐｏｒｔの情報を基にＮＡＴ検索テーブル２０１からハッシュエントリを検索する。具体的には、たとえば、送信元プライベートアドレスおよびｐｏｒｔ、およびあて先アドレスおよびｐｏｒｔの値を加算して該当のハッシュエントリを検索することとしてもよい。ここで、Ｎ１＿Ｅ１が検索されたとし、Ｎ１＿Ｅ１はダミーエントリであるため、Ｎ１＿Ｅ２をＥｓとする。
【０１２２】
つぎに、アドレス判断部６０３が、実施例１での処理と同様に送信元プライベートアドレスとＥｓのＩＰ２１３が同一であり、送信元プライベートポートとＥｓのｐｏｒｔ２１４が同一であるか否かを判断する。さらに、あて先アドレスとＥｓのＩＰ２１５が同一であり、あて先ポートとＥｓのｐｏｒｔ２１６が同一であるか否かを判断する。そして、判断部によりいずれか一つであっても同一でないと判断された場合、Ｅｓの次リンク２０９が示すエントリをＥｓとし、それぞれが同一であると判断されるまでアドレス判断部６０３の処理を繰り返す。
【０１２３】
ここで、Ｎ１＿Ｅ３のＩＰ２１３がＰＡ１であり、ｐｏｒｔ２１４が２０００であり、ＩＰ２１５がＧＡ１でありｐｏｒｔ２１６が３０００であるため、パケットの送信先プライベートアドレスおよびｐｏｒｔおよびあて先アドレスおよびｐｏｒｔとそれぞれ同一であると判断される。
【０１２４】
そして、アドレス変換装置１００が、Ｅｓの状態管理エントリリンク２０５に基づいて状態管理エントリ（Ｅｓｔ＿ｔｍｐ）を検索する。ここでは、Ｅｓｔ＿ｔｍｐがＳ＿Ｅ３である。
【０１２５】
つぎに、アドレス変換装置１００が、Ｅｓｔ＿ｔｍｐの項目を以下のように再設定する。
【０１２６】
・Ｅｓｔ＿ｔｍｐのＥｘｐｉｒｅ時刻３０２：現時刻＋Ｅｘｐｉｒｅ時間
・Ｅｓｔ＿ｔｍｐの次リンク３０４で示されるエントリの前リンク３０３：Ｅｓｔ＿ｔｍｐの前リンク３０３の値
・Ｅｓｔ＿ｔｍｐの前リンク３０３で示されるエントリの次リンク３０４：Ｅｓｔ＿ｔｍｐの次リンク３０４の値
・Ｅｓｔ＿ｔｍｐの前リンク３０３：状態管理エントリ（ｔｏｐ）のポインタ
・Ｅｓｔ＿ｔｍｐの次リンク３０４：状態管理エントリ（ｔｏｐ）の次リンク３０４
・状態管理エントリ（ｔｏｐ）の次リンク３０４で示されるエントリの前リンク３０３：Ｅｓｔ_ｔｍｐのポインタ
・状態管理エントリ（ｔｏｐ）の次リンク３０４：Ｅｓｔ_ｔｍｐのポインタ
【０１２７】
つぎに、変換部６０４は、アドレス判断部６０３によってすべて同一であると判断された場合、パケットの送信先プライベートアドレスをＥｓのＩＰ２１７に変換し、パケットの送信先プライベートポートをＥｓのｐｏｒｔ２１８に変換する。具体的には、たとえば、パケットの送信先プライベートアドレスがＧＡ３に変換され、パケットの送信先プライベートｐｏｒｔが５０００に変換される。
【０１２８】
そして、送信部６０５が、変換部６０４により変換された変換後のパケットを送信する。
【０１２９】
図１０は、実施例２においての再設定後の状態管理テーブルを示す説明図である。状態管理テーブル１０００および状態管理テーブル３００は、状態管理エントリ（ｔａｉｌ）の前リンク３０３である状態管理エントリ内のＥｘｐｉｒｅ時刻が最も現時刻に近いエントリである。そして、Ｅｘｐｉｒｅの時刻順に並んでいるため、Ｅｘｐｉｒｅ時刻３０２が再設定された直後のＳ＿Ｅ３が、最も現時刻と遠い時刻である。よって、状態管理テーブル１０００は、ダミーエントリである状態管理エントリ（ｔｏｐ）の次にＳ＿Ｅ３が関連付けられている。
【０１３０】
（実施例３）
つぎに、実施例３では、異なる複数のパケットのあて先アドレスが同一であるが、あて先ポート番号が異なる場合について説明する。実施例３では、以下の様なアドレス情報を有するパケットがＬＡＮ１０１内のクライアントからＷＡＮ１０２内のサーバに送信される例を示す。
【０１３１】
・送信元プライベートアドレス：ＰＡ１
・送信元プライベートｐｏｒｔ：２００２
・あて先アドレス：ＧＡ１
・あて先ｐｏｒｔ：３００５
【０１３２】
受信部６０１と、情報抽出部６０２については、実施例１と同一であるため説明を省略する。
【０１３３】
そして、アドレス変換装置１００は、実施例１と同様にパケットの送信元プライベートアドレスおよびｐｏｒｔとあて先アドレスおよびｐｏｒｔの情報を基にＮＡＴ検索テーブル２０１からハッシュエントリを検索する。ここで、実施例１と同様にＮ１＿Ｅ１が検索されたとし、Ｎ１＿Ｅ１はダミーエントリであるため、アドレス変換装置１００は、Ｎ１＿Ｅ２をＥｓとする。
【０１３４】
つぎに、アドレス判断部６０３が、実施例１での処理と同様に送信元プライベートアドレスとＥｓのＩＰ２１３が同一であり、送信元プライベートポートとＥｓのｐｏｒｔ２１４が同一であるか否かを判断する。さらに、あて先アドレスとＥｓのＩＰ２１５が同一であり、あて先ポートとＥｓのｐｏｒｔ２１６が同一であるか否かを判断する。そして、アドレス判断部６０３によりいずれか一つであっても同一でないと判断された場合、Ｅｓの次リンク２０９が示すエントリをＥｓとし、それぞれが同一であると判断されるまでアドレス判断部６０３の処理を繰り返す。
【０１３５】
そして、アドレス変換装置１００は、アドレス判断部６０３により同一でないと判断され、Ｅｓの次リンク２０９が、ｎｕｌｌの場合、グローバルアドレス群から任意のアドレスを選択する。グローバルアドレス群は、上述例と同一である。ここでは、具体的には、たとえば、ＧＡ３が選択されてＡｄとする。
【０１３６】
また、第１の探索部６１２は、パケットのあて先アドレスとＡｄと一致する組み合わせを使用ＩＰ／ｐｏｒｔ情報テーブル４００から順に探索する。具体的には、たとえば、使用ＩＰ／ｐｏｒｔ情報テーブル４００から該当エントリを探索する。まず、ここでは、該当エントリの次リンク４０７であるＡ＿Ｅ２をＥａとする。
【０１３７】
さらに、第１の探索部６１２は、ＡｄとＥａの変換ＩＰが同一であるか、パケットのあて先アドレスとＥａのｄｓｔＩＰ４０２が同一であるか否かを判断しながら順にアドレス情報エントリを探索する。ここでは、ＡｄがＧＡ３であり、Ａ＿Ｅ２の変換ＩＰ４０１は、ＧＡ３であるため、同一であると判断され、パケットのあて先アドレスがＧＡ１であり、ｄｓｔＩＰ４０２がＧＡ２であるため同一であると判断される。よって、パケットのあて先アドレスおよびＡｄと一致する組み合わせとしてＡ＿Ｅ２が、探索される。
【０１３８】
つぎに、第２の探索部６１３が、第１の探索部６１２により探索された組み合わせ（アドレス情報エントリ）内の第２のリスト構造（使用ポートエントリのリスト構造を示す。）内の一連のノードが有するグローバルポート番号を順に探索してグローバルポート番号群の中で空いているグローバルポート番号を探索する。ここでは、第２の探索部６１３が、Ａ＿Ｅ２の次使用ｐｏｒｔ４０３を参照することで空いているグローバルポート番号を探索可能である。
【０１３９】
そして、Ａ＿Ｅ２の次使用ｐｏｒｔ４０３が、０であるため、第２の探索部６１３により空いているポート番号が探索されなかったため、アドレス変換装置１００が、グローバルアドレス群の中から未選択のアドレスをあらたに選択する。ここで、たとえば、ＡｄとしてＧＡ４が選択される。
【０１４０】
そして、再度、第１の探索部６１２および第２の探索部６１３の処理を実施する。ここでは、Ａ＿Ｅ２については、変換ＩＰ４０１が、ＧＡ３であることが探索済であるので、Ａ＿Ｅ２の次リンク４０７で示されるＡ＿Ｅ３をＥａとする。
【０１４１】
そして、第１の探索部６１２が、ＡｄとＥａの変換ＩＰが同一であるか、パケットのあて先アドレスとＥａのｄｓｔＩＰ４０２が同一であるか否かを判断する。ここで、Ａ＿Ｅ３の変換ＩＰがＧＡ４であり、Ａ＿Ｅ３のｄｓｔＩＰ４０２がＧＡ１であるため、それぞれＡｄとパケットのあて先アドレスと同一であると判断される。
【０１４２】
つぎに、Ａ＿Ｅ３の次使用ｐｏｒｔ４０３が、１２０００であるため、第２の探索部６１３により空いているグローバルポートが探索される。ここで、Ｅａの使用ｐｏｒｔエントリリンクで示される使用ｐｏｒｔエントリをＥｕとする。なお、ＬａｄｄｒにＥａのポインタを設定する。
【０１４３】
そして、設定部６０６が、パケットのあて先アドレスとＡｄとを組み合わせとして設定する。
【０１４４】
ノード生成部６１０は、空いているグローバルポート番号を有するノードを生成する。具体的には、たとえば、ノード生成部６１０が、使用ｐｏｒｔエントリを生成して、ｐｏｒｔ４０８に当該グローバルポート番号を設定する。
【０１４５】
そして、第２のリスト構造生成部６１１は、使用ｐｏｒｔエントリの双方向リストの最後尾にノード生成部６１０により生成された使用ｐｏｒｔエントリを関連付ける。または、生成された使用ｐｏｒｔエントリのｐｏｒｔ４０８の値とすでに双方向リストに含まれている使用ｐｏｒｔエントリが有するグローバルポート番号に基づいて、使用ｐｏｒｔエントリの双方向リスト内に生成されたエントリを番号順に関連付ける。
【０１４６】
具体的には、第２のリスト構造生成部６１１が、使用ｐｏｒｔエントリ（Ｅｕｎ）を生成する。そして、アドレス変換装置１００が、生成した使用ｐｏｒｔエントリの各項目をたとえば、以下のように設定する。
【０１４７】
・Ｅｕのｐｏｒｔ４０８：Ｅａの次使用ｐｏｒｔ
・Ｅｕｎの次リンク４１０：Ｅｕの次リンク
・Ｅｕｎの前リンク４０９：Ｅｕのポインタ
・Ｅｕの次リンク４１０：Ｅｕｎのポインタ
【０１４８】
Ｅｕｎの次リンク４１０がｎｕｌｌの場合、下記を設定する。
・Ｅｕｎの次リンク４１０で示されるエントリの前リンク４０９：Ｅｕｎのポインタ
【０１４９】
変換先ｐｏｒｔ番号としてＰｄが定義され、使用ｐｏｒｔエントリのリンクとしてＬｐｏｒｔが定義される。
・Ｐｄ：Ｅｕｎのｐｏｒｔ
・使用ｐｏｒｔエントリのリンク（Ｌｐｏｒｔ）：Ｅｕｎのポインタ
【０１５０】
本実施の形態では、使用ｐｏｒｔエントリリンクが次使用ｐｏｒｔ４０３の前段にリンクされているため、次の空きｐｏｒｔを探す探索位置を指し、１０２４（先頭）から探索する必要がないため、アドレス変換処理の高速化を図ることができる。
【０１５１】
つづいて、Ｅａの次使用ｐｏｒｔ４０３の再探索について説明する。まず、第２の探索部６１３が、ｐｏｒｔが１２０００であるため、空きｐｏｒｔをリストを辿って探索する。具体的には、使用ｐｏｒｔエントリの次リンク４１０の値に基づいてリストを辿り、たとえば、ｐｏｒｔ４０８が１２０００の次リンク４１０で示されるエントリのｐｏｒｔ４０８が１２００３であれば、１２００１および１２００２は空きｐｏｒｔであり、Ｅａの次使用ｐｏｒｔ４０３には、１２００１が空きポート番号として探索される。
【０１５２】
また、アドレス変換装置１００は、空きｐｏｒｔが無い場合には、ｎｕｌｌに到達するまで探索を繰り返す。本実施の形態では、ｐｏｒｔが、１０２４〜６５０００であるため、探索時間がかかる場合があるので、探索で辿る回数の上限値をあらかじめ設定して探索してもよく、これにより、アドレス変換装置１００の高速化を図ることができる。
【０１５３】
つぎに、アドレス変換装置１００が、ＮＡＴ変換テーブルエントリを生成してＮＡＴ検索テーブル２０１，２０２に追加し、状態管理エントリを生成して状態管理テーブル３００に関連付けるが、当該生成および関連付けの処理については、実施例１と同一であるため説明を省略する。
【０１５４】
図１１は、実施例３においてのエントリ追加後の使用ＩＰ／ｐｏｒｔ情報テーブルである。使用ＩＰ／ｐｏｒｔ情報テーブル１１００は、Ａ＿Ｅ３の使用ｐｏｒｔエントリリンク４０４がＰ３＿Ｅ４となり、Ａ＿Ｅ３の次使用ｐｏｒｔ４０３が、１２００１に設定されている。そして、Ｐ３＿Ｅ２とＰ３＿Ｅ３の間にＰ３＿Ｅ４が追加されている。そして、Ｐ３＿Ｅ４のｐｏｒｔ４０８が１２０００であり、前リンク４０９がＰ３＿Ｅ２であり、次リンク４１０がＰ３＿Ｅ３である。
【０１５５】
図１２は、実施例３においてのエントリ追加後のＮＡＴ検索テーブルを示す説明図である。ＮＡＴ検索テーブル１２０１には、Ｎ１＿Ｅ１とＮ１＿Ｅ２の間にＮ１＿Ｅ５が追加され、ＮＡＴ検索テーブル１２０２には、Ｎ２＿Ｅ１とＮ２＿Ｅ２の間にＮ２＿Ｅ５が追加されている。
【０１５６】
そして、Ｎ１＿Ｅ５のＩＰ２１３は、ＰＡ１であり、Ｎ１＿Ｅ５のｐｏｒｔ２１４は、２００２であり、Ｎ１＿Ｅ５のＩＰ２１５がＧＡ１であり、Ｎ１＿Ｅ５のｐｏｒｔ２１６が３００５である。さらに、Ｎ１＿Ｅ５のＩＰ２１７がＧＡ４であり、Ｎ１＿Ｅ５のｐｏｒｔ２１８が１２０００であり、状態管理エントリリンク２０５がＳ＿Ｅ５であり、アドレス情報エントリリンク２０６がＡ＿Ｅ４である。Ｎ１＿Ｅ５の使用ｐｏｒｔエントリリンク２０７がＰ４＿Ｅ２である。
【０１５７】
つぎに、変換部６０４が、パケットの送信元プライベートアドレスであるＰＡ１を、Ｎ１＿Ｅ５のＩＰ２１７であるＧＡ４に変換すると共に、パケットの送信元プライベートポートである２００２を、Ｎ１＿Ｅ５のｐｏｒｔ２１８である１２０００に変換する。そして、送信部６０５が、変換部６０４により変換された変換後のパケットを送信する。
【０１５８】
また、実施例１および３では、アドレス割り当て前にアドレス情報エントリや使用ｐｏｒｔエントリを生成しているが、割り当て後に生成してもよい。ここで、割り当て後にアドレス情報エントリや使用ｐｏｒｔエントリを生成する例を示す。
【０１５９】
まず、設定部６０６が、送信元グローバルアドレスがすでに割り当てられている割り当て済パケットのあて先アドレスと、第２のパケットの送信元グローバルアドレスとを組み合わせとして設定する。
【０１６０】
つぎに、第１の判断部６０７が、設定部６０６により設定された組み合わせが、当該組み合わせ以前に設定された一連の組み合わせの中にあるか否かを判断する。ここで、一連の組み合わせが、アドレス情報エントリをノードとしている双方向リスト構造（図４にて示している。）である。具体的には、たとえば、第１の判断部６０７が、双方向リスト構造内のアドレス情報エントリを辿って、同一の組み合わせがあるか否かを判断する。
【０１６１】
そして、第１のリスト構造生成部６０８が、一連の組み合わせが関連付けられた第１のリスト構造の最後尾に、第１の判断部６０７によりないと判断された組み合わせを関連付ける。具体的には、たとえば、第１のリスト構造生成部６０８が、アドレス情報エントリを生成して、当該変換ＩＰ４０１に割り当て済パケットの送信元グローバルアドレスを設定し、ｄｓｔＩＰ４０２に割り当て済パケットのあて先アドレスを設定する。なお、アドレス情報エントリ内の他の項目については、上述と同一であるため説明を省略する。
【０１６２】
つぎに、使用ｐｏｒｔエントリが生成される例を示す。第２の判断部６０９が、設定部６０６により設定された組み合わせが有する一連のノードの中に、割り当て済パケットの送信元グローバルポート番号を有するノードがあるか否かを判断する。具体的には、たとえば、第２の判断部６０９が、当該組み合わせと一致する組み合わせを有するアドレス情報エントリの使用ｐｏｒｔエントリをノードとする双方向リスト構造内に割り当て済パケットの送信元グローバルポート番号と一致するポート番号があるか否かを判断する。
【０１６３】
そして、ノード生成部１１０は、第２の判断部６０９によりないと判断された場合、割り当て済パケットの送信元グローバルポート番号を有するノードを生成する。具体的には、たとえば、ノード生成部１１０が、使用ｐｏｒｔエントリを生成し、当該エントリのｐｏｒｔ４０８へ割り当て済パケットの送信元グローバルポート番号を設定する。
【０１６４】
つぎに、第２のリスト構造生成部６１１は、一連のノードが関連付けられた第２のリスト構造内の最後尾にノード生成部１１０により生成されたノードを関連付ける。具体的には、たとえば、第２のリスト構造生成部６１１が、使用ｐｏｒｔエントリの双方向リスト構造内の最後尾のエントリにノード生成部１１０により生成された使用ｐｏｒｔエントリを挿入する。なお、前リンク４０９および次リンク４１０への設定に関しては、上述と同じであるため説明を省略する。
【０１６５】
これにより、あて先アドレスおよび送信元グローバルアドレスごとにどのポート番号が空いているかの探索を容易化することができる。さらに、従来ならば、あて先アドレスと、送信元グローバルアドレスと、ポート番号とで関連付けて記憶装置へ記憶していたが、ポート番号を双方向リスト構造とすることで、記憶装置の使用数を削減することができる。
【０１６６】
（実施例４）
つぎに、実施例４では、ＷＡＮ１０２内のサーバ（ＧＡ１）からＬＡＮ１０１内のクライアント（ＰＡ１）へパケットが送信される例について説明する。
【０１６７】
パケットに付与されているアドレスが下記であるとして説明する。
・送信元グローバルアドレス：ＧＡ１
・送信元グローバルｐｏｒｔ：３０００
・あて先グローバルアドレス：ＧＡ３
・あて先グローバルｐｏｒｔ：１０２４
【０１６８】
まず、受信部６０１は、グローバルネットワーク内の通信装置からプライベートネットワーク内の通信装置へのパケットを受信する。具体的には、たとえば、Ｉ／Ｆ５０８がパケットを受信する。つぎに、情報抽出部６０２の処理については、詳細な説明を省略する。
【０１６９】
つぎに、アドレス変換装置１００が、送信元グローバルアドレスおよびｐｏｒｔおよびあて先グローバルアドレスおよびｐｏｒｔに基づいてＮＡＴ検索テーブル７０２からハッシュエントリを検索する。ここで、検索された該当ハッシュエントリをＥｓとし、Ｅｓの次リンク（ｇ→ｐ）２２０で示されるエントリをＥｓとする。ここでは、ＥｓがＮ２＿Ｅ５である。
【０１７０】
そして、アドレス判断部６０３が、送信元グローバルアドレスとＥｓのＩＰ２１５が同一であるか、送信元グローバルポートとＥｓのｐｏｒｔ２１６が同一であるかを判断する。さらに、あて先グローバルアドレスとＥｓのＩＰ２１７が同一であるか、あて先グローバルｐｏｒｔとＥｓのｐｏｒｔ２１８が同一であるか否かを判断する。ここで、すべて同一でないと判断された場合、Ｅｓの次リンク（ｇ→ｐ）２２０で示されるエントリをＥｓとし、同一であると判断される、またはＥｓの次リンク（ｇ→ｐ）２２０がｎｕｌｌとなるまでアドレス判断部６０３の処理を繰り返す。
【０１７１】
Ｎ２＿Ｅ５は、ＥｓのＩＰ２１５がＧＡ２であり、Ｅｓのｐｏｒｔ２１６が３０００であり、ＥｓのＩＰ２１７がＧＡ３であり、Ｅｓのｐｏｒｔ２１８が１０２４である。よって、アドレス判断部６０３によりそれぞれが同一であると判断される。
【０１７２】
変換部６０４は、アドレス判断部６０３によりすべて同一であると判断された場合、あて先グローバルアドレスをＥｓのＩＰ２１７に変換し、あて先グローバルｐｏｒｔをＥｓのｐｏｒｔ２１８に変換する。そして、送信部６０５が、変換部６０４により変換された
変換後のパケットを送信する。
【０１７３】
つぎに、パケットに付与されているアドレスがそれぞれ下記であるとして説明する。
・送信元グローバルアドレス：ＧＡ１
・送信元グローバルｐｏｒｔ：３０００
・あて先グローバルアドレス：ＧＡ５
・あて先グローバルｐｏｒｔ：３０００
【０１７４】
受信部６０１、情報抽出部６０２の処理については上述例と同一であるため説明を省略する。
【０１７５】
つぎに、アドレス判断部６０３が、上述したように送信元グローバルアドレスとＥｓのＩＰ２１５が同一であるか、送信元グローバルポートとＥｓのｐｏｒｔ２１６が同一であるかを判断する。さらに、あて先グローバルアドレスとＥｓのＩＰ２１７が同一であるか、あて先グローバルｐｏｒｔとＥｓのｐｏｒｔ２１８が同一であるか否かを判断する。ここでは、ＥｓがＮ２＿Ｅ５であるが、それぞれ同一でないため、Ｎ２＿Ｅ５の次リンク（ｇ→ｐ）２２０に基づいてＮ２＿Ｅ２をＥｓとしてアドレス判断部６０３の処理を行う。
【０１７６】
ＮＡＴ変換テーブルエントリを順に辿っても、すべて同一であるＮＡＴ変換テーブルエントリがなく、Ｅｓの次リンク（ｇ→ｐ）２２０がｎｕｌｌであると、アドレス変換装置１００が、パケットを破棄する。
【０１７７】
これにより、ＬＡＮ１０１内の通信装置からのコネクションがあるＷＡＮ１０２内の通信装置のみが、ＬＡＮ１０１内の同一通信装置へパケットを送信することができる。
【０１７８】
また、状態管理エントリでは、Ｅｘｐｉｒｅ時刻３０２が設定されているため、アドレス変換装置は、現時刻より前の時刻が設定されている状態管理エントリを削除しなければならない。削除の処理については、後述の図２３〜図２５で示すフローチャートにて説明し、ここでの説明は省略する。
【０１７９】
（アドレス変換処理手順）
図１３〜図２２は、アドレス変換装置によるアドレス変換処理手順の一例を示すフローチャートである。本フローチャートで示す各ステップは、すべてアドレス変換装置１００による処理である。まず、受信部６０１により、パケットを受信して、当該受信時の受信インターフェースがＮＡＴ対象ポートからの受信、かつあて先ＩＰがグローバルＩＰであるか否かを判断する（ステップＳ１３０１）。
【０１８０】
そして、受信インターフェースがＮＡＴ対象ポートからの受信、かつあて先ＩＰがグローバルＩＰであると判断された場合（ステップＳ１３０１：Ｙｅｓ）、パケットの送信元ＩＰ／ｐｏｒｔおよびあて先ＩＰ／ｐｏｒｔの情報を基にＮＡＴ検索テーブル（ｐ→ｇ）からハッシュエントリを検索する（ステップＳ１３０４）。ここで、パケットの送信元ＩＰ／ｐｏｒｔの“／”は、「および」を示し、以下に記述されているあて先ＩＰ／ｐｏｒｔの“／”も、「および」を示している。また、ＮＡＴ検索テーブル（ｐ→ｇ）とは、具体的には、たとえば、ＮＡＴ検索テーブル２０１である。
【０１８１】
つぎに、ＮＡＴ変換テーブルの該当エントリをＥｓに設定し（ステップＳ１３０５）、Ｅｓの次リンクのエントリをＥｓとして設定する（ステップＳ１３０６）。アドレス判断部６０３によりパケットの送信元ＩＰとＥｓのｐｒｉｖａｔｅ  ｓｏｕｒｃｅ  ＩＰが同一であるか否かを判断する（ステップＳ１３０７）。
【０１８２】
そして、同一であると判断された場合（ステップＳ１３０７：Ｙｅｓ）、アドレス判断部６０３によりパケットの送信元ｐｏｒｔとＥｓのｐｒｉｖａｔｅ  ｓｏｕｒｃｅ  ｐｏｒｔが同一であるか否かを判断する（ステップＳ１３０８）。
【０１８３】
同一であると判断された場合（ステップＳ１３０８：Ｙｅｓ）、アドレス判断部６０３によりパケットのあて先ＩＰとＥｓのｐｒｉｖａｔｅ  ｄｅｓｔｉｎａｔｉｏｎ  ＩＰが同一であるか否かを判断する（ステップＳ１３０９）。同一であると判断された場合（ステップＳ１３０９：Ｙｅｓ）、アドレス判断部６０３により、パケットのあて先ｐｏｒｔとＥｓのｐｒｉｖａｔｅ  ｄｅｓｔｉｎａｔｉｏｎ  ｐｏｒｔが同一であるか否かを判断する（ステップＳ１３１０）。
【０１８４】
そして、同一であると判断された場合（ステップＳ１３１０：Ｙｅｓ）、図１４に移って、Ｅｓの状態管理エントリリンクに基づいて状態管理エントリ（Ｅｓｔ＿ｔｍｐ）を検索する（ステップＳ１３１２）。つぎに、Ｅｓｔ_ｔｍｐのＥｘｐｉｒｅ時刻＝現時刻＋Ｅｘｐｉｒｅ時間とし（ステップＳ１３１３）、Ｅｓｔ＿ｔｍｐの次リンクで示されるエントリの前リンク＝Ｅｓｔ＿ｔｍｐの前リンクとする（ステップＳ１３１４）。
【０１８５】
そして、Ｅｓｔ＿ｔｍｐの前リンクで示されるエントリの次リンク＝Ｅｓｔ＿ｔｍｐの次リンクとする（ステップＳ１３１５）。Ｅｓｔ＿ｔｍｐの前リンク＝状態管理エントリ（ｔｏｐ）のポインタとし（ステップＳ１３１６）、Ｅｓｔ＿ｔｍｐの次リンク＝状態管理エントリ（ｔｏｐ）の次リンクとする（ステップＳ１３１７）。さらに、状態管理エントリ（ｔｏｐ）の次リンクで示されるエントリの前リンク＝Ｅｓｔ_ｔｍｐのポインタとし（ステップＳ１３１８）、状態管理エントリ（ｔｏｐ）の次リンク＝Ｅｓｔ_ｔｍｐのポインタとする（ステップＳ１３１９）。
【０１８６】
そして、変換部６０４により、パケットの送信元ＩＰをＥｓのｇｌｏｂａｌ  ｓｏｕｒｃｅ  ＩＰに変換する（ステップＳ１３２０）。そして、変換部６０４により、パケットの送信元ｐｏｒｔをＥｓのｇｌｏｂａｌ  ｓｏｕｒｃｅ  ｐｏｒｔに変換し（ステップＳ１３２１）、変換後のパケットを送信する（ステップＳ１３２２）。ステップＳ１３１２〜ステップＳ１３１９により、状態管理エントリリンクが再設定される。
【０１８７】
一方、ステップＳ１３０７〜ステップＳ１３１０のいずれか一つのステップで同一でないと判断された場合（ステップＳ１３０７，Ｓ１３０８，Ｓ１３０９，Ｓ１３１０：Ｎｏ）、Ｅｓの次リンクがｎｕｌｌであるか否かを判断する（ステップＳ１３１１）。Ｅｓの次リンクがｎｕｌｌでないと判断された場合（ステップＳ１３１１：Ｎｏ）、ステップＳ１３０６へ戻る。
【０１８８】
また、Ｅｓの次リンクがｎｕｌｌであると判断された場合（ステップＳ１３１１：Ｙｅｓ）、図１５に移って、割り当て可能なグローバルアドレス群から未選択のアドレスがあるか否かを判断する（ステップＳ１５０１）。グローバルアドレス群から未選択のアドレスがあると判断された場合（ステップＳ１５０１：Ｙｅｓ）、未選択のアドレスから１つのアドレスをＡｄとして選択する（ステップＳ１５０２）。
【０１８９】
設定部６０６により、パケットのあて先ＩＰとＡｄとを組み合わせとして設定し、第１の探索部６１２により、当該組み合わせであるパケットのあて先ＩＰとＡｄに基づいて使用ＩＰ／ｐｏｒｔ情報テーブルを検索する（ステップＳ１５０３）。そして、使用ＩＰ／ｐｏｒｔ情報テーブル内の該当エントリをＥａに設定し（ステップＳ１５０４）、Ｅａの次リンクで示されたエントリをＥａに設定する（ステップＳ１５０５）。
【０１９０】
Ｌａｄｄｒ＝Ｅａのポインタとし（ステップＳ１５０６）、第１の判断部６０７により、Ｅａ内のｄｓｔＩＰ＝パケットのあて先ＩＰ、かつＥａ内の変換ＩＰ＝Ａｄであるか否かを判断する（ステップＳ１５０７）。Ｅａ内のｄｓｔＩＰ＝パケットのあて先ＩＰ、かつＥａ内の変換ＩＰ＝Ａｄであると判断された場合（ステップＳ１５０７：Ｙｅｓ）、第２の探索部６１３により、Ｅａの次使用ｐｏｒｔが０か否かを判断する（ステップＳ１５０８）。
【０１９１】
Ｅａの次使用ｐｏｒｔが０であると判断された場合（ステップＳ１５０８：Ｙｅｓ）、ステップＳ１５０１に戻る。ここでは、Ｅａの次使用ｐｏｒｔが０である場合、Ａｄとして選択されたグローバルアドレスと対になるグローバルポート群の中で空いているグローバルポート番号がないことを示している。
【０１９２】
また、ステップＳ１５０１において、グローバルアドレス群から未選択のアドレスがないと判断された場合（ステップＳ１５０１：Ｎｏ）、パケットを破棄し（ステップＳ１５０９）、一連の処理を終了する。ここでは、すべてのグローバルアドレスおよびポート番号が割り当てられているため、パケットが破棄されている。
【０１９３】
また、ステップＳ１５０７において、Ｅａ内のｄｓｔＩＰ＝パケットのあて先ＩＰでなく、またはＥａ内の変換ＩＰ＝Ａｄでないと判断された場合（ステップＳ１５０７：Ｎｏ）、Ｅａの次リンクがｎｕｌｌか否かを判断する（ステップＳ１５１０）。そして、ｎｕｌｌでないと判断された場合（ステップＳ１５１０：Ｎｏ）、ステップＳ１５０５に戻る。
【０１９４】
一方、Ｅａの次使用ｐｏｒｔが０でないと判断された場合（ステップＳ１５０８：Ｎｏ）、図１６に移って、Ｅａの使用ｐｏｒｔエントリリンクに基づいて最後尾の使用ｐｏｒｔエントリ（Ｅｕ）を検索する（ステップＳ１６０１）。そして、ノード生成部６１０により、使用ｐｏｒｔエントリ（Ｅｕｎ）を生成し（ステップＳ１６０２）、ノード生成部６１０により、Ｅｕのｐｏｒｔ＝Ｅａの次使用ｐｏｒｔとする（ステップＳ１６０３）。
【０１９５】
つぎに、第２のリスト構造生成部６１１により、Ｅｕｎの次リンク＝Ｅｕの次リンクとし（ステップＳ１６０４）、第２のリスト構造生成部６１１により、Ｅｕｎの前リンク＝Ｅｕのポインタとする（ステップＳ１６０５）。さらに、第２のリスト構造生成部６１１により、Ｅｕの次リンク＝Ｅｕｎのポインタとする（ステップＳ１６０６）。
【０１９６】
そして、Ｅｕｎの次リンクがｎｕｌｌであるか否かを判断する（ステップＳ１６０７）。Ｅｕｎの次リンクがｎｕｌｌでないと判断された場合（ステップＳ１６０７：Ｎｏ）、Ｅｕｎの次リンクで示されるエントリの前リンク＝Ｅｕｎのポインタとし（ステップＳ１６０８）、変換先ｐｏｒｔ番号（Ｐｄ）＝Ｅｕｎのｐｏｒｔとする（ステップＳ１６０９）。
【０１９７】
また、Ｅｕｎの次リンクがｎｕｌｌであると判断された場合（ステップＳ１６０７：Ｙｅｓ）、ステップＳ１６０９へ移行する。ステップＳ１６０９のつぎに、使用ｐｏｒｔエントリのリンク（Ｌｐｏｒｔ）＝Ｅｕｎのポインタとし（ステップＳ１６１０）、Ｌｕ＝Ｅｕｎのポインタとする（ステップＳ１６１１）。Ｎｐｏｒｔ＝Ｅａの次使用ｐｏｒｔ値＋１とし（ステップＳ１６１２）、ＣＯＵＮＴ＝０とする（ステップＳ１６１３）。
【０１９８】
ここで、ＣＯＵＮＴについて説明する。ＣＯＵＮＴは、アドレス変換装置１００が探索する使用ｐｏｒｔエントリの数をカウントするための変数である。割り当て可能なグローバルアドレスと対になるグローバルポート番号の数が多いため、アドレス変換装置１００が、空いているグローバルポート番号を探索する際にすべての使用ｐｏｒｔエントリを探索すると探索時間が膨大になってしまう。そこで、あらかじめ探索の上限値（本アドレス変換処理手順では最大カウンタ値）を設定し、上限値以下までの使用ｐｏｒｔエントリについては、探索するが、上限値を超える場合は、あらたにグローバルアドレスを割り当てることで、探索時間を削減することができる。
【０１９９】
ステップＳ１６１３のつぎに、図１７へ移って、Ｅｕ_ｔｍｐ＝Ｅｕｎとし（ステップＳ１６１４）、Ｎｐｏｒｔ＞ｐｏｒｔの最大値であるか否かを判断する（ステップＳ１６１５）。Ｎｐｏｒｔ＞ｐｏｒｔの最大値であると判断された場合（ステップＳ１６１５：Ｙｅｓ）、Ｎｐｏｒｔ＝ｐｏｒｔの最小値とする（ステップＳ１６１６）。
【０２００】
つづいて、Ｅｕ_ｔｍｐ＝Ｅａの使用ｐｏｒｔエントリ先頭リンク値で示される使用ｐｏｒｔエントリとし（ステップＳ１６１７）、Ｌｕ＝Ｅｕ_ｔｍｐのポインタとする（ステップＳ１６１８）。また、Ｎｐｏｒｔ＞ｐｏｒｔの最大値でないと判断された場合（ステップＳ１６１５：Ｎｏ）、ステップＳ１６１８へ移行する。
【０２０１】
ステップＳ１６１８のつぎに、Ｅｕ＿ｔｍｐの次リンクがｎｕｌｌであるか否かを判断し（ステップＳ１６１９）、Ｅｕ＿ｔｍｐの次リンクがｎｕｌｌであると判断された場合（ステップＳ１６１９：Ｙｅｓ）、Ｅｕ＿ｔｍｐを、Ｅｕ＿ｔｍｐの次リンクで示される使用ｐｏｒｔエントリに設定する（ステップＳ１６２０）。
【０２０２】
つぎに、Ｅｕ＿ｔｍｐのｐｏｒｔがＮｐｏｒｔであるか否かを判断する（ステップＳ１６２１）。そして、Ｅｕ＿ｔｍｐのｐｏｒｔがＮｐｏｒｔであると判断された場合（ステップＳ１６２１：Ｙｅｓ）、Ｎｐｏｒｔ＝Ｎｐｏｒｔ＋１、ＣＯＵＮＴ＝ＣＯＵＮＴ＋１とする（ステップＳ１６２２）。つづいて、ＣＯＵＮＴ＞最大カウンタ値であるか否かを判断し（ステップＳ１６２３）、ＣＯＵＮＴ＞最大カウンタ値でないと判断された場合（ステップＳ１６２３：Ｎｏ）、ステップＳ１６１５へ戻る。
【０２０３】
一方、ＣＯＵＮＴ＞最大カウンタ値であると判断された場合（ステップＳ１６２３：Ｙｅｓ）、Ｅａの次使用ｐｏｒｔ＝０とする（ステップＳ１６２４）。
【０２０４】
そして、ステップＳ１６２４のつぎに、Ｅａの次使用ｐｏｒｔ＝Ｎｐｏｒｔとし（ステップＳ１６２５）、Ｅａの使用ｐｏｒｔエントリリンク＝Ｌｕとし（ステップＳ１６２６）、ステップＳ１９０１へ移行する。ステップＳ１９０１の処理については、後述する。
【０２０５】
また、Ｅｕ＿ｔｍｐの次リンクがｎｕｌｌでないと判断された場合（ステップＳ１６１９：Ｎｏ）、またはＥｕ＿ｔｍｐのｐｏｒｔがＮｐｏｒｔでないと判断された場合（ステップＳ１６２１：Ｎｏ）、ステップＳ１６２５へ移行する。
【０２０６】
一方、図１５のステップＳ１５１０において、Ｅａの次リンクがｎｕｌｌであると判断された場合（ステップＳ１５１０：Ｙｅｓ）、図１８に移って、アドレス情報エントリ（Ｅａｎ）を生成する（ステップＳ１８０１）。つぎに、Ｅａｎの使用ポートエントリを２つ生成し（Ｅｕ＿ｔｏｐ、Ｅａｕ）（ステップＳ１８０２）、Ｅｕ＿ｔｏｐの次リンク＝Ｅａｕのポインタ（ステップＳ１８０３）、Ｅｕ＿ｔｏｐの前リンク＝ｎｕｌｌとする（ステップＳ１８０４）。
【０２０７】
つぎに、Ｅａｕのｐｏｒｔ＝ｐｏｒｔの最小値とし（ステップＳ１８０５）、Ｅａｕの次リンク＝ｎｕｌｌ、Ｅａｕの前リンク＝Ｅｕ＿ｔｏｐのポインタとし（ステップＳ１８０６）、Ｅａｎの変換ＩＰ＝Ａｄとする（ステップＳ１８０７）。
【０２０８】
そして、ＥａｎのｄｓｔＩＰ＝パケットのあて先ＩＰとし（ステップＳ１８０８）、Ｅａｎの次使用ｐｏｒｔ＝ｐｏｒｔの最小値＋１とし（ステップＳ１８０９）、Ｅａｎの使用ｐｏｒｔエントリリンク＝Ｅａｕのポインタとする（ステップＳ１８１０）。つぎに、Ｅａｎの使用ｐｏｒｔエントリ先頭リンク＝Ｅｕ＿ｔｏｐのポインタとし（ステップＳ１８１１）、Ｅａｎの次リンク＝ｎｕｌｌとし（ステップＳ１８１２）、Ｅａｎの前リンク＝Ｅａのポインタとする（ステップＳ１８１３）。
【０２０９】
そして、Ｅａの次リンク＝Ｅａｎのポインタとし（ステップＳ１８１４）、Ｐｄ＝Ｅａｕのｐｏｒｔとし（ステップＳ１８１５）、Ｌｐｏｒｔ＝Ｅａｕのポインタとする（ステップＳ１８１６）。
【０２１０】
そして、ステップＳ１６２６、またはステップＳ１８１６のつぎに、ＮＡＴ変換テーブルエントリ（Ｅｎ）を生成し（ステップＳ１９０１）、状態管理エントリ（Ｅｓｔ）を生成する（ステップＳ１９０２）。Ｅｎのｐｒｉｖａｔｅ  ｓｏｕｒｃｅ  ＩＰ＝パケットの送信元ＩＰとする（ステップＳ１９０３）。そして、Ｅｎのｐｒｉｖａｔｅ  ｓｏｕｒｃｅ  ｐｏｒｔ＝パケットの送信元ｐｏｒｔとし（ステップＳ１９０４）、Ｅｎのｐｒｉｖａｔｅ  ｄｅｓｔｉｎａｔｉｏｎ  ＩＰ＝パケットの送信先ＩＰとする（ステップＳ１９０５）。
【０２１１】
つぎに、Ｅｎのｐｒｉｖａｔｅ  ｄｅｓｔｉｎａｔｉｏｎ  ｐｏｒｔ＝パケットの送信先ｐｏｒｔとし（ステップＳ１９０６）、Ｅｎのｇｌｏｂａｌ  ｓｏｕｒｃｅ  ＩＰ＝Ａｄとし（ステップＳ１９０７）、Ｅｎのｇｌｏｂａｌ  ｓｏｕｒｃｅ  ｐｏｒｔ＝Ｐｄとする（ステップＳ１９０８）。
【０２１２】
そして、Ｅｎのアドレス情報エントリリンク＝Ｌａｄｄｒとし（ステップＳ１９０９）、Ｅｎの使用ｐｏｒｔエントリリンク＝Ｌｐｏｒｔとし（ステップＳ１９１０）、Ｅｎの状態管理エントリリンク＝Ｅｓｔのポインタとする（ステップＳ１９１１）。ＥｓｔのＮＡＴ変換エントリリンク＝Ｅｎとし（ステップＳ１９１２）、ＥｓｔのＥｘｐｉｒｅ時刻＝現時刻＋Ｅｘｐｉｒｅ時間とし（ステップＳ１９１３）、図２０に移って、Ｅｓｔの次リンク＝状態管理エントリ（ｔｏｐ）の次リンク値とする（ステップＳ１９１４）。
【０２１３】
つづいて、Ｅｓｔの前リンク＝状態管理エントリ（ｔｏｐ）のポインタとし（ステップＳ１９１５）、状態管理エントリ（ｔｏｐ）の次リンクで示されるエントリの前リンクの値＝Ｅｓｔのポインタとする（ステップＳ１９１６）。
【０２１４】
そして、状態管理エントリ（ｔｏｐ）の次リンク＝Ｅｓｔのポインタとし（ステップＳ１９１７）、ＮＡＴ検索テーブル（ｐ→ｇ）からＥｎのパケットの送信元ＩＰ／ｐｏｒｔおよびあて先ＩＰ／ｐｏｒｔの情報に基づいてハッシュエントリを検索する（ステップＳ１９１８）。つぎに、ハッシュエントリのリンクで示されるエントリをＥｐｒｅｖとして特定し（ステップＳ１９１９）、Ｅｐｒｅｖの次リンクで示されるエントリをＥｎｅｘｔに設定する（ステップＳ１９２０）。
【０２１５】
そして、Ｅｎの次リンク＝Ｅｎｅｘｔのポインタとし（ステップＳ１９２１）、Ｅｎの前リンク＝Ｅｐｒｅｖのポインタとし（ステップＳ１９２２）、Ｅｐｒｅｖの次リンク＝Ｅｎのポインタ（ステップＳ１９２３）、Ｅｎｅｘｔの前リンク＝Ｅｎのポインタとする（ステップＳ１９２４）。
【０２１６】
ステップＳ１９２４のつぎに、図２１に移って、Ｅｎのパケットの送信元ＩＰ／ｐｏｒｔおよびあて先ＩＰ／ｐｏｒｔに基づいてＮＡＴ検索テーブル（ｇ→ｐ）からハッシュエントリを検索する（ステップＳ１９２５）。ハッシュエントリのリンクで示されるエントリをＥｐｒｅｖとして特定し（ステップＳ１９２６）、Ｅｐｒｅｖの次リンクで示されるエントリをＥｎｅｘｔに設定する（ステップＳ１９２７）。つぎに、Ｅｎの次リンク＝Ｅｎｅｘｔのポインタとし（ステップＳ１９２８）、Ｅｎの前リンク＝Ｅｐｒｅｖのポインタとし（ステップＳ１９２９）、Ｅｐｒｅｖの次リンク＝Ｅｎのポインタとする（ステップＳ１９３０）。
【０２１７】
そして、Ｅｎｅｘｔの前リンク＝Ｅｎのポインタとし（ステップＳ１９３１）、パケットの送信元ＩＰをＥｎのｇｌｏｂａｌ  ｓｏｕｒｃｅ  ＩＰに変換する（ステップＳ１９３２）。つぎに、パケットの送信元ｐｏｒｔをｇｌｏｂａｌ  ｓｏｕｒｃｅ  ｐｏｒｔに変換し（ステップＳ１９３３）、変換後のパケットを送信し（ステップＳ１９３４）、一連の処理を終了する。
【０２１８】
一方、図１３のステップＳ１３０１において、受信インターフェースがＮＡＴ対象ポートからの受信でない、またはあて先ＩＰがグローバルＩＰでないと判断された場合（ステップＳ１３０１：Ｎｏ）、送信元ＩＰがグローバルＩＰ、かつ送信先ＩＰがＮＡＴ用ＩＰアドレスか否かを判断する（ステップＳ１３０２）。
【０２１９】
そして、送信元ＩＰがグローバルＩＰでない、または送信先ＩＰがＮＡＴ用ＩＰアドレスでないと判断された場合（ステップＳ１３０２：Ｎｏ）、パケットを送信し（ステップＳ１３０３）、一連の処理を終了する。ここでは、アドレス変換装置１００が受信したパケットが、プライベートネットワーク内で通信されるパケットであることを示している。よって、アドレス変換の必要がないため、未変換のままでパケットを送信している。
【０２２０】
一方、送信元ＩＰがグローバルＩＰであり、かつ送信先ＩＰがＮＡＴ用ＩＰアドレスであると判断された場合（ステップＳ１３０２：Ｙｅｓ）、図２２に移る。そして、パケットの送信元ＩＰ／ｐｏｒｔおよびあて先ＩＰ／ｐｏｒｔに基づいてＮＡＴ検索テーブル（ｇ→ｐ）からハッシュエントリを検索する（ステップＳ２２０１）。そして、ハッシュエントリのリンクで示されるエントリをＥｓとして特定し（ステップＳ２２０２）、Ｅｓの次リンクで示されるエントリをＥｓに設定する（ステップＳ２２０３）。
【０２２１】
パケットの送信元ＩＰとｐｒｉｖａｔｅのｄｅｓｔｉｎａｔｉｏｎ  ＩＰが同一であるか否かを判断する（ステップＳ２２０４）。そして、同一であると判断された場合（ステップＳ２２０４：Ｙｅｓ）、パケットの送信元ｐｏｒｔとｐｒｉｖａｔｅのｄｅｓｔｉｎａｔｉｏｎ  ｐｏｒｔが同一であるか否かを判断する（ステップＳ２２０５）。同一であると判断された場合（ステップＳ２２０５：Ｙｅｓ）、パケットのあて先ＩＰとｇｌｏｂａｌのｓｏｕｒｃｅ  ＩＰが同一であるか否かを判断する（ステップＳ２２０６）。
【０２２２】
そして、同一であると判断された場合（ステップＳ２２０６：Ｙｅｓ）、パケットのあて先ｐｏｒｔとｇｌｏｂａｌのｓｏｕｒｃｅ  ｐｏｒｔが同一であるか否かを判断する（ステップＳ２２０７）。同一であると判断された場合（ステップＳ２２０７：Ｙｅｓ）、つづいて、パケットのあて先ＩＰをＥｓのｐｒｉｖａｔｅ  ｓｏｕｒｃｅ  ＩＰに変換し（ステップＳ２２０８）、パケットのあて先ｐｏｒｔをＥｓのｐｒｉｖａｔｅ  ｓｏｕｒｃｅ  ｐｏｒｔに変換する（ステップＳ２２０９）。そして、変換後のパケットを送信し（ステップＳ２２１０）、一連の処理を終了する。
【０２２３】
一方、ステップＳ２２０４〜ステップＳ２２０７のうち、いずれか１つのステップで同一でないと判断された場合（ステップＳ２２０４，Ｓ２２０５，Ｓ２２０６，Ｓ２２０７：Ｎｏ）、Ｅｓの次リンクがｎｕｌｌか否かを判断する（ステップＳ２２１１）。そして、ｎｕｌｌでないと判断された場合（ステップＳ２２１１：Ｎｏ）、ステップＳ２２０３へ戻る。一方、ｎｕｌｌであると判断された場合（ステップＳ２２１１：Ｙｅｓ）、パケットを廃棄し（ステップＳ２２１２）、一連の処理を終了する。
【０２２４】
図２３〜図２５は、アドレス変換装置によるエントリの削除処理手順の一例を示すフローチャートである。本フローチャートで示す各ステップは、すべてアドレス変換装置１００による処理である。まず、状態管理エントリ（ｔａｉｌ）をＥｗｏｒｋに設定し（ステップＳ２３０１）、Ｅｗｏｒｋの前リンクの値と状態管理エントリ（ｔｏｐ）のポインタが同一か否かを判断する（ステップＳ２３０２）。そして、同一でないと判断された場合（ステップＳ２３０２：Ｎｏ）、Ｅｗｏｒｋの前リンクの値で示された状態管理エントリをＥｗｏｒｋとして設定する（ステップＳ２３０３）。
【０２２５】
つぎに、ＥｗｏｒｋのＥｘｐｉｒｅ時刻が現時刻より前か否かを判断する（ステップＳ２３０４）。そして、前であると判断された場合（ステップＳ２３０４：Ｙｅｓ）、図２４に移って、ＥｗｏｒｋのＮＡＴ変換エントリリンクで示されるＮＡＴ変換テーブルエントリをＥｄｎに設定する（ステップＳ２３０５）。つづいて、Ｅｄｎのアドレス情報エントリリンクで示されたアドレス情報エントリをＥｄａに設定し（ステップＳ２３０６）、Ｅｄｎの使用ｐｏｒｔエントリリンクで示された使用ｐｏｒｔエントリをＥｄｐに設定する（ステップＳ２３０７）。
【０２２６】
Ｅｄｐの前リンク値がＥｄａの使用ｐｏｒｔエントリ先頭リンクであり、かつＥｄｐの次リンクの値がｎｕｌｌか否かを判断する（ステップＳ２３０８）。そして、Ｅｄｐの前リンク値がＥｄａの使用ｐｏｒｔエントリ先頭リンクであり、かつＥｄｐの次リンク値がｎｕｌｌであると判断された場合（ステップＳ２３０８：Ｙｅｓ）、Ｅｄａの次リンクで示されるアドレス情報エントリの前リンクの値＝Ｅｄａの前リンクの値とする（ステップＳ２３０９）。
【０２２７】
つぎに、Ｅｄａの前リンクで示されるアドレス情報エントリの次リンクの値＝Ｅｄａの次リンクの値とする（ステップＳ２３１０）。そして、Ｅｄａの使用ｐｏｒｔエントリ先頭リンクで示される使用ｐｏｒｔエントリを削除し（ステップＳ２３１１）、ステップＳ２３１７へ移行する。
【０２２８】
一方、Ｅｄｐの前リンク値がＥｄａの使用ｐｏｒｔエントリ先頭リンクでない、またはＥｄｐの次リンク値がｎｕｌｌでないと判断された場合（ステップＳ２３０８：Ｎｏ）、Ｅｄｐの次リンクで示された使用ｐｏｒｔエントリの前リンクの値＝Ｅｄｐの前リンクの値とする（ステップＳ２３１２）。そして、Ｅｄｐの前リンクで示された使用ｐｏｒｔエントリの次リンクの値＝Ｅｄｐの次リンクの値とする（ステップＳ２３１３）。Ｅｄａの次使用ｐｏｒｔの値が０か否かを判断し（ステップＳ２３１４）、０であると判断された場合（ステップＳ２３１４：Ｙｅｓ）、Ｅｄａの次使用ｐｏｒｔの値＝Ｅｄｐのｐｏｒｔの値とする（ステップＳ２３１５）。
【０２２９】
つぎに、Ｅｄａの使用ｐｏｒｔエントリリンク＝Ｅｄｐの前リンクの値とし（ステップＳ２３１６）、Ｅｄａを削除する（ステップＳ２３１７）。また、ステップＳ２３１４において、０でないと判断された場合（ステップＳ２３１４：Ｎｏ）、ステップＳ２３１７へ移行する。これにより、使用ｐｏｒｔエントリを削除する際に、削除エントリのポート番号を、当該使用ｐｏｒｔエントリを有するアドレス情報エントリ内の次使用ｐｏｒｔに設定することで、空いているポート番号の検索処理時間を削減することができる。
【０２３０】
そして、ステップＳ２３１７のつぎに、図２５に移って、Ｅｄｎの前リンク（ｐ→ｇ）で示されたエントリの次リンク（ｐ→ｇ）の値＝Ｅｄｎの次リンク（ｐ→ｇ）の値とする（ステップＳ２３１８）。つぎに、Ｅｄｎの次リンク（ｐ→ｇ）がｎｕｌｌか否かを判断する（ステップＳ２３１９）。
【０２３１】
Ｅｄｎの次リンク（ｐ→ｇ）がｎｕｌｌでないと判断された場合（ステップＳ２３１９：Ｎｏ）、Ｅｄｎの次リンク（ｐ→ｇ）で示されたエントリの前リンク（ｐ→ｇ）の値＝Ｅｄｎの前リンク（ｐ→ｇ）の値とする（ステップＳ２３２０）。そして、Ｅｄｎの前リンク（ｇ→ｐ）で示されたエントリの次リンク（ｇ→ｐ）の値＝Ｅｄｎの次リンク（ｇ→ｐ）の値とする（ステップＳ２３２１）。
【０２３２】
一方、Ｅｄｎの次リンク（ｐ→ｇ）がｎｕｌｌであると判断された場合（ステップＳ２３１９：Ｙｅｓ）、ステップＳ２３２１に移行する。
【０２３３】
ステップＳ２３２１のつぎに、Ｅｄｎの次リンク（ｐ→ｇ）がｎｕｌｌであるか否かを判断する（ステップＳ２３２２）。Ｅｄｎの次リンク（ｐ→ｇ）がｎｕｌｌでないと判断された場合（ステップＳ２３２２：Ｎｏ）、Ｅｄｎの次リンク（ｇ→ｐ）で示されたエントリの前リンク（ｇ→ｐ）の値＝Ｅｄｎの前リンク（ｇ→ｐ）の値とし（ステップＳ２３２３）、ステップＳ２３０４へ戻る。一方、Ｅｄｎの次リンク（ｐ→ｇ）がｎｕｌｌであると判断された場合（ステップＳ２３２２：Ｙｅｓ）、ステップＳ２３０４へ戻る。
【０２３４】
一方、ステップＳ２３０２において、Ｅｗｏｒｋの前リンクの値と状態管理エントリ（ｔｏｐ）のポインタが同一であると判断された場合（ステップＳ２３０２：Ｙｅｓ）、一連の処理を終了する。また、ステップＳ２３０４において、ＥｗｏｒｋのＥｘｐｉｒｅ時刻が現時刻より前でないと判断された場合（ステップＳ２３０４：Ｎｏ）、一連の処理を終了する。
【０２３５】
また、本実施の形態では、ＮＡＴ検索テーブルと、状態管理テーブルと、使用ＩＰ／ｐｏｒｔ情報テーブルとを用いたリスト構造を用いて説明したが、これに限らず、あて先アドレスが異なるか否かによってグローバルアドレスを割り当てることができればよい。たとえば、図２６および図２７に示す。
【０２３６】
図２６は、他のリスト構造を用いる例１を示す説明図である。ａｄｄｒが、アドレス変換に使用可能なアドレスであり、ａｄｄｒとｐｏｒｔのすべての組み合わせに対してあて先アドレス（Ｄｉｐ＊＿＊（＊は番号））が関連付けられている。たとえば、ａｄｄｒがＩＰ１であり、ｐｏｒｔがｐ１の場合、あて先アドレスがＤｉｐ１＿１，Ｄｉｐ１＿２，・・Ｄｉｐ１＿ｉにおいて割り当てられている。これにより、少なくともあて先アドレスが異なれば同一の送信元グローバルアドレスおよびｐｏｒｔを割り当てることができる。
【０２３７】
図２７は、他のリスト構造を用いる例２を示す説明図である。ｈａｓｈ＿ｔａｂｌｅは、ハッシュテーブルであり、あて先アドレスと、送信元グローバルアドレスおよびｐｏｒｔを用いてハッシュ値が導出される。そして、あて先アドレス（Ｄｉｐ＊＿＊（＊は番号））ごとに送信元グローバルアドレス（ＩＰ）と、ｐｏｒｔ（ｐｙ、ｐｚ）とが関連付けられて、リスト構造となっている。
【０２３８】
アドレス変換装置１００が、送信元グローバルアドレスおよびｐｏｒｔを決定して、ｈａｓｈ＿ｔａｂｌｅからあて先アドレスと、送信元グローバルアドレスおよびｐｏｒｔの組み合わせがあるか否かを検索する。そして、検索されなかった場合、アドレス変換装置１００は、決定された送信元グローバルアドレスおよびｐｏｒｔの組み合わせを用いてアドレス変換を行う。これにより、少なくともあて先アドレスが異なれば同一の送信元グローバルアドレスおよびｐｏｒｔを割り当てることができる。
【０２３９】
以上説明したように、アドレス変換装置、アドレス変換方法、およびアドレス変換プログラムによれば、受信された第１のパケットのあて先アドレスと、すでに送信元グローバルアドレスが割り当てられた第２のパケットのあて先アドレスが異なる場合、第１のパケットの送信元プライベートアドレスに第２のパケットの送信元グローバルアドレスを割り当てる。これにより、グローバルアドレス割り当ての効率化を図ることができ、グローバルアドレスの使用数を削減することができる。
【０２４０】
また、少なくともあて先が異なる２つのパケットに対して、さらに、同一のグローバルポートを割り当てる。これにより、グローバルアドレスおよびグローバルポート番号割り当ての効率化を図ることができ、グローバルアドレスの使用数を削減することができる。
【０２４１】
また、異なる２つのパケットにおいて、あて先アドレスおよびポート番号と送信元プライベートアドレスおよびポート番号がすべて同一の場合、同一のグローバルアドレスおよび同一のポート番号を割り当てる。これにより、グローバルアドレス割り当ての効率化を図ることができる。
【０２４２】
また、第１のパケットのあて先アドレスと第２のパケットのあて先アドレスが同一の場合において、他のアドレス情報のいずれかが異なる場合、同一のグローバルアドレスを割り当てると共に、異なるポート番号を割り当てる。
【０２４３】
また、すでに割り当て済のパケットの送信元グローバルアドレスとあて先との組み合わせを第１のリスト構造として保持し、さらに、当該組み合わせごとに割り当てられたポート番号を第２のリスト構造として保持する。これにより、空いているポート番号の探索を高速に行うことができ、さらに、メモリリソースを削減することができる。
【０２４４】
また、第２のリスト構造内のノードをポート番号順に関連付けることでポート番号の探索を容易化および高速化できる。
【０２４５】
また、第１のリスト構造内から、パケットのあて先アドレスと選択されたグローバルアドレス（実施の形態ではＡｄ）と一致する組み合わせを探索する。さらに、探索された組み合わせの第２のリスト構造から空いているポート番号を探索する。これにより、空いているポート番号の探索を容易かつ高速に行うことができる。
【０２４６】
また、ポート番号を探索する際に、探索の上限値を決定し、第２のリスト構造から上限値分のノードを順に探索し、探索できなかった場合、割り当て可能なグローバルアドレス群から異なるグローバルアドレスを選択し、パケットのあて先アドレスに割り当てる。これにより、探索時間を削減することができる。
【０２４７】
また、グローバルネットワーク内の通信端末からプライベートネットワーク内の通信端末へのパケットを受信し、プライベートネットワーク内の通信端末からグローバルネットワークへすでにコネクションがあるか否かを判断する。そして、すでにコネクションが合った場合のみパケットのあて先グローバルアドレスおよびポート番号を、プライベートアドレスおよびポート番号に変換する。したがって、異なるパケットに同一のグローバルアドレスおよびポート番号を割り当てていても、グローバルネットワーク内の通信装置からプライベートネットワーク内の通信装置へ正しく送信することができる。
【０２４８】
なお、本実施の形態で説明したアドレス変換方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本アドレス変換プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本アドレス変換プログラムは、インターネット等のネットワークを介して配布してもよい。
【０２４９】
また、本実施の形態で説明したアドレス変換装置１００は、スタンダードセルやストラクチャードＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの特定用途向けＩＣ（以下、単に「ＡＳＩＣ」と称す。）やＦＰＧＡなどのＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）によっても実現することができる。具体的には、たとえば、上述したアドレス変換装置１００の機能（受信部６０１〜第２の探索部６１３）をＨＤＬ記述によって機能定義し、そのＨＤＬ記述を論理合成してＡＳＩＣやＰＬＤに与えることにより、アドレス変換装置１００を製造することができる。
【符号の説明】
【０２５０】
１００  アドレス変換装置
１０１  ＬＡＮ
１０２  ＷＡＮ
１０４  あて先ＩＰ
１０５  あて先ｐｏｒｔ
１０６  送信元プライベートＩＰ
１０７  送信元プライベートｐｏｒｔ
１０８  送信元グローバルＩＰ
１０９  送信元グローバルｐｏｒｔ
６０１  受信部
６０３  アドレス判断部
６０４  変換部
６０５  送信部
６０６  設定部
６０７  第１の判断部
６０８  第１のリスト構造生成部
６０９  第２の判断部
６１０  ノード生成部
６１１  第２のリスト構造生成部
【図１】
2011052082.tif 000003
【図２】
2011052082.tif 000004
【図３】
2011052082.tif 000005
【図４】
2011052082.tif 000006
【図５】
2011052082.tif 000007
【図６】
2011052082.tif 000008
【図７】
2011052082.tif 000009
【図８】
2011052082.tif 000010
【図９】
2011052082.tif 000011
【図１０】
2011052082.tif 000012
【図１１】
2011052082.tif 000013
【図１２】
2011052082.tif 000014
【図１３】
2011052082.tif 000015
【図１４】
2011052082.tif 000016
【図１５】
2011052082.tif 000017
【図１６】
2011052082.tif 000018
【図１７】
2011052082.tif 000019
【図１８】
2011052082.tif 000020
【図１９】
2011052082.tif 000021
【図２０】
2011052082.tif 000022
【図２１】
2011052082.tif 000023
【図２２】
2011052082.tif 000024
【図２３】
2011052082.tif 000025
【図２４】
2011052082.tif 000026
【図２５】
2011052082.tif 000027
【図２６】
2011052082.tif 000028
【図２７】
2011052082.tif 000029
【手続補正書】
【提出日】平成24年3月27日(2012.3.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プライベートネットワーク内の通信装置からグローバルネットワーク内の通信装置へのパケットを受信する受信手段と、
前記受信手段により受信された第１のパケットのあて先アドレスが、前記第１のパケットよりも前に受信された第２のパケットのあて先アドレスと同一であるか否かを判断するアドレス判断手段と、
前記アドレス判断手段により異なると判断された場合、前記第１のパケットの送信元プライベートアドレスを、前記第２のパケットに割り当てられた送信元グローバルアドレスに変換する変換手段と、
前記変換手段により変換された変換後の第１のパケットを送信する送信手段と、
を備えることを特徴とするアドレス変換装置。
【請求項２】
前記変換手段は、
前記アドレス判断手段により異なると判断された場合、さらに、前記第１のパケットの送信元プライベートポート番号を、前記第２のパケットの送信元グローバルポート番号に変換し、
前記送信手段は、
前記変換手段により変換された変換後の第１のパケットを送信することを特徴とする請求項１に記載のアドレス変換装置。
【請求項３】
前記アドレス判断手段は、
前記第１のパケットのあて先アドレスおよびポート番号が、前記第２のパケットのあて先アドレスおよびポート番号と同一であり、かつ前記第１のパケットの送信元プライベートアドレスおよびポート番号が、前記第２のパケットの送信元プライベートアドレスおよびポート番号と同一であるか否かを判断し、
前記変換手段は、
前記アドレス判断手段によりすべて同一であると判断された場合、前記第１のパケットの送信元プライベートアドレスおよびポート番号を、前記第２のパケットに割り当てられた送信元グローバルアドレスおよびポート番号に変換し、
前記送信手段は、
前記変換手段により変換された変換後の第１のパケットを送信することを特徴とする請求項２に記載のアドレス変換装置。
【請求項４】
前記アドレス判断手段は、
前記第１のパケットのあて先アドレスおよびポート番号が、前記第２のパケットのあて先アドレスおよびポート番号と同一であり、かつ前記第１のパケットの送信元プライベートアドレスおよびポート番号が、前記第２のパケットの送信元プライベートアドレスおよびポート番号と同一であるか否かを判断し、
前記変換手段は、
前記アドレス判断手段により前記第１のパケットのあて先アドレスが、前記第２のパケットのあて先アドレスと同一であると判断された場合において、前記第１のパケットのあて先ポート番号が、前記第２のパケットのあて先ポート番号と異なると判断された場合、または前記第１のパケットの送信元プライベートアドレスが、前記第２のパケットの送信元プライベートアドレスと異なると判断された場合、または前記第１のパケットの送信元プライベートポート番号が、前記第２のパケットの送信元プライベートポート番号と異なると判断された場合、前記第１のパケットの送信元プライベートアドレスを、前記第２のパケットの送信元グローバルアドレスに変換すると共に、前記第１のパケットの送信元プライベートポート番号を、前記送信元グローバルアドレスと対になるグローバルポート番号群内の前記第２のパケットの送信元グローバルポート番号と異なるグローバルポート番号に変換し、
前記送信手段は、
前記変換手段により変換された変換後の第１のパケットを送信することを特徴とする請求項２に記載のアドレス変換装置。
【請求項５】
前記第２のパケットのあて先アドレスと前記第２のパケットの送信元グローバルアドレスとを組み合わせとして設定する設定手段と、
前記設定手段により設定された組み合わせが、当該組み合わせ以前に設定され、第１のリスト構造内で関連付けられた一連の組み合わせの中にあるか否かを判断する第１の判断手段と、
前記一連の組み合わせが関連付けられた第１のリスト構造の最後尾に、前記第１の判断手段によりないと判断された組み合わせを関連付ける第１のリスト構造生成手段と、
前記設定手段により設定された各組み合わせについての割り当て済みポートを示す第２のリスト構造内で関連付けられた一連のノードの中に、前記第２のパケットに割り当てられた送信元グローバルポート番号を有するノードがあるか否かを判断する第２の判断手段と、
前記第２の判断手段によりないと判断された場合、前記第２のパケットに割り当てられた送信元グローバルポート番号を有するノードを生成するノード生成手段と、
前記一連のノードが関連付けられた第２のリスト構造内の最後尾に前記ノード生成手段により生成されたノードを関連付ける第２のリスト構造生成手段と、
を備えることを特徴とする請求項４に記載のアドレス変換装置。
【請求項６】
前記第２のリスト構造生成手段は、
前記第２のパケットに割り当てられたグローバルポート番号と前記第２のリスト構造内の各ノードが有するグローバルポート番号に基づいて、前記第２のリスト構造内に前記ノード生成手段により生成されたノードを番号順に関連付けることを特徴とする請求項５に記載のアドレス変換装置。
【請求項７】
前記第１のパケットのあて先アドレスと一致する前記第２のパケットのグローバルアドレスを含む前記組み合わせを、前記第１のリスト構造生成手段により生成された第１のリスト構造内を順に探索する第１の探索手段と、
前記第１の探索手段により探索された組み合わせについての第２のリスト構造内の一連のノードが有するグローバルポート番号を順に探索して前記グローバルポート番号群の中で空いているグローバルポート番号を探索する第２の探索手段と、
を備え、
前記変換手段は、
前記第１のパケットの送信元プライベートアドレスを、前記第２のパケットの送信元グローバルアドレスに変換すると共に、前記第１のパケットの送信元プライベートポート番号を、前記第２の探索手段により探索されたグローバルポート番号に変換し、
前記送信手段は、
前記変換手段により変換された変換後の第１のパケットを送信することを特徴とする請求項５に記載のアドレス変換装置。
【請求項８】
前記第２の探索手段は、
前記第１の探索手段により探索された組み合わせについての前記第２のリスト構造内の各ノードを所定のノード数まで順に探索し、
前記変換手段は、
前記第１のパケットの送信元プライベートアドレスを、前記第２のパケットの送信元グローバルアドレスに変換すると共に、前記第１のパケットの送信元プライベートポート番号を、前記第２の探索手段により探索されたグローバルポート番号に変換し、
前記送信手段は、
前記変換手段により変換された変換後の第１のパケットを送信することを特徴とする請求項７に記載のアドレス変換装置。
【請求項９】
前記変換手段は、
前記第２の探索手段により前記空いているグローバルポート番号が探索されなかった場合、前記第１のパケットの送信元プライベートアドレスを、前記第２のパケットに割り当てられた送信元グローバルアドレスと異なる送信元グローバルアドレスに変換し、前記第１のパケットの送信元プライベートポート番号を、前記異なる送信元グローバルアドレスと対になるグローバルポート群の中で選択されたグローバルポート番号に変換し、
前記送信手段は、
前記変換手段により変換された変換後の第１のパケットを送信することを特徴とする請求項８に記載のアドレス変換装置。
【請求項１０】
前記受信手段は、
前記グローバルネットワーク内の通信装置から前記プライベートネットワーク内の通信装置へのパケットを受信し、
前記判断手段は、
前記受信手段により受信された第３のパケットのあて先アドレスおよびポート番号が、前記変換後の第１のパケットの送信元グローバルアドレスおよびポート番号と同一であり、かつ前記第３のパケットの送信元グローバルアドレスおよびポート番号が、前記第１のパケットのあて先アドレスおよびポート番号が同一であるか否かを判断し、
前記変換手段は、
前記判断手段により同一であると判断された場合、前記第３のパケットのあて先アドレスおよびポート番号を、前記第１のパケットの送信元プライベートアドレスおよびポート番号に変換し、
前記送信手段は、
前記変換手段により変換された変換後の第３のパケットを送信することを特徴とする請求項１ないし８に記載のアドレス変換装置。
【請求項１１】
コンピュータが、
プライベートネットワーク内の通信装置からグローバルネットワーク内の通信装置へのパケットを受信する受信工程と、
前記受信工程により受信された第１のパケットのあて先アドレスが、前記第１のパケットよりも前に受信された第２のパケットのあて先アドレスと同一であるか否かを判断するアドレス判断工程と、
前記アドレス判断工程により異なると判断された場合、前記第１のパケットの送信元プライベートアドレスを、前記第２のパケットに割り当てられた送信元グローバルアドレスに変換する変換工程と、
前記変換工程により変換された変換後の第１のパケットを送信する送信工程と、
を実行することを特徴とするアドレス変換方法。
【請求項１２】
コンピュータを、
プライベートネットワーク内の通信装置からグローバルネットワーク内の通信装置へのパケットを受信する受信手段、
前記受信手段により受信された第１のパケットのあて先アドレスが、前記第１のパケットよりも前に受信された第２のパケットのあて先アドレスと同一であるか否かを判断するアドレス判断手段、
前記アドレス判断手段により異なると判断された場合、前記第１のパケットの送信元プライベートアドレスを、前記第２のパケットに割り当てられた送信元グローバルアドレスに変換する変換手段、
前記変換手段により変換された変換後の第１のパケットを送信する送信手段、
として機能させることを特徴とするアドレス変換プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プライベートネットワークとグローバルネットワークとの間で通信されるパケットのアドレスを変換するアドレス変換装置、アドレス変換方法、およびアドレス変換プログラムに関する。
【背景技術】
【０００２】
現在のインターネットの通信環境では、ＩＰｖ４（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  ｖｅｒｓｉｏｎ  ４）が用いられており、インターネット上では、ＩＰｖ４のグローバルアドレス（全世界で一意に割り当てられたアドレス）での通信のみ行われている。
【０００３】
しかしながら、ネットワーク接続端末数の増加や端末の脆弱性を突く攻撃の増大に対する防御の必要性の高まりから、企業や各家庭では、企業内や各家庭内でのみ使用可能なプライベートアドレスを用いて通信を行っている。インターネットを経由した先の端末と通信するときは、一般的には、アドレス変換装置を用いてプライベートアドレスからグローバルアドレスに変換を行っている（ＮＡＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｅ））（下記特許文献１および２を参照。）。なお、グローバルアドレスの数×ポート番号の数のコネクションに対しては、一意に、グローバルアドレスとポート番号を割り当てることができる。
【０００４】
アドレス変換については、たとえば、企業の場合は企業ネットワークとインターネットの境界上で実施し、各家庭においては、各家庭に置かれたブロードバンドルータで実施している。
【０００５】
しかしながら、近年のネットワーク接続端末数の増大度合いは著しく、ＩＰｖ４アドレスが枯渇すると想定されており、インターネットに通信するためのＩＰｖ４グローバルアドレスが足りなくなる状況が近づいてきている。
【０００６】
また、複数の端末に同一のグローバルアドレスを集約可能なアドレス変換は有効ではある。しかしながら、各家庭の場合は、ブロードバンドルータでアドレス変換を実施しているので家庭単位に１つのグローバルアドレスを割り当てているため、アドレスの割り当てはあまり効率化されていない。
【０００７】
そのため、各家庭に置かれたブロードバンドルータでアドレス変換をするのではなく、ＩＳＰ（Ｉｎｔｅｒｎｅｔ  Ｓｅｒｖｉｃｅ  Ｐｒｏｖｉｄｅｒ）等のキャリア事業者でまとめてアドレス変換を実施するキャリアグレードＮＡＴが知られている。キャリアグレードＮＡＴとは非常に大規模にＮＡＴを実施する装置であり、ＩＳＰに加入している全端末の通信を一手に引き受け、アドレス変換を実施する装置である。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００２−２０４２５２号公報
【特許文献２】特開２０００−１５６７１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、キャリアグレードＮＡＴであってもアドレス変換方式は各家庭のブロードバンドルータが実施するＮＡＴのアドレス変換方式と同一である。したがって、一つの通信（ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）／ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）等の通信）単位にグローバルＩＰとポート番号の組をユニークに割り当てる。そして、通信が終了したら別の通信に再割り当てすることで、グローバルアドレスの利用を効率化していた。
【００１０】
しかしながら、現在はインターネットに接続する端末の数／種類共に非常に増大していると共に、一度の通信で使用するＴＣＰコネクションの数が増大している問題点があった。たとえば、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）の利用者がブラウザでＷｅｂ画面を見るだけでも、従来では１ＴＣＰコネクションで行っていたのが、近年では数百のＴＣＰコネクションで行う場合がある。
【００１１】
また、グローバルアドレスの使用数が増大しているという問題点があるため、キャリアグレードＮＡＴを導入してグローバルアドレス使用の効率化がそれほど実現できないといった問題点があった（具体的には、ポート番号は約６万５千個なので、６万５千のＴＣＰコネクションやＵＤＰ通信が発生すると、別のグローバルＩＰアドレスを用意しなければならなくなるためである。）。
【００１２】
本発明は、上述した従来技術による問題点を解消するため、グローバルアドレスおよびポート番号の割り当ての効率化を図り、グローバルアドレスの使用数を削減することができるアドレス変換装置、アドレス変換方法、およびアドレス変換プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の一観点によれば、プライベートネットワーク内の通信装置からグローバルネットワーク内の通信装置へのパケットを受信する受信手段と、前記受信手段により受信された第１のパケットのあて先アドレスが、前記第１のパケットよりも前に受信された第２のパケットのあて先アドレスと同一であるか否かを判断するアドレス判断手段と、前記アドレス判断手段により異なると判断された場合、前記第１のパケットの送信元プライベートアドレスを、前記第２のパケットに割り当てられた送信元グローバルアドレスに変換する変換手段と、前記変換手段により変換された変換後の第１のパケットを送信する送信手段と、を備えるアドレス変換装置が提供される。
【発明の効果】
【００１４】
本アドレス変換装置、アドレス変換方法、およびアドレス変換プログラム、によれば、グローバルアドレスおよびポート番号の割り当ての効率化を図り、グローバルアドレスの使用数を削減することができるという効果を奏する。
【図面の簡単な説明】
【００１５】
【図１】図１は、本発明の一実施例を示す説明図である。
【図２】図２は、ＮＡＴ検索テーブルを示す説明図である。
【図３】図３は、状態管理テーブルを示す説明図である。
【図４】図４は、使用ＩＰ／ｐｏｒｔ情報テーブルを示す説明図である。
【図５】図５は、本実施の形態にかかるアドレス変換装置のハードウェア構成を示すブロック図である。
【図６】図６は、アドレス変換装置１００の機能的構成を示すブロック図である。
【図７】図７は、実施例１においてエントリ追加後のＮＡＴ検索テーブルを示す説明図である。
【図８】図８は、実施例１においてエントリ追加後の状態管理テーブルを示す説明図である。
【図９】図９は、実施例１においてエントリ追加後の使用ＩＰ／ｐｏｒｔ情報テーブルを示す説明図である。
【図１０】図１０は、実施例２においての再設定後の状態管理テーブルを示す説明図である。
【図１１】図１１は、実施例３においてのエントリ追加後の使用ＩＰ／ｐｏｒｔ情報テーブルである。
【図１２】図１２は、実施例３においてのエントリ追加後のＮＡＴ検索テーブルを示す説明図である。
【図１３】図１３は、アドレス変換装置によるアドレス変換処理手順の一例を示すフローチャート（その１）である。
【図１４】図１４は、アドレス変換装置によるアドレス変換処理手順の一例を示すフローチャート（その２）である。
【図１５】図１５は、アドレス変換装置によるアドレス変換処理手順の一例を示すフローチャート（その３）である。
【図１６】図１６は、アドレス変換装置によるアドレス変換処理手順の一例を示すフローチャート（その４）である。
【図１７】図１７は、アドレス変換装置によるアドレス変換処理手順の一例を示すフローチャート（その５）である。
【図１８】図１８は、アドレス変換装置によるアドレス変換処理手順の一例を示すフローチャート（その６）である。
【図１９】図１９は、アドレス変換装置によるアドレス変換処理手順の一例を示すフローチャート（その７）である。
【図２０】図２０は、アドレス変換装置によるアドレス変換処理手順の一例を示すフローチャート（その８）である。
【図２１】図２１は、アドレス変換装置によるアドレス変換処理手順の一例を示すフローチャート（その９）である。
【図２２】図２２は、アドレス変換装置によるアドレス変換処理手順の一例を示すフローチャート（その１０）である。
【図２３】図２３は、アドレス変換装置によるエントリの削除処理手順の一例を示すフローチャート（その１）である。
【図２４】図２４は、アドレス変換装置によるエントリの削除処理手順の一例を示すフローチャート（その２）である。
【図２５】図２５は、アドレス変換装置によるエントリの削除処理手順の一例を示すフローチャート（その３）である。
【図２６】図２６は、他のリスト構造を用いる例１を示す説明図である。
【図２７】図２７は、他のリスト構造を用いる例２を示す説明図である。
【発明を実施するための形態】
【００１６】
本発明にかかるアドレス変換装置、アドレス変換方法、およびアドレス変換プログラムの好適な実施の形態を詳細に説明する。
【００１７】
本実施の形態では、アドレス変換において変換後のグローバルアドレスおよびポート番号を複数の通信（本実施の形態では、パケット）に対して同一値を割り当てることで、１グローバルアドレスで約６万５千通信しか割り当てることができない壁を取り払うことが可能となる。これにより、アドレス使用効率を向上させることができる。
【００１８】
グローバルアドレスとポート番号は、１つの通信にユニークな値（アドレスとポート番号の組み合わせ）を設定しなければ動作できない。サーバもしくはクライアントが複数の通信に同一ＩＰアドレスおよびポート番号を割り当てるのは規約違反のため、正しい動作ができなくなる。
【００１９】
しかしながら、当該規約はサーバもしくはクライアントのエンド端末に対する制約であり、プライベートネットワークとグローバルネットワーク間でアドレス変換を行うアドレス変換装置において、送信元プライベートアドレスおよびポート番号とあて先アドレスおよびポート番号の組み合わせがユニークに決定していればアドレス変換の判別ができる。
【００２０】
したがって、通信のあて先アドレスが異なる複数の通信に対して、アドレス変換で使用するグローバルアドレスとポートの組み合わせを割り当てても、通信が破綻することはない。具体的には、アドレス変換装置においては、あて先アドレスが異なっているため、送信元アドレスおよびポートとあて先アドレスおよびポートの組み合わせが複数の通信に対して同じになることはなく、アドレス変換処理のための判別処理は可能である。そして、サーバにおいては、同一の送信元グローバルアドレスおよびポート番号の組み合わせを持つ別通信がネットワーク上を流れていても、当該サーバにその通信が届くことはないため、サーバの処理が破綻することはない。
【００２１】
また、クライアントにおいては、アドレス変換が問題なく動けば、当該クライアントで割り当てた送信元プライベートアドレスとポート番号の組み合わせは一意であり、その内容を変えられることはないため、クライアントの処理が破綻することはない。
【００２２】
よって、本実施の形態では、あて先アドレスが異なる２つのパケットに対して同一の送信元グローバルアドレスを割り当てることで、アドレス割り当ての効率を向上させ、アドレス使用数を抑制する。
【００２３】
以下に添付図面を参照して、本実施の形態を詳細に説明する。
【００２４】
図１は、本発明の一実施例を示す説明図である。図１では、ＰＡ１が、プライベートネットワークであるＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）１０１内の通信端末であり、ＧＡ１およびＧＡ２が、グローバルネットワークであるＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）１０２内の通信端末である。ＰＡ１からＧＡ１またはＧＡ２へのパケットは、アドレス変換装置１００によりアドレスが変換されることで送信される。
【００２５】
ここでは、アドレス変換装置１００が割り当て可能なグローバルアドレスがＧＡ３とＧＡ４とし、割り当て可能なポート番号が１０２４とする。
【００２６】
まず、１つ目のパケットのあて先ＩＰ（あて先アドレス）が、ＧＡ１であり、ｐｏｒｔ（ポート番号）が２０００であり、送信元プライベートＩＰがＰＡ１であり、ｐｏｒｔが３０００である。
【００２７】
つぎに、アドレス変換装置１００が、変換テーブル１０３にあて先ＩＰ１０４およびｐｏｒｔ１０５と、送信元プライベートＩＰ１０６およびｐｏｒｔ１０７を設定する。変換テーブル１０３は、あて先ＩＰ１０４およびｐｏｒｔ１０５と、送信元プライベートＩＰ１０６およびｐｏｒｔ１０７と、送信元グローバルＩＰ１０８およびｐｏｒｔ１０９とを１レコードとして受信されたパケットごとに設定される。
【００２８】
そして、アドレス変換装置１００が、割り当て可能なグローバルアドレスからＧＡ３が選択すると共に、ポート番号に１０２４を選択し、変換テーブル１０３内の送信元グローバルＩＰ１０８にＧＡ３を設定し、送信元グローバルｐｏｒｔ１０９に１０２４を設定する。
【００２９】
そして、アドレス変換装置１００が、１つ目のパケットの送信元プライベートＩＰを、送信元グローバルＩＰ１０８であるＧＡ３に変換すると共に、１つ目のパケットの送信元プライベートｐｏｒｔを、送信元グローバルｐｏｒｔ１０９である１０２４に変換し、送信する。
【００３０】
つぎに、２つ目のパケットのあて先ＩＰがＧＡ１であり、ｐｏｒｔが２００１であり、送信元プライベートＩＰがＰＡ１であり、ｐｏｒｔが３００１である。よって、アドレス変換装置１００が、変換テーブル１０３内のあて先ＩＰ１０４およびｐｏｒｔ１０５と、送信元プライベートＩＰ１０６およびｐｏｒｔ１０７を設定する。そして、アドレス変換装置１００が、割り当て可能なグローバルアドレスからＧＡ３を選択する。
【００３１】
しかしながら、送信元グローバルＩＰにＧＡ３が割り当てられた１つ目のパケットのあて先ＩＰと２つ目のパケットのあて先ＩＰが同一であり、かつあて先ｐｏｒｔが異なるため、ＧＡ４がグローバルアドレスとして割り当てられる。そして、ポート番号に１０２４が割り当てられ、アドレス変換装置１００が、変換テーブル１０３内の送信元グローバルＩＰ１０８にＧＡ４、送信元グローバルｐｏｒｔ１０９に１０２４を設定する。
【００３２】
アドレス変換装置１００が、２つ目のパケットの送信元プライベートＩＰを送信元グローバルＩＰ１０８であるＧＡ４に変換すると共に、２つ目のパケットの送信元プライベートｐｏｒｔを送信元グローバルｐｏｒｔ１０９である１０２４に変換する。そして、変換後のパケットを送信する。
【００３３】
そして、３つ目のパケットのあて先ＩＰが、ＧＡ２であり、ｐｏｒｔが２０００であり、送信元プライベートＩＰがＰＡ１であり、ｐｏｒｔが３００２である。アドレス変換装置１００が、変換テーブルテーブル１０３内のあて先ＩＰ１０４およびｐｏｒｔ１０５と、送信元プライベートＩＰ１０６およびｐｏｒｔ１０７を設定する。そして、アドレス変換装置１００が、割り当て可能なグローバルアドレスからＧＡ３を選択する。
【００３４】
送信元グローバルＩＰにＧＡ３が割り当てられた１つ目のパケットのあて先ＩＰと３つ目のパケットのあて先ＩＰが異なるため、３つ目のパケットの送信元グローバルＩＰにＧＡ３が割り当てられ、ｐｏｒｔに１０２４が割り当てられる。アドレス変換装置１００が、変換テーブル１０３内の送信元グローバルＩＰ１０８にＧＡ３、送信元グローバルｐｏｒｔ１０９に１０２４を設定する。
【００３５】
そして、アドレス変換装置１００が、３つ目のパケットの送信元プライベートＩＰを送信元グローバルＩＰであるＧＡ３に変換すると共に、送信元プライベートｐｏｒｔを送信元グローバルｐｏｒｔである１０２４に変換する。つぎに、変換後のパケットを送信する。
【００３６】
これにより、あて先アドレスが異なれば、同一のグローバルアドレスおよびポート番号を割り当てることができ、アドレス割り当ての効率化を図ることができ、グローバルアドレス使用数を抑制することができる。
【００３７】
そして、４つ目のパケットのあて先ＩＰが、ＧＡ２であり、ｐｏｒｔが２００１であり、送信元プライベートＩＰがＰＡ１であり、ｐｏｒｔが３００３である。つぎに、アドレス変換装置１００が、変換テーブル１０３内のあて先ＩＰ１０４およびｐｏｒｔ１０５と、送信元プライベートＩＰ１０６およびｐｏｒｔ１０７を設定する。そして、割り当て可能なグローバルアドレスからＧＡ３を選択する。
【００３８】
送信元グローバルＩＰにＧＡ３が割り当てられた１つ目のパケットのあて先ＩＰと４つ目のパケットのあて先ＩＰが異なる。しかしながら、３つ目のパケットのあて先ＩＰと４つ目のパケットのあて先ＩＰが同一であり、あて先ｐｏｒｔが異なるため、つぎに、アドレス変換装置１００が、割り当て可能なグローバルアドレスからＧＡ４を選択する。
【００３９】
そして、送信元グローバルＩＰにＧＡ４が割り当てられた２つ目のパケットのあて先ＩＰと４つ目のパケットのあて先ＩＰが異なるため、４つ目のパケットの送信元グローバルＩＰには、ＧＡ４が割り当てられる。そして、４つ目のパケットの送信元グローバルポート番号に１０２４が割り当てられ、アドレス変換装置１００が、変換テーブル１０３内の送信元グローバルＩＰ１０８にＧＡ４、送信元グローバルｐｏｒｔ１０９に１０２４を設定する。
【００４０】
さらに、アドレス変換装置１００が、４つ目のパケットの送信元プライベートＩＰを送信元グローバルＩＰであるＧＡ４に変換し、送信元プライベートｐｏｒｔを送信元グローバルｐｏｒｔである１０２４に変換する。そして、変換後のパケットが送信される。
【００４１】
これにより、あて先アドレスが異なる２つ目のパケットの送信元グローバルアドレスおよびポート番号と同一のグローバルアドレスおよびポート番号を４つ目のパケットに割り当てることができ、アドレス割り当ての効率化を図ることができる。さらに、グローバルアドレス使用数を抑制することができる。
【００４２】
つぎに、ＷＡＮ１０２からＬＡＮ１０１へのパケットの送信について説明する。変換テーブル１０３内のレコードごとにＷＡＮ１０２からのパケットの送信元ＩＰとＩＰ１０４が同一であるか、パケットの送信元ポート番号とｐｏｒｔ１０５が同一であるか否かを判断する。さらに、ＩＰ１０８とパケットのあて先ＩＰが同一であるか、ｐｏｒｔ１０９とパケットのあて先ｐｏｒｔが同一であるか否かを判断する。そして、パケットのあて先ＩＰを、すべてが同一であると判断されたレコードのＩＰ１０６に変換し、パケットのあて先ポート番号を当該レコードのｐｏｒｔ１０７に変換する。
【００４３】
これにより、あて先が異なる２つのパケットに同一の送信元アドレスを割り当てても、グローバルネットワークからプライベートネットワークへの通信時にアドレスを変換することができる。
【００４４】
つぎに、図１では、変換テーブル１０３を用いてアドレスの変換処理を実施している。本実施の形態では、ＮＡＴ検索テーブルと、状態管理テーブルと、使用ＩＰ／ｐｏｒｔ情報テーブルとの３つのテーブルを用いてアドレスの変換処理を実施する例について説明する。
【００４５】
（ＮＡＴ検索テーブル）
図２は、ＮＡＴ検索テーブルを示す説明図である。ＮＡＴ検索テーブル２０１およびＮＡＴ検索テーブル２０２は、パケットのフロー単位（送信元あて先アドレスおよびポート番号（以下、「ｐｏｒｔ」と称する。）で一意に決定できるパケット群）で、変換元のアドレスおよび変換先の情報を保持し、パケット到着時に検索し、アドレス変換対象かどうかを識別、変換を実施する情報となるテーブルである。
【００４６】
ＮＡＴ検索テーブル２０１は、プライベートネットワークで用いるプライベートアドレスをグローバルネットワークで用いるグローバルアドレスに変換させるためのテーブルである。そして、ＮＡＴ検索テーブル２０２は、グローバルネットワークで用いるグローバルアドレスをプライベートネットワークで用いるプライベートアドレスに変換させるためのテーブルである。なお、本実施の形態では、リスト構造内の各ノードをエントリと称する。
【００４７】
また、本実施の形態では、ＮＡＴ変換テーブルエントリの最初のエントリ（ハッシュから直接繋がっているエントリ）であるＮ１＿Ｅ１およびＮ２＿Ｅ１は、ダミーのエントリであり、エントリの挿入または削除処理用の簡便化のために配置している。
【００４８】
各ＮＡＴ変換テーブルエントリは、ｐｒｉｖａｔｅ２０３と、ｇｌｏｂａｌ２０４と、状態管理エントリリンク２０５と、アドレス情報エントリリンク２０６と、使用ｐｏｒｔエントリリンク２０７を備えている。さらに、ＮＡＴ検索テーブル２０１内のＮＡＴ変換テーブルエントリは、前リンク（ｐ（ｐｒｉｖａｔｅ（プライベート））→ｇ（ｇｌｏｂａｌ（グローバル）））２０８と、次リンク（ｐ→ｇ）２０９とを備えている。そして、ＮＡＴ検索テーブル２０２内のＮＡＴ変換テーブルエントリは、前リンク（ｇ→ｐ）２１９と、次リンク（ｇ→ｐ）２２０を備えている。
【００４９】
ｐｒｉｖａｔｅ２０３は、ｓｏｕｒｃｅ２１０と、ｄｅｓｔｉｎａｔｉｏｎ２１１とを備え、ｓｏｕｒｃｅ２１０は、ＩＰ２１３とｐｏｒｔ２１４を備え、ｄｅｓｔｉｎａｔｉｏｎ２１１は、ＩＰ２１５と、ｐｏｒｔ２１６を備えている。ＩＰ２１３は、ＬＡＮ１０１内で用いられる送信元プライベートアドレスであり、ｐｏｒｔ２１４は、ＬＡＮ１０１内で用いられる送信元プライベートポートである。ＩＰ２１５は、あて先アドレスであり、ｐｏｒｔ２１６は、あて先ポートである。
【００５０】
ｇｌｏｂａｌ２０４は、ｓｏｕｒｃｅ２１２を備え、ｓｏｕｒｃｅ２１２は、ＩＰ２１７とｐｏｒｔ２１８を備えている。ＩＰ２１７は、ＷＡＮ１０２内で用いられる送信元グローバルアドレスであり、ｐｏｒｔ２１８は、ＷＡＮ１０２内で用いられる送信元グローバルポートである。
【００５１】
状態管理エントリリンク２０５は、図３で説明する状態管理テーブル内のどの状態管理エントリにリンクされているかを示している。
【００５２】
アドレス情報エントリリンク２０６は、図４で説明する使用ＩＰ／ｐｏｒｔ情報テーブル内のどのアドレス情報エントリにリンクされているかを示す説明図である。
【００５３】
使用ｐｏｒｔエントリリンク２０７は、アドレス情報エントリリンク２０６で示されるアドレス情報エントリの使用ｐｏｒｔエントリを示している。
【００５４】
ＮＡＴ変換テーブルエントリは、双方向リストであるため、前リンク（ｐ→ｇ）２０８と、次リンク（ｐ→ｇ）２０９と、前リンク（ｇ→ｐ）２１９と、次リンク（ｇ→ｐ）２２０を用いている。
【００５５】
Ｎ１＿Ｅ３およびＮ２＿Ｅ３を例に挙げると、ＩＰ２１３は、ＰＡ１であり、ｐｏｒｔ２１４は、２０００であり、ＩＰ２１５は、ＧＡ１であり、ｐｏｒｔ２１６は、３０００である。そして、あて先アドレスが、ＧＡ１であり、あて先ポートが３０００であることを示している。ＩＰ２１７は、ＧＡ３であり、ｐｏｒｔ２１８は、６５０００である。たとえば、ＬＡＮからＷＡＮにパケットが送信される場合、ＰＡ１および２０００と、ＧＡ１および３０００がパケットに付与され、ＰＡ１が、ＧＡ３に変換され、２０００が、６５０００に変換されて、ＷＡＮ内のＧＡ１にパケットが送信される。
【００５６】
なお、ＮＡＴ検索テーブル２０１およびＮＡＴ検索テーブル２０２は、コンピュータがアクセス可能な記憶装置に記憶されている。
【００５７】
（状態管理テーブル）
図３は、状態管理テーブルを示す説明図である。状態管理テーブル３００は、ＮＡＴ変換テーブルエントリの状態管理を行うためのテーブルである。あるパケットフローが一定時間流れなくなった（ＴＣＰではＦＩＮ（ＦＩＮＩＳＨ）パケット到着後しばらくした時／ＵＤＰならばパケットが流れなくなってしばらくした時）ら、ＮＡＴ変換テーブルエントリを削除し、次のフローに割り当てる必要がある。
【００５８】
状態管理テーブル３００は、削除時期を検知するためのテーブルであるため各エントリにはＥｘｐｉｒｅ時刻３０２が記述されている。また、該当エントリがどのＮＡＴ変換エントリに対応しているかを示すＮＡＴ変換エントリリンク３０１も備えている。
【００５９】
状態管理テーブル３００内の各状態管理エントリは、ＮＡＴ変換エントリリンク３０１と、Ｅｘｐｉｒｅ時刻３０２と、前リンク３０３と、次リンク３０４とを備えている。ＮＡＴ変換エントリリンク３０１は、ＮＡＴ検索テーブル内のどのリンクと連携しているのかを示している。
【００６０】
各状態管理エントリは、ＮＡＴ変換エントリリンク３０１と、Ｅｘｐｉｒｅ時刻３０２と、前リンク３０３と、次リンク３０４とを備えている。状態管理エントリ（ｔｏｐ）は、先頭のエントリでありダミーエントリである。状態管理エントリ（ｔａｉｌ）は、最後尾のエントリでありダミーエントリである。
【００６１】
具体的には、たとえば、状態管理エントリ（ｔｏｐ）（Ｓ＿Ｅ１）は、ダミーエントリであるため、Ｓ＿Ｅ１のＮＡＴ変換エントリリンク３０１と、Ｅｘｐｉｒｅ時刻３０２と、前リンク３０３がｎｕｌｌである。Ｓ＿Ｅ１の次リンク３０４は、Ｓ＿Ｅ２のポインタである。
【００６２】
Ｓ＿Ｅ２のＮＡＴ変換エントリリンク３０１は、Ｎ１＿Ｅ２であり、Ｅｘｐｉｒｅ時刻３０２がＥｔ１であり、前リンク３０３がＳ＿Ｅ１のポインタであり、次リンク３０４がＳ＿Ｅ３のポインタである。
【００６３】
なお、状態管理テーブル３００は、コンピュータがアクセス可能な記憶装置に記憶されている。
【００６４】
（使用ＩＰ／ｐｏｒｔ情報テーブル）
図４は、使用ＩＰ／ｐｏｒｔ情報テーブルを示す説明図である。使用ＩＰ／ｐｏｒｔ情報テーブル４００は、ＮＡＴ変換で使用できるＩＰ／ｐｏｒｔの組のうち、どのあて先に対してどのＩＰ／ｐｏｒｔを使用したかを管理するためのテーブルであり、同じくハッシュテーブルとハッシュテーブルからの双方向リスト構造で構成される。
【００６５】
なお、当該双方向リスト構造が、第１のリスト構造である。使用ＩＰ／ｐｏｒｔ情報テーブル４００の先頭はＮＡＴ検索テーブル２０１，２０２と同様にダミーエントリで、初期値は全ハッシュエントリから単一のアドレス情報エントリ（全てダミー）だけが繋がった状態となる。
【００６６】
各アドレス情報エントリは、ハッシュテーブルから繋がる双方向リストであり、あて先アドレスとＮＡＴ変換で使用する送信元グローバルアドレスの組み合わせが登録されている。また、あて先アドレスと送信元グローバルアドレスの組み合わせ単位で、どのｐｏｒｔ番号をＮＡＴ変換に使用しているかの一覧を保持するため、各アドレス情報エントリからそれぞれｐｏｒｔ番号を有する双方向リストの構造を持つ。なお、当該双方向リストが第２のリスト構造である。
【００６７】
各アドレス情報エントリは、変換ＩＰ４０１と、ｄｓｔＩＰ４０２と、次使用ｐｏｒｔ４０３と、使用ｐｏｒｔエントリリンク４０４と、使用ｐｏｒｔエントリ先頭リンク４０５と、前リンク４０６と、次リンク４０７を備えている。
【００６８】
各アドレス情報エントリは、双方向リスト構造のノードであるため、前段のアドレス情報エントリへのリンクを示す前リンク４０６と、次段のアドレス情報エントリへのリンクを示す次リンク４０７の２つを持つ。
【００６９】
変換ＩＰ４０１が、送信元グローバルアドレスであり、ｄｓｔＩＰ４０２が、あて先アドレスである。使用ｐｏｒｔエントリ先頭リンク４０５が、使用されているｐｏｒｔの情報を保持する使用ｐｏｒｔエントリと関連付けている。
【００７０】
次使用ｐｏｒｔ４０３は、検索処理の高速化のために用意されたもので、新規にＮＡＴ変換対象パケットが到着したとき、該当アドレス情報エントリに合致した場合、ｐｏｒｔ番号として本値を使用できることを示す値となる。新規フロー到着時は次使用ｐｏｒｔ４０３の値を使えばよく、検索処理を不要としている。ここで、次使用ｐｏｒｔがない（ｐｏｒｔのリソースがない）ことを示す値を０とし、０であった場合はｐｏｒｔ番号の割り当てができないことを示すこととする。
【００７１】
また、使用ｐｏｒｔエントリは、ｐｏｒｔ番号順にソートすることで探索処理の高速化を図ることができるため、アドレス変換装置１００が、使用ｐｏｒｔエントリを挿入する際、次使用ｐｏｒｔ４０３が、どこに挿入すべきかを指し示すポインタとなり、挿入箇所を探索する必要がなくなる。使用ｐｏｒｔエントリは、ｐｏｒｔ４０８を備えている。さらに、使用ｐｏｒｔエントリは、双方向リスト構造のため、前段の使用ｐｏｒｔエントリへのリンクを示す前リンク４０９と、次段のアドレス情報エントリへのリンクを示す次リンク４１０を備えている。なお、Ｐ２＿Ｅ１、Ｐ３＿Ｅ１は、ダミーエントリである。
【００７２】
また、本実施の形態では、割り当て可能な送信元グローバルアドレスごとに使用可能なポート番号については以下とする。
・使用可能なポート番号：１０２４〜６５０００
・ｐｏｒｔ（ポート番号）の最小値：１０２４
・ｐｏｒｔ（ポート番号）の最大値：６５０００
【００７３】
なお、使用ＩＰ／ｐｏｒｔ情報テーブル４００は、コンピュータがアクセス可能な記憶装置に記憶されている。
【００７４】
（アドレス変換装置のハードウェア構成）
図５は、本実施の形態にかかるアドレス変換装置のハードウェア構成を示すブロック図である。図５において、アドレス変換装置は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）５０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）５０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）５０３と、磁気ディスクドライブ５０４と、磁気ディスク５０５と、光ディスクドライブ５０６と、光ディスク５０７と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）５０８と、を備えている。また、各構成部はバス５００によってそれぞれ接続されている。
【００７５】
ここで、ＣＰＵ５０１は、アドレス変換装置１００の全体の制御を司る。ＲＯＭ５０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ５０３は、ＣＰＵ５０１のワークエリアとして使用される。磁気ディスクドライブ５０４は、ＣＰＵ５０１の制御にしたがって磁気ディスク５０５に対するデータのリード／ライトを制御する。磁気ディスク５０５は、磁気ディスクドライブ５０４の制御で書き込まれたデータを記憶する。
【００７６】
光ディスクドライブ５０６は、ＣＰＵ５０１の制御にしたがって光ディスク５０７に対するデータのリード／ライトを制御する。光ディスク５０７は、光ディスクドライブ５０６の制御で書き込まれたデータを記憶したり、光ディスク５０７に記憶されたデータをコンピュータに読み取らせたりする。
【００７７】
Ｉ／Ｆ５０８は、通信回線を通じてＬＡＮ１０１などのプライベートネットワーク、ＷＡＮ１０２、などのグローバルネットワークに接続され、ＬＡＮ１０２、ＷＡＮ１０３などからのパケットを受信する。
【００７８】
（アドレス変換装置１００の機能的構成）
つぎに、図６は、アドレス変換装置１００の機能的構成を示すブロック図である。アドレス変換装置１００は、受信部６０１と、情報抽出部６０２と、アドレス判断部６０３と、変換部６０４と、送信部６０５と、設定部６０６と、第１の判断部６０７と、第１のリスト構造生成部６０８と、第２の判断部６０９と、第２のリスト構造生成部６１１と、第１の探索部６１２と、第２の探索部６１３を含む構成である。各機能（受信部６０１〜第２の探索部６１３）は、具体的には、たとえば、図５に示したＲＯＭ５０２、ＲＡＭ５０３、磁気ディスク５０５、光ディスク５０７などの記憶装置に記憶されたプログラムをＣＰＵ５０１に実行させることにより、または、Ｉ／Ｆ５０８により、各機能を実現する。
【００７９】
各機能の具体的な処理については、実施例１〜４を用いて説明する。実施例１〜３は、プライベートネットワークからグローバルネットワークへ送信されるパケットのアドレス変換について説明する。まず、実施例１では、受信されたパケットのあて先アドレスが、変換済のパケットのあて先アドレスと異なる場合について説明する。
【００８０】
つぎに、実施例２では、受信されたパケットのあて先アドレスおよびｐｏｒｔおよびプライベートアドレスおよびｐｏｒｔが、変換済パケットのあて先アドレスおよびｐｏｒｔおよびプライベートアドレスおよびｐｏｒｔと同一の場合について説明する。
【００８１】
そして、実施例３では、受信されたパケットのあて先アドレスおよびｐｏｒｔが、変換済パケットのあて先アドレスおよびｐｏｒｔと同一で、パケットのプライベートアドレスおよびｐｏｒｔが、変換済パケットのプライベートアドレスおよびｐｏｒｔと異なる場合について説明する。
【００８２】
最後に、実施例４では、グローバルネットワークからプライベートネットワークへのパケットが受信される場合について説明する。
【００８３】
（実施例１）
まず、実施例１では、ＬＡＮ１０１からＷＡＮ１０２への下記のアドレス情報が付与されたパケットを受信するとする。
【００８４】
・送信元プライベートアドレス：ＰＡ１
・送信元プライベートｐｏｒｔ：２０００
・あて先アドレス：ＧＡ２
・あて先ｐｏｒｔ：３０００
【００８５】
まず、受信部６０１は、プライベートアドレス内の通信端末からグローバルアドレス内の通信端末へのパケットを受信する機能を有する。具体的には、たとえば、Ｉ／Ｆ５０８が、ＰＡ１からＧＡ２へのパケットを受信する。
【００８６】
つぎに、情報抽出部６０２が、パケットのアドレス情報を抽出する機能を有する。なお、パケットからの情報抽出部６０２の処理については、従来の中継処理やサーバでの処理と同じであり公知であるため、詳細な説明を省略する。
【００８７】
そして、アドレス変換装置１００が、あて先アドレスがグローバルアドレスであるため、パケットの送信元プライベートアドレスおよびｐｏｒｔおよびあて先アドレスおよびｐｏｒｔの情報を基にＮＡＴ検索テーブル２０１からハッシュエントリを検索する。具体的には、たとえば、送信元プライベートアドレスおよびｐｏｒｔ、およびあて先アドレスおよびｐｏｒｔの値を加算して該当のハッシュエントリを検索することとしてもよい。ここで、Ｎ１＿Ｅ１が検索されたとし、Ｎ１＿Ｅ１はダミーエントリであるため、Ｎ１＿Ｅ２をＥｓとする。
【００８８】
つぎに、アドレス判断部６０３が、送信元プライベートアドレスとＥｓのＩＰ２１３が同一であり、パケットの送信元プライベートポートとＥｓのｐｏｒｔ２１４が同一であり、パケットのあて先アドレスとＥｓのＩＰ２１５が同一であり、あて先ポートとＥｓのｐｏｒｔ２１６が同一であるか否かを判断する。アドレス判断部６０３によりいずれか一つであっても同一でないと判断された場合、Ｅｓの次リンク２０９が示すエントリをＥｓとし、それぞれが同一であると判断されるまでアドレス判断部６０３の処理を繰り返す。
【００８９】
そして、アドレス変換装置１００は、アドレス判断部６０３により同一でないと判断され、Ｅｓの次リンク２０９が、ｎｕｌｌの場合、グローバルアドレス群から任意のアドレスを選択する。下記に本実施の形態で用いるグローバルアドレス群の一例を示す。
【００９０】
・グローバルアドレス群：ＧＡ３、ＧＡ４、ＧＡ５、ＧＡ６
【００９１】
具体的には、たとえば、アドレス変換装置１００が、ＧＡ３を選択してＡｄとする。
【００９２】
そして、設定部６０６が、Ａｄとパケットのあて先アドレスとを組み合わせとして設定し、第１の探索部６１２が、設定部６０６により設定された組み合わせと一致する組み合わせを使用ＩＰ／ｐｏｒｔ情報テーブル４００から探索する。たとえば、第１の探索部６１２が、パケットのあて先アドレスとＡｄに基づいて使用ＩＰ／ｐｏｒｔ情報テーブル４００から該当エントリを検索する。具体的には、たとえば、パケットのあて先アドレスとＡｄの合計値に基づいてＩＰ／ｐｏｒｔ情報テーブル４００からエントリを検索する。ここでは、該当エントリの次リンク４０７であるＡ＿Ｅ２をＥａとする。
【００９３】
そして、第１の判断部６０７が、設定部６０６により設定された組み合わせが当該組み合わせ以前に設定された一連の組み合わせの中にあるか否かを判断する。ここでは、一連の組み合わせとは、使用ＩＰ／ｐｏｒｔ情報テーブル４００内の各アドレス情報エントリ同士が関連付けられていることを示している。
【００９４】
そして、グローバルアドレスであるＡｄとＥａの変換ＩＰが同一であるか、当該組み合わせのあて先アドレスであるＥａのｄｓｔＩＰ４０２が同一であるか否かを判断する。ここでは、ＡｄがＧＡ３であり、Ａ＿Ｅ２の変換ＩＰ４０１がＧＡ３であるため、ＡｄがＡ＿Ｅ２の変換ＩＰ４０１と同一であると判断される。一方、パケットのあて先アドレスがＧＡ１であり、ｄｓｔＩＰ４０２がＧＡ２であるため、パケットのあて先アドレスが、ｄｓｔＩＰ４０２と同一でないと判断される。いずれかが同一でないと判断された場合、第１の判断部６０７が、Ｅａの次リンク４０７で示されるエントリをあらたにＥａとする。なお、ＬａｄｄｒにＥａのポインタを設定する。なお、ここでは、第１の判断部６０７により組み合わせと一致するエントリがないと判断される。
【００９５】
つぎに、第１のリスト構造生成部６０８が、第１の判断部６０７によりないと判断された場合（Ｅａの次リンク４０７が、ｎｕｌｌの場合）、あらたにアドレス情報エントリをＥａｎとして生成し、使用ＩＰ／ｐｏｒｔ情報テーブル４００に追加する。
【００９６】
つぎに、アドレス変換装置１００が、割り当て可能な複数のグローバルポート番号から任意のグローバルポート番号を選択する。そして、第２の判断部６０９が、設定部６０６により設定された組み合わせ（生成されたアドレス情報エントリ）が有する使用ｐｏｒｔエントリの中に選択されたグローバルポート番号があるか否かを判断する。
【００９７】
ここでは、アドレス情報エントリが、生成された直後であるため、第２の判断部６０９は、アドレス情報エントリ内に選択されたグローバルポート番号がないと判断される。
【００９８】
そして、ノード生成部６１０は、第２の判断部６０９によりないと判断された場合、割り当て可能な複数のグローバルポート番号から任意のグローバルポート番号をｐｏｒｔ４０８とする使用ｐｏｒｔエントリを生成する。ここでは、ノード生成部６１０が、使用ｐｏｒｔエントリをＥｕ＿ｔｏｐ（ダミーエントリ）およびＥａｕとして生成する。
【００９９】
第２のリスト構造生成部６１１は、ノード生成部６１０により生成された使用ｐｏｒｔエントリを設定された組み合わせと一致するアドレス情報エントリに関連付ける。
【０１００】
具体的には、たとえば、第２のリスト構造生成部６１１が、生成したアドレス情報エントリおよび使用ｐｏｒｔエントリに下記の値を設定することで関連付ける。
・Ｅｕ＿ｔｏｐのｐｏｒｔ４０８：ｎｕｌｌ
・Ｅｕ＿ｔｏｐの前リンク４０９：ｎｕｌｌ
・Ｅｕ＿ｔｏｐの次リンク４１０：Ｅａｕのポインタ
・Ｅａｕのｐｏｒｔ４０８：ｐｏｒｔの最小値
・Ｅａｕの前リンク４０９：Ｅｕ＿ｔｏｐのポインタ
・Ｅａｕの次リンク４１０：ｎｕｌｌ
・Ｅａｎの変換ＩＰ４０１：Ａｄ
・ＥａｎのｄｓｔＩＰ４０２：パケットのあて先ＩＰ
・Ｅａｎの次使用ｐｏｒｔ４０３：ｐｏｒｔの最小値＋１
・Ｅａｎの使用ｐｏｒｔエントリリンク４０４：Ｅａｕのポインタ
・Ｅａｎの使用ｐｏｒｔエントリ先頭リンク４０５：Ｅｕ＿ｔｏｐのポインタ
・Ｅａｎの前リンク４０６：Ｅａのポインタ
・Ｅａｎの次リンク４０７：ｎｕｌｌ
・Ｅａの次リンク４０７：Ｅａｎのポインタ
【０１０１】
ここで、Ｅａｕのｐｏｒｔ４０８にｐｏｒｔの最小値が設定されているが、Ｅａｕのｐｏｒｔ４０８には、Ｅａの使用ｐｏｒｔエントリリンク４０４で示される使用ｐｏｒｔエントリのｐｏｒｔ４０８を設定してもよい。これにより、同一の送信元グローバルアドレスおよびｐｏｒｔを割り当てることができ、アドレス割り当ての効率化を図ることができる。なお、Ｅａｎの次使用ｐｏｒｔ４０３には、Ｅａの使用ｐｏｒｔエントリリンク４０４で示される使用ｐｏｒｔエントリのｐｏｒｔ４０８の値＋１が設定される。
【０１０２】
また、ＮＡＴ変換テーブルエントリの生成に用いるためにＰｄとＬｐｏｒｔを設定する。
・Ｐｄ＝Ｅａｕのｐｏｒｔ
・Ｌｐｏｒｔ＝Ｅａｕのポインタ
【０１０３】
つぎに、アドレス変換装置１００が、ＮＡＴ変換テーブルエントリをＥｎとして生成し、ＮＡＴ検索テーブル２０１およびＮＡＴ検索テーブル２０２に関連付ける。さらに、状態管理エントリをＥｓｔとして生成し、状態管理テーブル３００に追加する。
【０１０４】
アドレス変換装置１００によりＥｎの各項目と、Ｅｓｔの各項目には、下記が設定される。
・Ｅｎのｐｒｉｖａｔｅ２０３  ｓｏｕｒｃｅ２１０  ＩＰ２１３：パケットの送信元プライベートアドレス
・Ｅｎのｐｒｉｖａｔｅ２０３  ｓｏｕｒｃｅ２１０  ｐｏｒｔ２１４：パケットの送信元プライベートｐｏｒｔ
・Ｅｎのｐｒｉｖａｔｅ２０３  ｄｅｓｔｉｎａｔｉｏｎ２１１  ＩＰ２１５：パケットのあて先アドレス
・Ｅｎのｐｒｉｖａｔｅ２０３  ｄｅｓｔｉｎａｔｉｏｎ２１１  ｐｏｒｔ２１６：パケットのあて先ｐｏｒｔ
・Ｅｎのｇｌｏｂａｌ２０４  ｓｏｕｒｃｅ２１２  ＩＰ２１７：Ａｄ
・Ｅｎのｇｌｏｂａｌ２０４  ｓｏｕｒｃｅ２１２  ｐｏｒｔ２１８：Ｐｄ
・Ｅｎの状態管理エントリリンク２０５：Ｅｓｔのポインタ
・Ｅｎのアドレス情報エントリリンク２０６：Ｌａｄｄｒ
・Ｅｎの使用ｐｏｒｔエントリリンク２０７：Ｌｐｏｒｔ
・ＥｓｔのＮＡＴ変換エントリリンク３０１：Ｅｎ
・ＥｓｔのＥｘｐｉｒｅ時刻３０２：現時刻＋Ｅｘｐｉｒｅ時間
・Ｅｓｔの前リンク３０３：状態管理エントリ（ｔｏｐ）のポインタ
・Ｅｓｔの次リンク３０４：状態管理エントリ（ｔｏｐ）の次リンクの値
・状態管理エントリ（ｔｏｐ）の次リンク３０４で示されるエントリの前リンク３０３の値：Ｅｓｔのポインタ
・状態管理エントリ（ｔｏｐ）の次リンク３０４：Ｅｓｔのポインタ
【０１０５】
なお、Ｅｘｐｉｒｅ時間については、利用者によってあらかじめ設定されている時間である。
【０１０６】
そして、アドレス変換装置１００が、パケットの送信元プライベートアドレスおよびｐｏｒｔおよびあて先アドレスおよびｐｏｒｔの情報に基づいてＮＡＴ検索テーブル２０１から該当のハッシュエントリを検索する。そして、検索されたハッシュエントリにあるＮＡＴ変換テーブルエントリのリンクで示されるエントリをＥｐｒｅｖとする。ここでは、Ｎ１＿Ｅ１がＥｐｒｅｖである。Ｅｐｒｅｖの次リンクで示されたエントリをＥｎｅｘｔとする。ここでは、Ｎ１＿Ｅ２がＥｎｅｘｔである。
【０１０７】
そして、ＮＡＴ検索テーブル２０１へＥｎを追加させるためにアドレス変換装置１００が、以下の設定を行う。
・Ｅｎの次リンク（ｐ→ｇ）２０９：Ｅｎｅｘｔのポインタ
・Ｅｎの前リンク（ｐ→ｇ）２０８：Ｅｐｒｅｖのポインタ
・Ｅｐｒｅｖの次リンク（ｐ→ｇ）２０９：Ｅｎのポインタ
・Ｅｎｅｘｔの前リンク（ｐ→ｇ）２０８：Ｅｎのポインタ
【０１０８】
また、アドレス変換装置１００が、パケットの送信元プライベートアドレスおよびｐｏｒｔおよびあて先アドレスおよびｐｏｒｔの情報に基づいてＮＡＴ検索テーブル２０２から該当のハッシュエントリを検索する。そして、ハッシュエントリにあるＮＡＴ変換テーブルエントリのリンクで示されるエントリをＥｐｒｅｖとする。ここでは、Ｎ２＿Ｅ１がＥｐｒｅｖである。Ｅｐｒｅｖの次リンクで示されたエントリをＥｎｅｘｔとする。ここでは、Ｎ２＿Ｅ２がＥｎｅｘｔである。
【０１０９】
そして、ＮＡＴ検索テーブル２０２へＥｎを追加させるため、アドレス変換装置１００が、以下の設定を行う。
・Ｅｎの次リンク（ｇ→ｐ）２２０：Ｅｎｅｘｔのポインタ
・Ｅｎの前リンク（ｇ→ｐ）２１９：Ｅｐｒｅｖのポインタ
・Ｅｐｒｅｖの次リンク（ｇ→ｐ）２２０：Ｅｎのポインタ
・Ｅｎｅｘｔの前リンク（ｇ→ｐ）２１９：Ｅｎのポインタ
【０１１０】
つぎに、変換部６０４が、パケットの送信元プライベートアドレスをＥｎのＩＰ２１７に変換し、パケットの送信元プライベートポートをＥｎのｐｏｒｔ２１８に変換する。
【０１１１】
そして、送信部６０５が、変換部６０４により変換された後のパケットを送信する。なお、送信部６０５の具体的な例については公知であるため説明を省略する。
【０１１２】
これにより、あらたにＮＡＴ変換エントリ、状態管理エントリ、アドレス情報エントリ、使用ｐｏｒｔエントリが追加される。図７〜図９に追加された例を示す。
【０１１３】
図７は、実施例１においてエントリ追加後のＮＡＴ検索テーブルを示す説明図である。ＮＡＴ検索テーブル７０１は、Ｎ１＿Ｅ５としてエントリが追加され、ＮＡＴ検索テーブル７０２は、Ｎ２＿Ｅ５としてエントリが追加されている。Ｎ１＿Ｅ５およびＮ２＿Ｅ５は、ＩＰ２１５がＧＡ２であり、ｐｏｒｔ２１６が３０００であり、ＩＰ２１７がＧＡ３であり、ｐｏｒｔ２１８が１０２４である。図２で上述したようにＮ１＿Ｅ３のＩＰ２１５は、ＧＡ１であり、ｐｏｒｔ２１６が３０００であり、ＩＰ２１７がＧＡ３であり、ｐｏｒｔ２１８が５０００である。したがって、異なる複数のパケット送信であっても、あて先アドレスが異なれば、送信元プライベートアドレスを同一の送信元グローバルアドレスに変換することができる。
【０１１４】
図８は、実施例１においてエントリ追加後の状態管理テーブルを示す説明図である。状態管理テーブル８００には、Ｓ＿Ｅ１とＳ＿Ｅ２の間にＳ＿Ｅ５があらたに追加されている。よって、Ｓ＿Ｅ１の次リンク３０４がＳ＿Ｅ５のポインタであり、Ｓ＿Ｅ５の前リンク３０３がＳ＿Ｅ１のポインタであり、Ｓ＿Ｅ５の次リンク３０４がＳ＿Ｅ２のポインタであり、Ｓ＿Ｅ２の前リンク３０３がＳ＿Ｅ５のポインタである。そして、Ｓ＿Ｅ５のＮＡＴ変換エントリリンク３０１が、Ｎ１＿Ｅ５（Ｎ２＿Ｅ５）であり、ＮＡＴ検索テーブル７０１（およびＮＡＴ検索テーブル７０２）にあらたに追加されたエントリと連携されている。
【０１１５】
図９は、実施例１においてエントリ追加後の使用ＩＰ／ｐｏｒｔ情報テーブルを示す説明図である。使用ＩＰ／ｐｏｒｔ情報テーブル９００は、リンクの最後尾であったＡ＿Ｅ３の次にＡ＿Ｅ４があらたに追加されている。したがって、Ａ＿Ｅ３の次リンク４０７が、Ａ＿Ｅ４のポインタであり、Ａ＿Ｅ４の前リンク４０６がＡ＿Ｅ３のポインタであり、Ａ＿Ｅ４の次リンク４０７がｎｕｌｌである。そして、Ａ＿Ｅ４の次使用ｐｏｒｔ４０３が１０２５であり、使用ｐｏｒｔエントリリンク４０４がＰ４＿Ｅ２であり、使用ｐｏｒｔエントリ先頭リンク４０５がＰ４＿Ｅ１である。
【０１１６】
そして、図４で示したようにＡ＿Ｅ２の変換ＩＰ４０１は、ＧＡ３であり、Ａ＿Ｅ２のｄｓｔＩＰ４０２は、ＧＡ１である。したがって、異なる複数のパケットであっても、少なくともあて先アドレスが異なるために各パケットの送信元プライベートアドレスに同一の送信元グローバルアドレス（ＧＡ３）を割り当てることができる。また、アドレスだけでなくｐｏｒｔの割り当ても同時にすることで、さらに、グローバルアドレスの使用数を抑制することができる。
【０１１７】
（実施例２）
実施例２では、異なる複数のパケットの送信元プライベートアドレスおよびｐｏｒｔ、かつあて先アドレスおよびｐｏｒｔがすべて同一の場合、送信元プライベートアドレスおよびｐｏｒｔと送信元グローバルアドレスおよびｐｏｒｔを割り当てる例を示す。実施例２では、以下の様なアドレス情報を有するパケットがＬＡＮ１０１内のクライアントからＷＡＮ１０２内のサーバに送信される例を示す。
【０１１８】
・送信元プライベートアドレス：ＰＡ１
・送信元プライベートｐｏｒｔ：２０００
・あて先アドレス：ＧＡ１
・あて先ｐｏｒｔ：３０００
【０１１９】
実施例２では、実施例１で用いたＮＡＴ検索テーブル２０１、ＮＡＴ検索テーブル２０２、状態管理テーブル３００、使用ＩＰ／ｐｏｒｔ情報テーブル４００を用いて詳細な処理について説明する。
【０１２０】
まず、受信部６０１と情報抽出部６０２の処理については実施例１と同一であるため説明を省略する。
【０１２１】
そして、アドレス変換装置１００が、パケットの送信元プライベートアドレスおよびｐｏｒｔとあて先アドレスおよびｐｏｒｔの情報を基にＮＡＴ検索テーブル２０１からハッシュエントリを検索する。具体的には、たとえば、送信元プライベートアドレスおよびｐｏｒｔ、およびあて先アドレスおよびｐｏｒｔの値を加算して該当のハッシュエントリを検索することとしてもよい。ここで、Ｎ１＿Ｅ１が検索されたとし、Ｎ１＿Ｅ１はダミーエントリであるため、Ｎ１＿Ｅ２をＥｓとする。
【０１２２】
つぎに、アドレス判断部６０３が、実施例１での処理と同様に送信元プライベートアドレスとＥｓのＩＰ２１３が同一であり、送信元プライベートポートとＥｓのｐｏｒｔ２１４が同一であるか否かを判断する。さらに、あて先アドレスとＥｓのＩＰ２１５が同一であり、あて先ポートとＥｓのｐｏｒｔ２１６が同一であるか否かを判断する。そして、判断部によりいずれか一つであっても同一でないと判断された場合、Ｅｓの次リンク２０９が示すエントリをＥｓとし、それぞれが同一であると判断されるまでアドレス判断部６０３の処理を繰り返す。
【０１２３】
ここで、Ｎ１＿Ｅ３のＩＰ２１３がＰＡ１であり、ｐｏｒｔ２１４が２０００であり、ＩＰ２１５がＧＡ１でありｐｏｒｔ２１６が３０００であるため、パケットの送信先プライベートアドレスおよびｐｏｒｔおよびあて先アドレスおよびｐｏｒｔとそれぞれ同一であると判断される。
【０１２４】
そして、アドレス変換装置１００が、Ｅｓの状態管理エントリリンク２０５に基づいて状態管理エントリ（Ｅｓｔ＿ｔｍｐ）を検索する。ここでは、Ｅｓｔ＿ｔｍｐがＳ＿Ｅ３である。
【０１２５】
つぎに、アドレス変換装置１００が、Ｅｓｔ＿ｔｍｐの項目を以下のように再設定する。
【０１２６】
・Ｅｓｔ＿ｔｍｐのＥｘｐｉｒｅ時刻３０２：現時刻＋Ｅｘｐｉｒｅ時間
・Ｅｓｔ＿ｔｍｐの次リンク３０４で示されるエントリの前リンク３０３：Ｅｓｔ＿ｔｍｐの前リンク３０３の値
・Ｅｓｔ＿ｔｍｐの前リンク３０３で示されるエントリの次リンク３０４：Ｅｓｔ＿ｔｍｐの次リンク３０４の値
・Ｅｓｔ＿ｔｍｐの前リンク３０３：状態管理エントリ（ｔｏｐ）のポインタ
・Ｅｓｔ＿ｔｍｐの次リンク３０４：状態管理エントリ（ｔｏｐ）の次リンク３０４
・状態管理エントリ（ｔｏｐ）の次リンク３０４で示されるエントリの前リンク３０３：Ｅｓｔ＿ｔｍｐのポインタ
・状態管理エントリ（ｔｏｐ）の次リンク３０４：Ｅｓｔ＿ｔｍｐのポインタ
【０１２７】
つぎに、変換部６０４は、アドレス判断部６０３によってすべて同一であると判断された場合、パケットの送信先プライベートアドレスをＥｓのＩＰ２１７に変換し、パケットの送信先プライベートポートをＥｓのｐｏｒｔ２１８に変換する。具体的には、たとえば、パケットの送信先プライベートアドレスがＧＡ３に変換され、パケットの送信先プライベートｐｏｒｔが５０００に変換される。
【０１２８】
そして、送信部６０５が、変換部６０４により変換された変換後のパケットを送信する。
【０１２９】
図１０は、実施例２においての再設定後の状態管理テーブルを示す説明図である。状態管理テーブル１０００および状態管理テーブル３００は、状態管理エントリ（ｔａｉｌ）の前リンク３０３である状態管理エントリ内のＥｘｐｉｒｅ時刻が最も現時刻に近いエントリである。そして、Ｅｘｐｉｒｅの時刻順に並んでいるため、Ｅｘｐｉｒｅ時刻３０２が再設定された直後のＳ＿Ｅ３が、最も現時刻と遠い時刻である。よって、状態管理テーブル１０００は、ダミーエントリである状態管理エントリ（ｔｏｐ）の次にＳ＿Ｅ３が関連付けられている。
【０１３０】
（実施例３）
つぎに、実施例３では、異なる複数のパケットのあて先アドレスが同一であるが、あて先ポート番号が異なる場合について説明する。実施例３では、以下の様なアドレス情報を有するパケットがＬＡＮ１０１内のクライアントからＷＡＮ１０２内のサーバに送信される例を示す。
【０１３１】
・送信元プライベートアドレス：ＰＡ１
・送信元プライベートｐｏｒｔ：２００２
・あて先アドレス：ＧＡ１
・あて先ｐｏｒｔ：３００５
【０１３２】
受信部６０１と、情報抽出部６０２については、実施例１と同一であるため説明を省略する。
【０１３３】
そして、アドレス変換装置１００は、実施例１と同様にパケットの送信元プライベートアドレスおよびｐｏｒｔとあて先アドレスおよびｐｏｒｔの情報を基にＮＡＴ検索テーブル２０１からハッシュエントリを検索する。ここで、実施例１と同様にＮ１＿Ｅ１が検索されたとし、Ｎ１＿Ｅ１はダミーエントリであるため、アドレス変換装置１００は、Ｎ１＿Ｅ２をＥｓとする。
【０１３４】
つぎに、アドレス判断部６０３が、実施例１での処理と同様に送信元プライベートアドレスとＥｓのＩＰ２１３が同一であり、送信元プライベートポートとＥｓのｐｏｒｔ２１４が同一であるか否かを判断する。さらに、あて先アドレスとＥｓのＩＰ２１５が同一であり、あて先ポートとＥｓのｐｏｒｔ２１６が同一であるか否かを判断する。そして、アドレス判断部６０３によりいずれか一つであっても同一でないと判断された場合、Ｅｓの次リンク２０９が示すエントリをＥｓとし、それぞれが同一であると判断されるまでアドレス判断部６０３の処理を繰り返す。
【０１３５】
そして、アドレス変換装置１００は、アドレス判断部６０３により同一でないと判断され、Ｅｓの次リンク２０９が、ｎｕｌｌの場合、グローバルアドレス群から任意のアドレスを選択する。グローバルアドレス群は、上述例と同一である。ここでは、具体的には、たとえば、ＧＡ３が選択されてＡｄとする。
【０１３６】
また、第１の探索部６１２は、パケットのあて先アドレスとＡｄと一致する組み合わせを使用ＩＰ／ｐｏｒｔ情報テーブル４００から順に探索する。具体的には、たとえば、使用ＩＰ／ｐｏｒｔ情報テーブル４００から該当エントリを探索する。まず、ここでは、該当エントリの次リンク４０７であるＡ＿Ｅ２をＥａとする。
【０１３７】
さらに、第１の探索部６１２は、ＡｄとＥａの変換ＩＰが同一であるか、パケットのあて先アドレスとＥａのｄｓｔＩＰ４０２が同一であるか否かを判断しながら順にアドレス情報エントリを探索する。ここでは、ＡｄがＧＡ３であり、Ａ＿Ｅ２の変換ＩＰ４０１は、ＧＡ３であるため、同一であると判断され、パケットのあて先アドレスがＧＡ１であり、ｄｓｔＩＰ４０２がＧＡ２であるため同一であると判断される。よって、パケットのあて先アドレスおよびＡｄと一致する組み合わせとしてＡ＿Ｅ２が、探索される。
【０１３８】
つぎに、第２の探索部６１３が、第１の探索部６１２により探索された組み合わせ（アドレス情報エントリ）内の第２のリスト構造（使用ポートエントリのリスト構造を示す。）内の一連のノードが有するグローバルポート番号を順に探索してグローバルポート番号群の中で空いているグローバルポート番号を探索する。ここでは、第２の探索部６１３が、Ａ＿Ｅ２の次使用ｐｏｒｔ４０３を参照することで空いているグローバルポート番号を探索可能である。
【０１３９】
そして、Ａ＿Ｅ２の次使用ｐｏｒｔ４０３が、０であるため、第２の探索部６１３により空いているポート番号が探索されなかったため、アドレス変換装置１００が、グローバルアドレス群の中から未選択のアドレスをあらたに選択する。ここで、たとえば、ＡｄとしてＧＡ４が選択される。
【０１４０】
そして、再度、第１の探索部６１２および第２の探索部６１３の処理を実施する。ここでは、Ａ＿Ｅ２については、変換ＩＰ４０１が、ＧＡ３であることが探索済であるので、Ａ＿Ｅ２の次リンク４０７で示されるＡ＿Ｅ３をＥａとする。
【０１４１】
そして、第１の探索部６１２が、ＡｄとＥａの変換ＩＰが同一であるか、パケットのあて先アドレスとＥａのｄｓｔＩＰ４０２が同一であるか否かを判断する。ここで、Ａ＿Ｅ３の変換ＩＰがＧＡ４であり、Ａ＿Ｅ３のｄｓｔＩＰ４０２がＧＡ１であるため、それぞれＡｄとパケットのあて先アドレスと同一であると判断される。
【０１４２】
つぎに、Ａ＿Ｅ３の次使用ｐｏｒｔ４０３が、１２０００であるため、第２の探索部６１３により空いているグローバルポートが探索される。ここで、Ｅａの使用ｐｏｒｔエントリリンクで示される使用ｐｏｒｔエントリをＥｕとする。なお、ＬａｄｄｒにＥａのポインタを設定する。
【０１４３】
そして、設定部６０６が、パケットのあて先アドレスとＡｄとを組み合わせとして設定する。
【０１４４】
ノード生成部６１０は、空いているグローバルポート番号を有するノードを生成する。具体的には、たとえば、ノード生成部６１０が、使用ｐｏｒｔエントリを生成して、ｐｏｒｔ４０８に当該グローバルポート番号を設定する。
【０１４５】
そして、第２のリスト構造生成部６１１は、使用ｐｏｒｔエントリの双方向リストの最後尾にノード生成部６１０により生成された使用ｐｏｒｔエントリを関連付ける。または、生成された使用ｐｏｒｔエントリのｐｏｒｔ４０８の値とすでに双方向リストに含まれている使用ｐｏｒｔエントリが有するグローバルポート番号に基づいて、使用ｐｏｒｔエントリの双方向リスト内に生成されたエントリを番号順に関連付ける。
【０１４６】
具体的には、第２のリスト構造生成部６１１が、使用ｐｏｒｔエントリ（Ｅｕｎ）を生成する。そして、アドレス変換装置１００が、生成した使用ｐｏｒｔエントリの各項目をたとえば、以下のように設定する。
【０１４７】
・Ｅｕのｐｏｒｔ４０８：Ｅａの次使用ｐｏｒｔ
・Ｅｕｎの次リンク４１０：Ｅｕの次リンク
・Ｅｕｎの前リンク４０９：Ｅｕのポインタ
・Ｅｕの次リンク４１０：Ｅｕｎのポインタ
【０１４８】
Ｅｕｎの次リンク４１０がｎｕｌｌの場合、下記を設定する。
・Ｅｕｎの次リンク４１０で示されるエントリの前リンク４０９：Ｅｕｎのポインタ
【０１４９】
変換先ｐｏｒｔ番号としてＰｄが定義され、使用ｐｏｒｔエントリのリンクとしてＬｐｏｒｔが定義される。
・Ｐｄ：Ｅｕｎのｐｏｒｔ
・使用ｐｏｒｔエントリのリンク（Ｌｐｏｒｔ）：Ｅｕｎのポインタ
【０１５０】
本実施の形態では、使用ｐｏｒｔエントリリンクが次使用ｐｏｒｔ４０３の前段にリンクされているため、次の空きｐｏｒｔを探す探索位置を指し、１０２４（先頭）から探索する必要がないため、アドレス変換処理の高速化を図ることができる。
【０１５１】
つづいて、Ｅａの次使用ｐｏｒｔ４０３の再探索について説明する。まず、第２の探索部６１３が、ｐｏｒｔが１２０００であるため、空きｐｏｒｔをリストを辿って探索する。具体的には、使用ｐｏｒｔエントリの次リンク４１０の値に基づいてリストを辿り、たとえば、ｐｏｒｔ４０８が１２０００の次リンク４１０で示されるエントリのｐｏｒｔ４０８が１２００３であれば、１２００１および１２００２は空きｐｏｒｔであり、Ｅａの次使用ｐｏｒｔ４０３には、１２００１が空きポート番号として探索される。
【０１５２】
また、アドレス変換装置１００は、空きｐｏｒｔが無い場合には、ｎｕｌｌに到達するまで探索を繰り返す。本実施の形態では、ｐｏｒｔが、１０２４〜６５０００であるため、探索時間がかかる場合があるので、探索で辿る回数の上限値をあらかじめ設定して探索してもよく、これにより、アドレス変換装置１００の高速化を図ることができる。
【０１５３】
つぎに、アドレス変換装置１００が、ＮＡＴ変換テーブルエントリを生成してＮＡＴ検索テーブル２０１，２０２に追加し、状態管理エントリを生成して状態管理テーブル３００に関連付けるが、当該生成および関連付けの処理については、実施例１と同一であるため説明を省略する。
【０１５４】
図１１は、実施例３においてのエントリ追加後の使用ＩＰ／ｐｏｒｔ情報テーブルである。使用ＩＰ／ｐｏｒｔ情報テーブル１１００は、Ａ＿Ｅ３の使用ｐｏｒｔエントリリンク４０４がＰ３＿Ｅ４となり、Ａ＿Ｅ３の次使用ｐｏｒｔ４０３が、１２００１に設定されている。そして、Ｐ３＿Ｅ２とＰ３＿Ｅ３の間にＰ３＿Ｅ４が追加されている。そして、Ｐ３＿Ｅ４のｐｏｒｔ４０８が１２０００であり、前リンク４０９がＰ３＿Ｅ２であり、次リンク４１０がＰ３＿Ｅ３である。
【０１５５】
図１２は、実施例３においてのエントリ追加後のＮＡＴ検索テーブルを示す説明図である。ＮＡＴ検索テーブル１２０１には、Ｎ１＿Ｅ１とＮ１＿Ｅ２の間にＮ１＿Ｅ５が追加され、ＮＡＴ検索テーブル１２０２には、Ｎ２＿Ｅ１とＮ２＿Ｅ２の間にＮ２＿Ｅ５が追加されている。
【０１５６】
そして、Ｎ１＿Ｅ５のＩＰ２１３は、ＰＡ１であり、Ｎ１＿Ｅ５のｐｏｒｔ２１４は、２００２であり、Ｎ１＿Ｅ５のＩＰ２１５がＧＡ１であり、Ｎ１＿Ｅ５のｐｏｒｔ２１６が３００５である。さらに、Ｎ１＿Ｅ５のＩＰ２１７がＧＡ４であり、Ｎ１＿Ｅ５のｐｏｒｔ２１８が１２０００であり、状態管理エントリリンク２０５がＳ＿Ｅ５であり、アドレス情報エントリリンク２０６がＡ＿Ｅ４である。Ｎ１＿Ｅ５の使用ｐｏｒｔエントリリンク２０７がＰ４＿Ｅ２である。
【０１５７】
つぎに、変換部６０４が、パケットの送信元プライベートアドレスであるＰＡ１を、Ｎ１＿Ｅ５のＩＰ２１７であるＧＡ４に変換すると共に、パケットの送信元プライベートポートである２００２を、Ｎ１＿Ｅ５のｐｏｒｔ２１８である１２０００に変換する。そして、送信部６０５が、変換部６０４により変換された変換後のパケットを送信する。
【０１５８】
また、実施例１および３では、アドレス割り当て前にアドレス情報エントリや使用ｐｏｒｔエントリを生成しているが、割り当て後に生成してもよい。ここで、割り当て後にアドレス情報エントリや使用ｐｏｒｔエントリを生成する例を示す。
【０１５９】
まず、設定部６０６が、送信元グローバルアドレスがすでに割り当てられている割り当て済パケットのあて先アドレスと、第２のパケットの送信元グローバルアドレスとを組み合わせとして設定する。
【０１６０】
つぎに、第１の判断部６０７が、設定部６０６により設定された組み合わせが、当該組み合わせ以前に設定された一連の組み合わせの中にあるか否かを判断する。ここで、一連の組み合わせが、アドレス情報エントリをノードとしている双方向リスト構造（図４にて示している。）である。具体的には、たとえば、第１の判断部６０７が、双方向リスト構造内のアドレス情報エントリを辿って、同一の組み合わせがあるか否かを判断する。
【０１６１】
そして、第１のリスト構造生成部６０８が、一連の組み合わせが関連付けられた第１のリスト構造の最後尾に、第１の判断部６０７によりないと判断された組み合わせを関連付ける。具体的には、たとえば、第１のリスト構造生成部６０８が、アドレス情報エントリを生成して、当該変換ＩＰ４０１に割り当て済パケットの送信元グローバルアドレスを設定し、ｄｓｔＩＰ４０２に割り当て済パケットのあて先アドレスを設定する。なお、アドレス情報エントリ内の他の項目については、上述と同一であるため説明を省略する。
【０１６２】
つぎに、使用ｐｏｒｔエントリが生成される例を示す。第２の判断部６０９が、設定部６０６により設定された組み合わせが有する一連のノードの中に、割り当て済パケットの送信元グローバルポート番号を有するノードがあるか否かを判断する。具体的には、たとえば、第２の判断部６０９が、当該組み合わせと一致する組み合わせを有するアドレス情報エントリの使用ｐｏｒｔエントリをノードとする双方向リスト構造内に割り当て済パケットの送信元グローバルポート番号と一致するポート番号があるか否かを判断する。
【０１６３】
そして、ノード生成部１１０は、第２の判断部６０９によりないと判断された場合、割り当て済パケットの送信元グローバルポート番号を有するノードを生成する。具体的には、たとえば、ノード生成部１１０が、使用ｐｏｒｔエントリを生成し、当該エントリのｐｏｒｔ４０８へ割り当て済パケットの送信元グローバルポート番号を設定する。
【０１６４】
つぎに、第２のリスト構造生成部６１１は、一連のノードが関連付けられた第２のリスト構造内の最後尾にノード生成部１１０により生成されたノードを関連付ける。具体的には、たとえば、第２のリスト構造生成部６１１が、使用ｐｏｒｔエントリの双方向リスト構造内の最後尾のエントリにノード生成部１１０により生成された使用ｐｏｒｔエントリを挿入する。なお、前リンク４０９および次リンク４１０への設定に関しては、上述と同じであるため説明を省略する。
【０１６５】
これにより、あて先アドレスおよび送信元グローバルアドレスごとにどのポート番号が空いているかの探索を容易化することができる。さらに、従来ならば、あて先アドレスと、送信元グローバルアドレスと、ポート番号とで関連付けて記憶装置へ記憶していたが、ポート番号を双方向リスト構造とすることで、記憶装置の使用数を削減することができる。
【０１６６】
（実施例４）
つぎに、実施例４では、ＷＡＮ１０２内のサーバ（ＧＡ１）からＬＡＮ１０１内のクライアント（ＰＡ１）へパケットが送信される例について説明する。
【０１６７】
パケットに付与されているアドレスが下記であるとして説明する。
・送信元グローバルアドレス：ＧＡ１
・送信元グローバルｐｏｒｔ：３０００
・あて先グローバルアドレス：ＧＡ３
・あて先グローバルｐｏｒｔ：１０２４
【０１６８】
まず、受信部６０１は、グローバルネットワーク内の通信装置からプライベートネットワーク内の通信装置へのパケットを受信する。具体的には、たとえば、Ｉ／Ｆ５０８がパケットを受信する。つぎに、情報抽出部６０２の処理については、詳細な説明を省略する。
【０１６９】
つぎに、アドレス変換装置１００が、送信元グローバルアドレスおよびｐｏｒｔおよびあて先グローバルアドレスおよびｐｏｒｔに基づいてＮＡＴ検索テーブル７０２からハッシュエントリを検索する。ここで、検索された該当ハッシュエントリをＥｓとし、Ｅｓの次リンク（ｇ→ｐ）２２０で示されるエントリをＥｓとする。ここでは、ＥｓがＮ２＿Ｅ５である。
【０１７０】
そして、アドレス判断部６０３が、送信元グローバルアドレスとＥｓのＩＰ２１５が同一であるか、送信元グローバルポートとＥｓのｐｏｒｔ２１６が同一であるかを判断する。さらに、あて先グローバルアドレスとＥｓのＩＰ２１７が同一であるか、あて先グローバルｐｏｒｔとＥｓのｐｏｒｔ２１８が同一であるか否かを判断する。ここで、すべて同一でないと判断された場合、Ｅｓの次リンク（ｇ→ｐ）２２０で示されるエントリをＥｓとし、同一であると判断される、またはＥｓの次リンク（ｇ→ｐ）２２０がｎｕｌｌとなるまでアドレス判断部６０３の処理を繰り返す。
【０１７１】
Ｎ２＿Ｅ５は、ＥｓのＩＰ２１５がＧＡ２であり、Ｅｓのｐｏｒｔ２１６が３０００であり、ＥｓのＩＰ２１７がＧＡ３であり、Ｅｓのｐｏｒｔ２１８が１０２４である。よって、アドレス判断部６０３によりそれぞれが同一であると判断される。
【０１７２】
変換部６０４は、アドレス判断部６０３によりすべて同一であると判断された場合、あて先グローバルアドレスをＥｓのＩＰ２１７に変換し、あて先グローバルｐｏｒｔをＥｓのｐｏｒｔ２１８に変換する。そして、送信部６０５が、変換部６０４により変換された
変換後のパケットを送信する。
【０１７３】
つぎに、パケットに付与されているアドレスがそれぞれ下記であるとして説明する。
・送信元グローバルアドレス：ＧＡ１
・送信元グローバルｐｏｒｔ：３０００
・あて先グローバルアドレス：ＧＡ５
・あて先グローバルｐｏｒｔ：３０００
【０１７４】
受信部６０１、情報抽出部６０２の処理については上述例と同一であるため説明を省略する。
【０１７５】
つぎに、アドレス判断部６０３が、上述したように送信元グローバルアドレスとＥｓのＩＰ２１５が同一であるか、送信元グローバルポートとＥｓのｐｏｒｔ２１６が同一であるかを判断する。さらに、あて先グローバルアドレスとＥｓのＩＰ２１７が同一であるか、あて先グローバルｐｏｒｔとＥｓのｐｏｒｔ２１８が同一であるか否かを判断する。ここでは、ＥｓがＮ２＿Ｅ５であるが、それぞれ同一でないため、Ｎ２＿Ｅ５の次リンク（ｇ→ｐ）２２０に基づいてＮ２＿Ｅ２をＥｓとしてアドレス判断部６０３の処理を行う。
【０１７６】
ＮＡＴ変換テーブルエントリを順に辿っても、すべて同一であるＮＡＴ変換テーブルエントリがなく、Ｅｓの次リンク（ｇ→ｐ）２２０がｎｕｌｌであると、アドレス変換装置１００が、パケットを破棄する。
【０１７７】
これにより、ＬＡＮ１０１内の通信装置からのコネクションがあるＷＡＮ１０２内の通信装置のみが、ＬＡＮ１０１内の同一通信装置へパケットを送信することができる。
【０１７８】
また、状態管理エントリでは、Ｅｘｐｉｒｅ時刻３０２が設定されているため、アドレス変換装置は、現時刻より前の時刻が設定されている状態管理エントリを削除しなければならない。削除の処理については、後述の図２３〜図２５で示すフローチャートにて説明し、ここでの説明は省略する。
【０１７９】
（アドレス変換処理手順）
図１３〜図２２は、アドレス変換装置によるアドレス変換処理手順の一例を示すフローチャートである。本フローチャートで示す各ステップは、すべてアドレス変換装置１００による処理である。まず、受信部６０１により、パケットを受信して、当該受信時の受信インターフェースがＮＡＴ対象ポートからの受信、かつあて先ＩＰがグローバルＩＰであるか否かを判断する（ステップＳ１３０１）。
【０１８０】
そして、受信インターフェースがＮＡＴ対象ポートからの受信、かつあて先ＩＰがグローバルＩＰであると判断された場合（ステップＳ１３０１：Ｙｅｓ）、パケットの送信元ＩＰ／ｐｏｒｔおよびあて先ＩＰ／ｐｏｒｔの情報を基にＮＡＴ検索テーブル（ｐ→ｇ）からハッシュエントリを検索する（ステップＳ１３０４）。ここで、パケットの送信元ＩＰ／ｐｏｒｔの“／”は、「および」を示し、以下に記述されているあて先ＩＰ／ｐｏｒｔの“／”も、「および」を示している。また、ＮＡＴ検索テーブル（ｐ→ｇ）とは、具体的には、たとえば、ＮＡＴ検索テーブル２０１である。
【０１８１】
つぎに、ＮＡＴ変換テーブルの該当エントリをＥｓに設定し（ステップＳ１３０５）、Ｅｓの次リンクのエントリをＥｓとして設定する（ステップＳ１３０６）。アドレス判断部６０３によりパケットの送信元ＩＰとＥｓのｐｒｉｖａｔｅ  ｓｏｕｒｃｅ  ＩＰが同一であるか否かを判断する（ステップＳ１３０７）。
【０１８２】
そして、同一であると判断された場合（ステップＳ１３０７：Ｙｅｓ）、アドレス判断部６０３によりパケットの送信元ｐｏｒｔとＥｓのｐｒｉｖａｔｅ  ｓｏｕｒｃｅ  ｐｏｒｔが同一であるか否かを判断する（ステップＳ１３０８）。
【０１８３】
同一であると判断された場合（ステップＳ１３０８：Ｙｅｓ）、アドレス判断部６０３によりパケットのあて先ＩＰとＥｓのｐｒｉｖａｔｅ  ｄｅｓｔｉｎａｔｉｏｎ  ＩＰが同一であるか否かを判断する（ステップＳ１３０９）。同一であると判断された場合（ステップＳ１３０９：Ｙｅｓ）、アドレス判断部６０３により、パケットのあて先ｐｏｒｔとＥｓのｐｒｉｖａｔｅ  ｄｅｓｔｉｎａｔｉｏｎ  ｐｏｒｔが同一であるか否かを判断する（ステップＳ１３１０）。
【０１８４】
そして、同一であると判断された場合（ステップＳ１３１０：Ｙｅｓ）、図１４に移って、Ｅｓの状態管理エントリリンクに基づいて状態管理エントリ（Ｅｓｔ＿ｔｍｐ）を検索する（ステップＳ１３１２）。つぎに、Ｅｓｔ＿ｔｍｐのＥｘｐｉｒｅ時刻＝現時刻＋Ｅｘｐｉｒｅ時間とし（ステップＳ１３１３）、Ｅｓｔ＿ｔｍｐの次リンクで示されるエントリの前リンク＝Ｅｓｔ＿ｔｍｐの前リンクとする（ステップＳ１３１４）。
【０１８５】
そして、Ｅｓｔ＿ｔｍｐの前リンクで示されるエントリの次リンク＝Ｅｓｔ＿ｔｍｐの次リンクとする（ステップＳ１３１５）。Ｅｓｔ＿ｔｍｐの前リンク＝状態管理エントリ（ｔｏｐ）のポインタとし（ステップＳ１３１６）、Ｅｓｔ＿ｔｍｐの次リンク＝状態管理エントリ（ｔｏｐ）の次リンクとする（ステップＳ１３１７）。さらに、状態管理エントリ（ｔｏｐ）の次リンクで示されるエントリの前リンク＝Ｅｓｔ＿ｔｍｐのポインタとし（ステップＳ１３１８）、状態管理エントリ（ｔｏｐ）の次リンク＝Ｅｓｔ＿ｔｍｐのポインタとする（ステップＳ１３１９）。
【０１８６】
そして、変換部６０４により、パケットの送信元ＩＰをＥｓのｇｌｏｂａｌ  ｓｏｕｒｃｅ  ＩＰに変換する（ステップＳ１３２０）。そして、変換部６０４により、パケットの送信元ｐｏｒｔをＥｓのｇｌｏｂａｌ  ｓｏｕｒｃｅ  ｐｏｒｔに変換し（ステップＳ１３２１）、変換後のパケットを送信する（ステップＳ１３２２）。ステップＳ１３１２〜ステップＳ１３１９により、状態管理エントリリンクが再設定される。
【０１８７】
一方、ステップＳ１３０７〜ステップＳ１３１０のいずれか一つのステップで同一でないと判断された場合（ステップＳ１３０７，Ｓ１３０８，Ｓ１３０９，Ｓ１３１０：Ｎｏ）、Ｅｓの次リンクがｎｕｌｌであるか否かを判断する（ステップＳ１３１１）。Ｅｓの次リンクがｎｕｌｌでないと判断された場合（ステップＳ１３１１：Ｎｏ）、ステップＳ１３０６へ戻る。
【０１８８】
また、Ｅｓの次リンクがｎｕｌｌであると判断された場合（ステップＳ１３１１：Ｙｅｓ）、図１５に移って、割り当て可能なグローバルアドレス群から未選択のアドレスがあるか否かを判断する（ステップＳ１５０１）。グローバルアドレス群から未選択のアドレスがあると判断された場合（ステップＳ１５０１：Ｙｅｓ）、未選択のアドレスから１つのアドレスをＡｄとして選択する（ステップＳ１５０２）。
【０１８９】
設定部６０６により、パケットのあて先ＩＰとＡｄとを組み合わせとして設定し、第１の探索部６１２により、当該組み合わせであるパケットのあて先ＩＰとＡｄに基づいて使用ＩＰ／ｐｏｒｔ情報テーブルを検索する（ステップＳ１５０３）。そして、使用ＩＰ／ｐｏｒｔ情報テーブル内の該当エントリをＥａに設定し（ステップＳ１５０４）、Ｅａの次リンクで示されたエントリをＥａに設定する（ステップＳ１５０５）。
【０１９０】
Ｌａｄｄｒ＝Ｅａのポインタとし（ステップＳ１５０６）、第１の判断部６０７により、Ｅａ内のｄｓｔＩＰ＝パケットのあて先ＩＰ、かつＥａ内の変換ＩＰ＝Ａｄであるか否かを判断する（ステップＳ１５０７）。Ｅａ内のｄｓｔＩＰ＝パケットのあて先ＩＰ、かつＥａ内の変換ＩＰ＝Ａｄであると判断された場合（ステップＳ１５０７：Ｙｅｓ）、第２の探索部６１３により、Ｅａの次使用ｐｏｒｔが０か否かを判断する（ステップＳ１５０８）。
【０１９１】
Ｅａの次使用ｐｏｒｔが０であると判断された場合（ステップＳ１５０８：Ｙｅｓ）、ステップＳ１５０１に戻る。ここでは、Ｅａの次使用ｐｏｒｔが０である場合、Ａｄとして選択されたグローバルアドレスと対になるグローバルポート群の中で空いているグローバルポート番号がないことを示している。
【０１９２】
また、ステップＳ１５０１において、グローバルアドレス群から未選択のアドレスがないと判断された場合（ステップＳ１５０１：Ｎｏ）、パケットを破棄し（ステップＳ１５０９）、一連の処理を終了する。ここでは、すべてのグローバルアドレスおよびポート番号が割り当てられているため、パケットが破棄されている。
【０１９３】
また、ステップＳ１５０７において、Ｅａ内のｄｓｔＩＰ＝パケットのあて先ＩＰでなく、またはＥａ内の変換ＩＰ＝Ａｄでないと判断された場合（ステップＳ１５０７：Ｎｏ）、Ｅａの次リンクがｎｕｌｌか否かを判断する（ステップＳ１５１０）。そして、ｎｕｌｌでないと判断された場合（ステップＳ１５１０：Ｎｏ）、ステップＳ１５０５に戻る。
【０１９４】
一方、Ｅａの次使用ｐｏｒｔが０でないと判断された場合（ステップＳ１５０８：Ｎｏ）、図１６に移って、Ｅａの使用ｐｏｒｔエントリリンクに基づいて最後尾の使用ｐｏｒｔエントリ（Ｅｕ）を検索する（ステップＳ１６０１）。そして、ノード生成部６１０により、使用ｐｏｒｔエントリ（Ｅｕｎ）を生成し（ステップＳ１６０２）、ノード生成部６１０により、Ｅｕのｐｏｒｔ＝Ｅａの次使用ｐｏｒｔとする（ステップＳ１６０３）。
【０１９５】
つぎに、第２のリスト構造生成部６１１により、Ｅｕｎの次リンク＝Ｅｕの次リンクとし（ステップＳ１６０４）、第２のリスト構造生成部６１１により、Ｅｕｎの前リンク＝Ｅｕのポインタとする（ステップＳ１６０５）。さらに、第２のリスト構造生成部６１１により、Ｅｕの次リンク＝Ｅｕｎのポインタとする（ステップＳ１６０６）。
【０１９６】
そして、Ｅｕｎの次リンクがｎｕｌｌであるか否かを判断する（ステップＳ１６０７）。Ｅｕｎの次リンクがｎｕｌｌでないと判断された場合（ステップＳ１６０７：Ｎｏ）、Ｅｕｎの次リンクで示されるエントリの前リンク＝Ｅｕｎのポインタとし（ステップＳ１６０８）、変換先ｐｏｒｔ番号（Ｐｄ）＝Ｅｕｎのｐｏｒｔとする（ステップＳ１６０９）。
【０１９７】
また、Ｅｕｎの次リンクがｎｕｌｌであると判断された場合（ステップＳ１６０７：Ｙｅｓ）、ステップＳ１６０９へ移行する。ステップＳ１６０９のつぎに、使用ｐｏｒｔエントリのリンク（Ｌｐｏｒｔ）＝Ｅｕｎのポインタとし（ステップＳ１６１０）、Ｌｕ＝Ｅｕｎのポインタとする（ステップＳ１６１１）。Ｎｐｏｒｔ＝Ｅａの次使用ｐｏｒｔ値＋１とし（ステップＳ１６１２）、ＣＯＵＮＴ＝０とする（ステップＳ１６１３）。
【０１９８】
ここで、ＣＯＵＮＴについて説明する。ＣＯＵＮＴは、アドレス変換装置１００が探索する使用ｐｏｒｔエントリの数をカウントするための変数である。割り当て可能なグローバルアドレスと対になるグローバルポート番号の数が多いため、アドレス変換装置１００が、空いているグローバルポート番号を探索する際にすべての使用ｐｏｒｔエントリを探索すると探索時間が膨大になってしまう。そこで、あらかじめ探索の上限値（本アドレス変換処理手順では最大カウンタ値）を設定し、上限値以下までの使用ｐｏｒｔエントリについては、探索するが、上限値を超える場合は、あらたにグローバルアドレスを割り当てることで、探索時間を削減することができる。
【０１９９】
ステップＳ１６１３のつぎに、図１７へ移って、Ｅｕ＿ｔｍｐ＝Ｅｕｎとし（ステップＳ１６１４）、Ｎｐｏｒｔ＞ｐｏｒｔの最大値であるか否かを判断する（ステップＳ１６１５）。Ｎｐｏｒｔ＞ｐｏｒｔの最大値であると判断された場合（ステップＳ１６１５：Ｙｅｓ）、Ｎｐｏｒｔ＝ｐｏｒｔの最小値とする（ステップＳ１６１６）。
【０２００】
つづいて、Ｅｕ＿ｔｍｐ＝Ｅａの使用ｐｏｒｔエントリ先頭リンク値で示される使用ｐｏｒｔエントリとし（ステップＳ１６１７）、Ｌｕ＝Ｅｕ＿ｔｍｐのポインタとする（ステップＳ１６１８）。また、Ｎｐｏｒｔ＞ｐｏｒｔの最大値でないと判断された場合（ステップＳ１６１５：Ｎｏ）、ステップＳ１６１８へ移行する。
【０２０１】
ステップＳ１６１８のつぎに、Ｅｕ＿ｔｍｐの次リンクがｎｕｌｌであるか否かを判断し（ステップＳ１６１９）、Ｅｕ＿ｔｍｐの次リンクがｎｕｌｌであると判断された場合（ステップＳ１６１９：Ｙｅｓ）、Ｅｕ＿ｔｍｐを、Ｅｕ＿ｔｍｐの次リンクで示される使用ｐｏｒｔエントリに設定する（ステップＳ１６２０）。
【０２０２】
つぎに、Ｅｕ＿ｔｍｐのｐｏｒｔがＮｐｏｒｔであるか否かを判断する（ステップＳ１６２１）。そして、Ｅｕ＿ｔｍｐのｐｏｒｔがＮｐｏｒｔであると判断された場合（ステップＳ１６２１：Ｙｅｓ）、Ｎｐｏｒｔ＝Ｎｐｏｒｔ＋１、ＣＯＵＮＴ＝ＣＯＵＮＴ＋１とする（ステップＳ１６２２）。つづいて、ＣＯＵＮＴ＞最大カウンタ値であるか否かを判断し（ステップＳ１６２３）、ＣＯＵＮＴ＞最大カウンタ値でないと判断された場合（ステップＳ１６２３：Ｎｏ）、ステップＳ１６１５へ戻る。
【０２０３】
一方、ＣＯＵＮＴ＞最大カウンタ値であると判断された場合（ステップＳ１６２３：Ｙｅｓ）、Ｅａの次使用ｐｏｒｔ＝０とする（ステップＳ１６２４）。
【０２０４】
そして、ステップＳ１６２４のつぎに、Ｅａの次使用ｐｏｒｔ＝Ｎｐｏｒｔとし（ステップＳ１６２５）、Ｅａの使用ｐｏｒｔエントリリンク＝Ｌｕとし（ステップＳ１６２６）、ステップＳ１９０１へ移行する。ステップＳ１９０１の処理については、後述する。
【０２０５】
また、Ｅｕ＿ｔｍｐの次リンクがｎｕｌｌでないと判断された場合（ステップＳ１６１９：Ｎｏ）、またはＥｕ＿ｔｍｐのｐｏｒｔがＮｐｏｒｔでないと判断された場合（ステップＳ１６２１：Ｎｏ）、ステップＳ１６２５へ移行する。
【０２０６】
一方、図１５のステップＳ１５１０において、Ｅａの次リンクがｎｕｌｌであると判断された場合（ステップＳ１５１０：Ｙｅｓ）、図１８に移って、アドレス情報エントリ（Ｅａｎ）を生成する（ステップＳ１８０１）。つぎに、Ｅａｎの使用ポートエントリを２つ生成し（Ｅｕ＿ｔｏｐ、Ｅａｕ）（ステップＳ１８０２）、Ｅｕ＿ｔｏｐの次リンク＝Ｅａｕのポインタ（ステップＳ１８０３）、Ｅｕ＿ｔｏｐの前リンク＝ｎｕｌｌとする（ステップＳ１８０４）。
【０２０７】
つぎに、Ｅａｕのｐｏｒｔ＝ｐｏｒｔの最小値とし（ステップＳ１８０５）、Ｅａｕの次リンク＝ｎｕｌｌ、Ｅａｕの前リンク＝Ｅｕ＿ｔｏｐのポインタとし（ステップＳ１８０６）、Ｅａｎの変換ＩＰ＝Ａｄとする（ステップＳ１８０７）。
【０２０８】
そして、ＥａｎのｄｓｔＩＰ＝パケットのあて先ＩＰとし（ステップＳ１８０８）、Ｅａｎの次使用ｐｏｒｔ＝ｐｏｒｔの最小値＋１とし（ステップＳ１８０９）、Ｅａｎの使用ｐｏｒｔエントリリンク＝Ｅａｕのポインタとする（ステップＳ１８１０）。つぎに、Ｅａｎの使用ｐｏｒｔエントリ先頭リンク＝Ｅｕ＿ｔｏｐのポインタとし（ステップＳ１８１１）、Ｅａｎの次リンク＝ｎｕｌｌとし（ステップＳ１８１２）、Ｅａｎの前リンク＝Ｅａのポインタとする（ステップＳ１８１３）。
【０２０９】
そして、Ｅａの次リンク＝Ｅａｎのポインタとし（ステップＳ１８１４）、Ｐｄ＝Ｅａｕのｐｏｒｔとし（ステップＳ１８１５）、Ｌｐｏｒｔ＝Ｅａｕのポインタとする（ステップＳ１８１６）。
【０２１０】
そして、ステップＳ１６２６、またはステップＳ１８１６のつぎに、ＮＡＴ変換テーブルエントリ（Ｅｎ）を生成し（ステップＳ１９０１）、状態管理エントリ（Ｅｓｔ）を生成する（ステップＳ１９０２）。Ｅｎのｐｒｉｖａｔｅ  ｓｏｕｒｃｅ  ＩＰ＝パケットの送信元ＩＰとする（ステップＳ１９０３）。そして、Ｅｎのｐｒｉｖａｔｅ  ｓｏｕｒｃｅ  ｐｏｒｔ＝パケットの送信元ｐｏｒｔとし（ステップＳ１９０４）、Ｅｎのｐｒｉｖａｔｅ  ｄｅｓｔｉｎａｔｉｏｎ  ＩＰ＝パケットの送信先ＩＰとする（ステップＳ１９０５）。
【０２１１】
つぎに、Ｅｎのｐｒｉｖａｔｅ  ｄｅｓｔｉｎａｔｉｏｎ  ｐｏｒｔ＝パケットの送信先ｐｏｒｔとし（ステップＳ１９０６）、Ｅｎのｇｌｏｂａｌ  ｓｏｕｒｃｅ  ＩＰ＝Ａｄとし（ステップＳ１９０７）、Ｅｎのｇｌｏｂａｌ  ｓｏｕｒｃｅ  ｐｏｒｔ＝Ｐｄとする（ステップＳ１９０８）。
【０２１２】
そして、Ｅｎのアドレス情報エントリリンク＝Ｌａｄｄｒとし（ステップＳ１９０９）、Ｅｎの使用ｐｏｒｔエントリリンク＝Ｌｐｏｒｔとし（ステップＳ１９１０）、Ｅｎの状態管理エントリリンク＝Ｅｓｔのポインタとする（ステップＳ１９１１）。ＥｓｔのＮＡＴ変換エントリリンク＝Ｅｎとし（ステップＳ１９１２）、ＥｓｔのＥｘｐｉｒｅ時刻＝現時刻＋Ｅｘｐｉｒｅ時間とし（ステップＳ１９１３）、図２０に移って、Ｅｓｔの次リンク＝状態管理エントリ（ｔｏｐ）の次リンク値とする（ステップＳ１９１４）。
【０２１３】
つづいて、Ｅｓｔの前リンク＝状態管理エントリ（ｔｏｐ）のポインタとし（ステップＳ１９１５）、状態管理エントリ（ｔｏｐ）の次リンクで示されるエントリの前リンクの値＝Ｅｓｔのポインタとする（ステップＳ１９１６）。
【０２１４】
そして、状態管理エントリ（ｔｏｐ）の次リンク＝Ｅｓｔのポインタとし（ステップＳ１９１７）、ＮＡＴ検索テーブル（ｐ→ｇ）からＥｎのパケットの送信元ＩＰ／ｐｏｒｔおよびあて先ＩＰ／ｐｏｒｔの情報に基づいてハッシュエントリを検索する（ステップＳ１９１８）。つぎに、ハッシュエントリのリンクで示されるエントリをＥｐｒｅｖとして特定し（ステップＳ１９１９）、Ｅｐｒｅｖの次リンクで示されるエントリをＥｎｅｘｔに設定する（ステップＳ１９２０）。
【０２１５】
そして、Ｅｎの次リンク＝Ｅｎｅｘｔのポインタとし（ステップＳ１９２１）、Ｅｎの前リンク＝Ｅｐｒｅｖのポインタとし（ステップＳ１９２２）、Ｅｐｒｅｖの次リンク＝Ｅｎのポインタ（ステップＳ１９２３）、Ｅｎｅｘｔの前リンク＝Ｅｎのポインタとする（ステップＳ１９２４）。
【０２１６】
ステップＳ１９２４のつぎに、図２１に移って、Ｅｎのパケットの送信元ＩＰ／ｐｏｒｔおよびあて先ＩＰ／ｐｏｒｔに基づいてＮＡＴ検索テーブル（ｇ→ｐ）からハッシュエントリを検索する（ステップＳ１９２５）。ハッシュエントリのリンクで示されるエントリをＥｐｒｅｖとして特定し（ステップＳ１９２６）、Ｅｐｒｅｖの次リンクで示されるエントリをＥｎｅｘｔに設定する（ステップＳ１９２７）。つぎに、Ｅｎの次リンク＝Ｅｎｅｘｔのポインタとし（ステップＳ１９２８）、Ｅｎの前リンク＝Ｅｐｒｅｖのポインタとし（ステップＳ１９２９）、Ｅｐｒｅｖの次リンク＝Ｅｎのポインタとする（ステップＳ１９３０）。
【０２１７】
そして、Ｅｎｅｘｔの前リンク＝Ｅｎのポインタとし（ステップＳ１９３１）、パケットの送信元ＩＰをＥｎのｇｌｏｂａｌ  ｓｏｕｒｃｅ  ＩＰに変換する（ステップＳ１９３２）。つぎに、パケットの送信元ｐｏｒｔをｇｌｏｂａｌ  ｓｏｕｒｃｅ  ｐｏｒｔに変換し（ステップＳ１９３３）、変換後のパケットを送信し（ステップＳ１９３４）、一連の処理を終了する。
【０２１８】
一方、図１３のステップＳ１３０１において、受信インターフェースがＮＡＴ対象ポートからの受信でない、またはあて先ＩＰがグローバルＩＰでないと判断された場合（ステップＳ１３０１：Ｎｏ）、送信元ＩＰがグローバルＩＰ、かつ送信先ＩＰがＮＡＴ用ＩＰアドレスか否かを判断する（ステップＳ１３０２）。
【０２１９】
そして、送信元ＩＰがグローバルＩＰでない、または送信先ＩＰがＮＡＴ用ＩＰアドレスでないと判断された場合（ステップＳ１３０２：Ｎｏ）、パケットを送信し（ステップＳ１３０３）、一連の処理を終了する。ここでは、アドレス変換装置１００が受信したパケットが、プライベートネットワーク内で通信されるパケットであることを示している。よって、アドレス変換の必要がないため、未変換のままでパケットを送信している。
【０２２０】
一方、送信元ＩＰがグローバルＩＰであり、かつ送信先ＩＰがＮＡＴ用ＩＰアドレスであると判断された場合（ステップＳ１３０２：Ｙｅｓ）、図２２に移る。そして、パケットの送信元ＩＰ／ｐｏｒｔおよびあて先ＩＰ／ｐｏｒｔに基づいてＮＡＴ検索テーブル（ｇ→ｐ）からハッシュエントリを検索する（ステップＳ２２０１）。そして、ハッシュエントリのリンクで示されるエントリをＥｓとして特定し（ステップＳ２２０２）、Ｅｓの次リンクで示されるエントリをＥｓに設定する（ステップＳ２２０３）。
【０２２１】
パケットの送信元ＩＰとｐｒｉｖａｔｅのｄｅｓｔｉｎａｔｉｏｎ  ＩＰが同一であるか否かを判断する（ステップＳ２２０４）。そして、同一であると判断された場合（ステップＳ２２０４：Ｙｅｓ）、パケットの送信元ｐｏｒｔとｐｒｉｖａｔｅのｄｅｓｔｉｎａｔｉｏｎ  ｐｏｒｔが同一であるか否かを判断する（ステップＳ２２０５）。同一であると判断された場合（ステップＳ２２０５：Ｙｅｓ）、パケットのあて先ＩＰとｇｌｏｂａｌのｓｏｕｒｃｅ  ＩＰが同一であるか否かを判断する（ステップＳ２２０６）。
【０２２２】
そして、同一であると判断された場合（ステップＳ２２０６：Ｙｅｓ）、パケットのあて先ｐｏｒｔとｇｌｏｂａｌのｓｏｕｒｃｅ  ｐｏｒｔが同一であるか否かを判断する（ステップＳ２２０７）。同一であると判断された場合（ステップＳ２２０７：Ｙｅｓ）、つづいて、パケットのあて先ＩＰをＥｓのｐｒｉｖａｔｅ  ｓｏｕｒｃｅ  ＩＰに変換し（ステップＳ２２０８）、パケットのあて先ｐｏｒｔをＥｓのｐｒｉｖａｔｅ  ｓｏｕｒｃｅ  ｐｏｒｔに変換する（ステップＳ２２０９）。そして、変換後のパケットを送信し（ステップＳ２２１０）、一連の処理を終了する。
【０２２３】
一方、ステップＳ２２０４〜ステップＳ２２０７のうち、いずれか１つのステップで同一でないと判断された場合（ステップＳ２２０４，Ｓ２２０５，Ｓ２２０６，Ｓ２２０７：Ｎｏ）、Ｅｓの次リンクがｎｕｌｌか否かを判断する（ステップＳ２２１１）。そして、ｎｕｌｌでないと判断された場合（ステップＳ２２１１：Ｎｏ）、ステップＳ２２０３へ戻る。一方、ｎｕｌｌであると判断された場合（ステップＳ２２１１：Ｙｅｓ）、パケットを廃棄し（ステップＳ２２１２）、一連の処理を終了する。
【０２２４】
図２３〜図２５は、アドレス変換装置によるエントリの削除処理手順の一例を示すフローチャートである。本フローチャートで示す各ステップは、すべてアドレス変換装置１００による処理である。まず、状態管理エントリ（ｔａｉｌ）をＥｗｏｒｋに設定し（ステップＳ２３０１）、Ｅｗｏｒｋの前リンクの値と状態管理エントリ（ｔｏｐ）のポインタが同一か否かを判断する（ステップＳ２３０２）。そして、同一でないと判断された場合（ステップＳ２３０２：Ｎｏ）、Ｅｗｏｒｋの前リンクの値で示された状態管理エントリをＥｗｏｒｋとして設定する（ステップＳ２３０３）。
【０２２５】
つぎに、ＥｗｏｒｋのＥｘｐｉｒｅ時刻が現時刻より前か否かを判断する（ステップＳ２３０４）。そして、前であると判断された場合（ステップＳ２３０４：Ｙｅｓ）、図２４に移って、ＥｗｏｒｋのＮＡＴ変換エントリリンクで示されるＮＡＴ変換テーブルエントリをＥｄｎに設定する（ステップＳ２３０５）。つづいて、Ｅｄｎのアドレス情報エントリリンクで示されたアドレス情報エントリをＥｄａに設定し（ステップＳ２３０６）、Ｅｄｎの使用ｐｏｒｔエントリリンクで示された使用ｐｏｒｔエントリをＥｄｐに設定する（ステップＳ２３０７）。
【０２２６】
Ｅｄｐの前リンク値がＥｄａの使用ｐｏｒｔエントリ先頭リンクであり、かつＥｄｐの次リンクの値がｎｕｌｌか否かを判断する（ステップＳ２３０８）。そして、Ｅｄｐの前リンク値がＥｄａの使用ｐｏｒｔエントリ先頭リンクであり、かつＥｄｐの次リンク値がｎｕｌｌであると判断された場合（ステップＳ２３０８：Ｙｅｓ）、Ｅｄａの次リンクで示されるアドレス情報エントリの前リンクの値＝Ｅｄａの前リンクの値とする（ステップＳ２３０９）。
【０２２７】
つぎに、Ｅｄａの前リンクで示されるアドレス情報エントリの次リンクの値＝Ｅｄａの次リンクの値とする（ステップＳ２３１０）。そして、Ｅｄａの使用ｐｏｒｔエントリ先頭リンクで示される使用ｐｏｒｔエントリを削除し（ステップＳ２３１１）、ステップＳ２３１７へ移行する。
【０２２８】
一方、Ｅｄｐの前リンク値がＥｄａの使用ｐｏｒｔエントリ先頭リンクでない、またはＥｄｐの次リンク値がｎｕｌｌでないと判断された場合（ステップＳ２３０８：Ｎｏ）、Ｅｄｐの次リンクで示された使用ｐｏｒｔエントリの前リンクの値＝Ｅｄｐの前リンクの値とする（ステップＳ２３１２）。そして、Ｅｄｐの前リンクで示された使用ｐｏｒｔエントリの次リンクの値＝Ｅｄｐの次リンクの値とする（ステップＳ２３１３）。Ｅｄａの次使用ｐｏｒｔの値が０か否かを判断し（ステップＳ２３１４）、０であると判断された場合（ステップＳ２３１４：Ｙｅｓ）、Ｅｄａの次使用ｐｏｒｔの値＝Ｅｄｐのｐｏｒｔの値とする（ステップＳ２３１５）。
【０２２９】
つぎに、Ｅｄａの使用ｐｏｒｔエントリリンク＝Ｅｄｐの前リンクの値とし（ステップＳ２３１６）、Ｅｄａを削除する（ステップＳ２３１７）。また、ステップＳ２３１４において、０でないと判断された場合（ステップＳ２３１４：Ｎｏ）、ステップＳ２３１７へ移行する。これにより、使用ｐｏｒｔエントリを削除する際に、削除エントリのポート番号を、当該使用ｐｏｒｔエントリを有するアドレス情報エントリ内の次使用ｐｏｒｔに設定することで、空いているポート番号の検索処理時間を削減することができる。
【０２３０】
そして、ステップＳ２３１７のつぎに、図２５に移って、Ｅｄｎの前リンク（ｐ→ｇ）で示されたエントリの次リンク（ｐ→ｇ）の値＝Ｅｄｎの次リンク（ｐ→ｇ）の値とする（ステップＳ２３１８）。つぎに、Ｅｄｎの次リンク（ｐ→ｇ）がｎｕｌｌか否かを判断する（ステップＳ２３１９）。
【０２３１】
Ｅｄｎの次リンク（ｐ→ｇ）がｎｕｌｌでないと判断された場合（ステップＳ２３１９：Ｎｏ）、Ｅｄｎの次リンク（ｐ→ｇ）で示されたエントリの前リンク（ｐ→ｇ）の値＝Ｅｄｎの前リンク（ｐ→ｇ）の値とする（ステップＳ２３２０）。そして、Ｅｄｎの前リンク（ｇ→ｐ）で示されたエントリの次リンク（ｇ→ｐ）の値＝Ｅｄｎの次リンク（ｇ→ｐ）の値とする（ステップＳ２３２１）。
【０２３２】
一方、Ｅｄｎの次リンク（ｐ→ｇ）がｎｕｌｌであると判断された場合（ステップＳ２３１９：Ｙｅｓ）、ステップＳ２３２１に移行する。
【０２３３】
ステップＳ２３２１のつぎに、Ｅｄｎの次リンク（ｐ→ｇ）がｎｕｌｌであるか否かを判断する（ステップＳ２３２２）。Ｅｄｎの次リンク（ｐ→ｇ）がｎｕｌｌでないと判断された場合（ステップＳ２３２２：Ｎｏ）、Ｅｄｎの次リンク（ｇ→ｐ）で示されたエントリの前リンク（ｇ→ｐ）の値＝Ｅｄｎの前リンク（ｇ→ｐ）の値とし（ステップＳ２３２３）、ステップＳ２３０４へ戻る。一方、Ｅｄｎの次リンク（ｐ→ｇ）がｎｕｌｌであると判断された場合（ステップＳ２３２２：Ｙｅｓ）、ステップＳ２３０４へ戻る。
【０２３４】
一方、ステップＳ２３０２において、Ｅｗｏｒｋの前リンクの値と状態管理エントリ（ｔｏｐ）のポインタが同一であると判断された場合（ステップＳ２３０２：Ｙｅｓ）、一連の処理を終了する。また、ステップＳ２３０４において、ＥｗｏｒｋのＥｘｐｉｒｅ時刻が現時刻より前でないと判断された場合（ステップＳ２３０４：Ｎｏ）、一連の処理を終了する。
【０２３５】
また、本実施の形態では、ＮＡＴ検索テーブルと、状態管理テーブルと、使用ＩＰ／ｐｏｒｔ情報テーブルとを用いたリスト構造を用いて説明したが、これに限らず、あて先アドレスが異なるか否かによってグローバルアドレスを割り当てることができればよい。たとえば、図２６および図２７に示す。
【０２３６】
図２６は、他のリスト構造を用いる例１を示す説明図である。ａｄｄｒが、アドレス変換に使用可能なアドレスであり、ａｄｄｒとｐｏｒｔのすべての組み合わせに対してあて先アドレス（Ｄｉｐ＊＿＊（＊は番号））が関連付けられている。たとえば、ａｄｄｒがＩＰ１であり、ｐｏｒｔがｐ１の場合、あて先アドレスがＤｉｐ１＿１，Ｄｉｐ１＿２，・・Ｄｉｐ１＿ｉにおいて割り当てられている。これにより、少なくともあて先アドレスが異なれば同一の送信元グローバルアドレスおよびｐｏｒｔを割り当てることができる。
【０２３７】
図２７は、他のリスト構造を用いる例２を示す説明図である。ｈａｓｈ＿ｔａｂｌｅは、ハッシュテーブルであり、あて先アドレスと、送信元グローバルアドレスおよびｐｏｒｔを用いてハッシュ値が導出される。そして、あて先アドレス（Ｄｉｐ＊＿＊（＊は番号））ごとに送信元グローバルアドレス（ＩＰ）と、ｐｏｒｔ（ｐｙ、ｐｚ）とが関連付けられて、リスト構造となっている。
【０２３８】
アドレス変換装置１００が、送信元グローバルアドレスおよびｐｏｒｔを決定して、ｈａｓｈ＿ｔａｂｌｅからあて先アドレスと、送信元グローバルアドレスおよびｐｏｒｔの組み合わせがあるか否かを検索する。そして、検索されなかった場合、アドレス変換装置１００は、決定された送信元グローバルアドレスおよびｐｏｒｔの組み合わせを用いてアドレス変換を行う。これにより、少なくともあて先アドレスが異なれば同一の送信元グローバルアドレスおよびｐｏｒｔを割り当てることができる。
【０２３９】
以上説明したように、アドレス変換装置、アドレス変換方法、およびアドレス変換プログラムによれば、受信された第１のパケットのあて先アドレスと、すでに送信元グローバルアドレスが割り当てられた第２のパケットのあて先アドレスが異なる場合、第１のパケットの送信元プライベートアドレスに第２のパケットの送信元グローバルアドレスを割り当てる。これにより、グローバルアドレス割り当ての効率化を図ることができ、グローバルアドレスの使用数を削減することができる。
【０２４０】
また、少なくともあて先が異なる２つのパケットに対して、さらに、同一のグローバルポートを割り当てる。これにより、グローバルアドレスおよびグローバルポート番号割り当ての効率化を図ることができ、グローバルアドレスの使用数を削減することができる。
【０２４１】
また、異なる２つのパケットにおいて、あて先アドレスおよびポート番号と送信元プライベートアドレスおよびポート番号がすべて同一の場合、同一のグローバルアドレスおよび同一のポート番号を割り当てる。これにより、グローバルアドレス割り当ての効率化を図ることができる。
【０２４２】
また、第１のパケットのあて先アドレスと第２のパケットのあて先アドレスが同一の場合において、他のアドレス情報のいずれかが異なる場合、同一のグローバルアドレスを割り当てると共に、異なるポート番号を割り当てる。
【０２４３】
また、すでに割り当て済のパケットの送信元グローバルアドレスとあて先との組み合わせを第１のリスト構造として保持し、さらに、当該組み合わせごとに割り当てられたポート番号を第２のリスト構造として保持する。これにより、空いているポート番号の探索を高速に行うことができ、さらに、メモリリソースを削減することができる。
【０２４４】
また、第２のリスト構造内のノードをポート番号順に関連付けることでポート番号の探索を容易化および高速化できる。
【０２４５】
また、第１のリスト構造内から、パケットのあて先アドレスと選択されたグローバルアドレス（実施の形態ではＡｄ）と一致する組み合わせを探索する。さらに、探索された組み合わせの第２のリスト構造から空いているポート番号を探索する。これにより、空いているポート番号の探索を容易かつ高速に行うことができる。
【０２４６】
また、ポート番号を探索する際に、探索の上限値を決定し、第２のリスト構造から上限値分のノードを順に探索し、探索できなかった場合、割り当て可能なグローバルアドレス群から異なるグローバルアドレスを選択し、パケットのあて先アドレスに割り当てる。これにより、探索時間を削減することができる。
【０２４７】
また、グローバルネットワーク内の通信端末からプライベートネットワーク内の通信端末へのパケットを受信し、プライベートネットワーク内の通信端末からグローバルネットワークへすでにコネクションがあるか否かを判断する。そして、すでにコネクションが合った場合のみパケットのあて先グローバルアドレスおよびポート番号を、プライベートアドレスおよびポート番号に変換する。したがって、異なるパケットに同一のグローバルアドレスおよびポート番号を割り当てていても、グローバルネットワーク内の通信装置からプライベートネットワーク内の通信装置へ正しく送信することができる。
【０２４８】
なお、本実施の形態で説明したアドレス変換方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本アドレス変換プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本アドレス変換プログラムは、インターネット等のネットワークを介して配布してもよい。
【０２４９】
また、本実施の形態で説明したアドレス変換装置１００は、スタンダードセルやストラクチャードＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの特定用途向けＩＣ（以下、単に「ＡＳＩＣ」と称す。）やＦＰＧＡなどのＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）によっても実現することができる。具体的には、たとえば、上述したアドレス変換装置１００の機能（受信部６０１〜第２の探索部６１３）をＨＤＬ記述によって機能定義し、そのＨＤＬ記述を論理合成してＡＳＩＣやＰＬＤに与えることにより、アドレス変換装置１００を製造することができる。
【符号の説明】
【０２５０】
１００  アドレス変換装置
１０１  ＬＡＮ
１０２  ＷＡＮ
１０４  あて先ＩＰ
１０５  あて先ｐｏｒｔ
１０６  送信元プライベートＩＰ
１０７  送信元プライベートｐｏｒｔ
１０８  送信元グローバルＩＰ
１０９  送信元グローバルｐｏｒｔ
６０１  受信部
６０３  アドレス判断部
６０４  変換部
６０５  送信部
６０６  設定部
６０７  第１の判断部
６０８  第１のリスト構造生成部
６０９  第２の判断部
６１０  ノード生成部
６１１  第２のリスト構造生成部
【国際調査報告】
2011052082.tif 000030
2011052082.tif 000031