モジュール java.base
パッケージ java.net

クラスInetAddress

java.lang.Object
java.net.InetAddress
すべての実装されたインタフェース:
Serializable
直系の既知のサブクラス:
Inet4Address, Inet6Address

public sealed class InetAddress extends Object implements Serializable permits Inet4Address, Inet6Address
IP (Internet Protocol)アドレスを表すクラスです。

IPアドレスは、IPによって使用される32ビットまたは128ビットの符号なしの数値です。IPは、UDPやTCPなどのプロトコルの構築基盤となる下位レベルのプロトコルです。 IPアドレスのアーキテクチャについては、「RFC 790: Assigned Numbers」、「 RFC 1918: Address Allocation for Private Internets」、「RFC 2365: Administratively Scoped IP Multicast」、および「RFC 2373: IP Version 6 Addressing Architecture」で定義されています。 InetAddressのインスタンスは、IPアドレスと、場合によってはそれに対応するホスト名から構成されます。ホスト名が含まれるかどうかは、そのインスタンスがホスト名を使って構築されているかどうか、またはそのインスタンスがホスト名の逆解決をすでに実行したかどうかによって決まります。

アドレスの型

ユニキャストおよびマルチキャストのアドレス種類の説明
Address Type説明
ユニキャスト 単一インタフェースの識別子。 ユニキャスト・アドレスに送信されたパケットは、そのアドレスによって識別されるインタフェースに配信されます。

未指定のアドレス -- 任意ローカル・アドレスまたはワイルドカード・アドレスとも呼ばれます。 これはどのノードにも割り当てないでください。 これはアドレスがないことを示します。 このアドレスを使った例としてバインドの対象があります。これを使うと、あるサーバー・ホストに複数のインタフェースがある場合に、そのサーバーが任意のインタフェース上でクライアントの接続を受け入れることができます。

未指定のアドレスは、IPパケットの転送先アドレスとして使用してはいけません。

ループ・バック・アドレス -- これはループバック・インタフェースに割り当てられるアドレスです。 このIPアドレスに送信された内容はすべてループして元に戻され、ローカル・ホストのIP入力となります。 このアドレスは、クライアントのテスト時によく使用されます。

multicast 一連のインタフェース(通常は別のノードに属している)の識別子。 マルチキャスト・アドレスに送信されたパケットは、そのアドレスによって識別されるすべてのインタフェースに配信されます。

IPアドレスのスコープ

リンク・ローカル・アドレスは、自動アドレス構成、隣接アドレスの発見などを目的として、あるいはルーターが存在しない場合に、単一リンクのアドレス指定に使うために設計されています。

サイト・ローカル・アドレスは、グローバル接頭辞を必要としないサイト内のアドレス指定に使うために設計されています。

グローバル・アドレスは、インターネット全体で一意です。

IPアドレスのテキスト表現

IPアドレスのテキスト表現はアドレス・ファミリに固有です。

IPv4のアドレス形式については、Inet4Addressを参照してください。IPv6のアドレス形式については、Inet6Addressを参照してください。

IPv4とIPv6のアドレスがどのように使用されるかに影響を与えるいくつかのシステム・プロパティが存在します。

ホスト名の解決

InetAddressクラスは、ホスト名からそのIPアドレスへの解決、およびその逆の解決のメソッドを提供します。 実際の解決は、「InetAddressリゾルバ」に委任されます。

「ホスト名からIPアドレスへの解決」は、ホスト名をIPアドレスにマップします。 任意のホスト名について、それに対応するIPアドレスが返されます。

逆名前解決では、任意のIPアドレスについて、そのIPアドレスに関連するホスト名が返されます。

組込みのInetAddressリゾルバ実装では、ローカル・マシン構成情報とドメイン・ネーム・システム(DNS)などのネットワーク・ネーミング・サービスと、Lightweight Directory Access Protocol (LDAP)などのネットワーク・ネーミング・サービスの組合せを使用して、ホスト名からIPアドレス解決を行います。 組込みリゾルバがデフォルトで使用する特定のネーミング・サービスは、ローカル・マシンの構成によって異なります。

InetAddressには、組込み実装のかわりにカスタムInetAddressリゾルバを使用できるInetAddressリゾルバのサービス・プロバイダ・メカニズムがあります。 InetAddressResolverProviderは、サービス・プロバイダ・クラスです。 そのAPIドキュメントは、このメカニズムに関するすべての詳細を提供します。

InetAddressのキャッシュ

InetAddressクラスは、成功したホスト名解決と失敗したホスト名解決を格納するためのキャッシュを備えています。

デフォルトでは、セキュリティ・マネージャがインストールされている場合は、DNSなりすまし攻撃から身を守るため、成功したホスト名解決の結果が永続的にキャッシュされます。 セキュリティ・マネージャがインストールされていない場合のデフォルト動作では、ある限られた期間(実装に依存する)だけエントリがキャッシュされます。 失敗したホスト名解決の結果は、パフォーマンスの向上のために短時間(10秒)だけキャッシュされます。

デフォルト動作が要求に合わない場合は、ポジティブ・キャッシュ用のJavaセキュリティ・プロパティを異なる有効期間(TTL)値に設定することができます。 同様に、システム管理者は、必要に応じて異なる負のキャッシュTTL値を構成したり、失効データの使用を拡張できます。

正および負のホスト名解決キャッシュに使用されるTTL値は、3つのJavaセキュリティ・プロパティによって制御されます:

networkaddress.cache.ttl
ネーム・サービスによる成功した名前検索に対するキャッシング・ポリシーを示します。 値は、成功したルックアップをキャッシュする秒数を示す整数として指定されます。 デフォルト設定は、実装に固有の期間キャッシュすることです。

-1の値は、「ずっとキャッシュする」という意味です。

networkaddress.cache.stale.ttl
失効した名前のキャッシュ・ポリシーを示します。 値は、失効した名前がキャッシュに保持される秒数を示す整数として指定されます。 TTLが期限切れになり、ホスト名を再度ルックアップしようとして成功しなかった場合、名前は失効したとみなされます。 このプロパティは、ルックアップが失敗したために失敗するよりも失効した名前を使用することが望ましい場合に役立ちます。 デフォルト設定は、実装に固有の期間キャッシュすることです。

このプロパティの値が"networkaddress.cache.ttl"より大きい場合、"networkaddress.cache.ttl"はキャッシュ内の名前のリフレッシュ間隔として使用されます。 たとえば、このプロパティが1日に設定され、"networkaddress.cache.ttl"が30秒に設定されている場合、正のレスポンスは1日間キャッシュされますが、リフレッシュの試行は30秒ごとに行われます。

値0 (zero)、またはプロパティが設定されていない場合、失効した名前を使用しないことを意味します。 負の値は無視されます。

networkaddress.cache.negative.ttl (デフォルト: 10)
ネーム・サービスによる失敗した名前検索に対するキャッシング・ポリシーを示します。 値は、失敗したルックアップの失敗をキャッシュする秒数を示す整数として指定されます。

0の値は、「キャッシュしない」という意味です。 -1の値は、「ずっとキャッシュする」という意味です。

シール済クラス階層グラフ:
InetAddressのシール済クラス階層グラフInetAddressのシール済クラス階層グラフ
導入されたバージョン:
1.0
外部仕様
関連項目: