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

クラスInetAddress

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

public class InetAddress extends Object implements Serializable
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のアドレスがどのように使用されるかに影響を与えるいくつかのシステム・プロパティが存在します。

ホスト名の解決

ホスト名からIPアドレスへの解決は、ローカル・マシン構成情報と、ドメイン・ネーム・システム(DNS)やネットワーク情報サービス(NIS)などのネットワーク・ネーム・サービスとを組み合わせて使用することで実現されます。 使用される個別のネーム・サービスは、デフォルトではローカル・マシンに構成されているネーム・サービスです。 任意のホスト名について、それに対応するIPアドレスが返されます。

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

InetAddressクラスは、ホスト名からそのIPアドレスへの解決、およびその逆の解決のメソッドを提供します。

InetAddressのキャッシュ

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

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

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

2つのJavaセキュリティ・プロパティにより、ポジティブおよびネガティブのホスト名解決のキャッシュに使用するTTL値を制御します。

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

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

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

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

導入されたバージョン:
1.0
関連項目:
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    boolean
    このオブジェクトと指定されたオブジェクトを比較します。
    byte[]
    このInetAddressオブジェクトの生のIPアドレスを返します。
    static InetAddress[]
    ホスト名を指定すると、システムに設定されているネーム・サービスに基づいてそのIPアドレスの配列を返します。
    getByAddress(byte[] addr)
    指定された生のIPアドレスを表すInetAddressオブジェクトを返します。
    getByAddress(String host, byte[] addr)
    指定されたホスト名とIPアドレスに基づいてInetAddressを作成します。
    指定されたホスト名を持つホストのIPアドレスを取得します。
    このIPアドレスに対応する完全指定ドメイン名を取得します。
    テキスト表現のIPアドレス文字列を返します。
    このIPアドレスに対応するホスト名を取得します。
    ローカル・ホストのアドレスを返します。
    ループバック・アドレスを返します。
    int
    このIPアドレスのハッシュ・コードを返します。
    boolean
    InetAddressがワイルドカード・アドレスかどうかを調べるユーティリティ・ルーチン。
    boolean
    InetAddressがリンク・ローカル・アドレスかどうかを調べるユーティリティ・ルーチンです。
    boolean
    InetAddressがループバック・アドレスかどうかを調べるユーティリティ・ルーチンです。
    boolean
    マルチキャスト・アドレスにグローバル・スコープがあるかどうかを調べるユーティリティ・ルーチンです。
    boolean
    マルチキャスト・アドレスにリンク・スコープがあるかどうかを調べるユーティリティ・ルーチンです。
    boolean
    マルチキャスト・アドレスにノード・スコープがあるかどうかを調べるユーティリティ・ルーチンです。
    boolean
    マルチキャスト・アドレスに組織スコープがあるかどうかを調べるユーティリティ・ルーチンです。
    boolean
    マルチキャスト・アドレスにサイト・スコープがあるかどうかを調べるユーティリティ・ルーチンです。
    boolean
    InetAddressがIPマルチキャスト・アドレスかどうかを調べるユーティリティ・ルーチンです。
    boolean
    isReachable(int timeout)
    そのアドレスに到達可能かどうかをテストします。
    boolean
    isReachable(NetworkInterface netif, int ttl, int timeout)
    そのアドレスに到達可能かどうかをテストします。
    boolean
    InetAddressがサイト・ローカル・アドレスかどうかを調べるユーティリティ・ルーチンです。
    このIPアドレスをStringに変換します。

    クラス java.lang.Objectで宣言されたメソッド

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • メソッドの詳細

    • isMulticastAddress

      public boolean isMulticastAddress()
      InetAddressがIPマルチキャスト・アドレスかどうかを調べるユーティリティ・ルーチンです。
      戻り値:
      InetAddressがIPマルチキャスト・アドレスかどうかを示すboolean
      導入されたバージョン:
      1.1
    • isAnyLocalAddress

      public boolean isAnyLocalAddress()
      InetAddressがワイルドカード・アドレスかどうかを調べるユーティリティ・ルーチン。
      戻り値:
      InetAddressがワイルドカードのアドレスかどうかを示すboolean
      導入されたバージョン:
      1.4
    • isLoopbackAddress

      public boolean isLoopbackAddress()
      InetAddressがループバック・アドレスかどうかを調べるユーティリティ・ルーチンです。
      戻り値:
      InetAddressがループバック・アドレスかどうかを示すboolean。ループバック・アドレスでない場合はfalse。
      導入されたバージョン:
      1.4
    • isLinkLocalAddress

      public boolean isLinkLocalAddress()
      InetAddressがリンク・ローカル・アドレスかどうかを調べるユーティリティ・ルーチンです。
      戻り値:
      InetAddressがリンク・ローカル・アドレスかどうかを示すboolean。アドレスがリンク・ローカル・ユニキャスト・アドレスでない場合はfalse。
      導入されたバージョン:
      1.4
    • isSiteLocalAddress

      public boolean isSiteLocalAddress()
      InetAddressがサイト・ローカル・アドレスかどうかを調べるユーティリティ・ルーチンです。
      戻り値:
      InetAddressがサイト・ローカル・アドレスかどうかを示すboolean。アドレスがサイト・ローカル・ユニキャスト・アドレスでない場合はfalse。
      導入されたバージョン:
      1.4
    • isMCGlobal

      public boolean isMCGlobal()
      マルチキャスト・アドレスにグローバル・スコープがあるかどうかを調べるユーティリティ・ルーチンです。
      戻り値:
      アドレスがグローバル・スコープのマルチキャスト・アドレスかどうかを示すboolean。それがグローバル・スコープのアドレスでないかマルチキャスト・アドレスでない場合はfalse
      導入されたバージョン:
      1.4
    • isMCNodeLocal

      public boolean isMCNodeLocal()
      マルチキャスト・アドレスにノード・スコープがあるかどうかを調べるユーティリティ・ルーチンです。
      戻り値:
      アドレスがノード・ローカル・スコープのマルチキャスト・アドレスかどうかを示すboolean。それがノード・ローカル・スコープのアドレスでないかマルチキャスト・アドレスでない場合はfalse
      導入されたバージョン:
      1.4
    • isMCLinkLocal

      public boolean isMCLinkLocal()
      マルチキャスト・アドレスにリンク・スコープがあるかどうかを調べるユーティリティ・ルーチンです。
      戻り値:
      アドレスがリンク・ローカル・スコープのマルチキャスト・アドレスかどうかを示すboolean。それがリンク・ローカル・スコープのアドレスでないかマルチキャスト・アドレスでない場合はfalse
      導入されたバージョン:
      1.4
    • isMCSiteLocal

      public boolean isMCSiteLocal()
      マルチキャスト・アドレスにサイト・スコープがあるかどうかを調べるユーティリティ・ルーチンです。
      戻り値:
      アドレスがサイト・ローカル・スコープのマルチキャスト・アドレスかどうかを示すboolean。それがサイト・ローカル・スコープのアドレスでないかマルチキャスト・アドレスでない場合はfalse
      導入されたバージョン:
      1.4
    • isMCOrgLocal

      public boolean isMCOrgLocal()
      マルチキャスト・アドレスに組織スコープがあるかどうかを調べるユーティリティ・ルーチンです。
      戻り値:
      アドレスが組織ローカル・スコープのマルチキャスト・アドレスかどうかを示すboolean。それが組織ローカル・スコープのアドレスでないかマルチキャスト・アドレスでない場合はfalse
      導入されたバージョン:
      1.4
    • isReachable

      public boolean isReachable(int timeout) throws IOException
      そのアドレスに到達可能かどうかをテストします。 実装ではできるだけホストに到達しようとしますが、ファイアウォールやサーバー構成によって要求がブロックされるため、いくつかの特定のポートがアクセス可能であるにもかかわらず、到達不可能なステータスになる可能性があります。 通常の実装では、特権を取得できる場合はICMP ECHO REQUESTを使用し、それ以外の場合は接続先ホストのポート7 (Echo)上でTCP接続を確立しようとします。

      タイム・アウト値(ミリ秒)は、この試行の最大所要時間を示します。 応答が得られる前に操作がタイム・アウトした場合、そのホストは到達不可能とみなされます。 値が負の場合、IllegalArgumentExceptionがスローされます。

      パラメータ:
      timeout - 呼出しが中止されるまでのミリ秒単位の時間
      戻り値:
      アドレスが到達可能かどうかを示すboolean
      例外:
      IOException - ネットワーク・エラーが発生した場合
      IllegalArgumentException - timeoutが負の値の場合。
      導入されたバージョン:
      1.5
    • isReachable

      public boolean isReachable(NetworkInterface netif, int ttl, int timeout) throws IOException
      そのアドレスに到達可能かどうかをテストします。 実装ではできるだけホストに到達しようとしますが、ファイアウォールやサーバー構成によって要求がブロックされるため、いくつかの特定のポートがアクセス可能であるにもかかわらず、到達不可能なステータスになる可能性があります。 通常の実装では、特権を取得できる場合はICMP ECHO REQUESTを使用し、それ以外の場合は接続先ホストのポート7 (Echo)上でTCP接続を確立しようとします。

      ネットワーク・インタフェース・パラメータとttlパラメータを使えば、呼出し元は、テストの実行経路となるネットワーク・インタフェースと、パケットの最大ホップ数を指定できます。 ttlの値が負の場合、IllegalArgumentExceptionがスローされます。

      タイム・アウト値(ミリ秒)は、この試行の最大所要時間を示します。 応答が得られる前に操作がタイム・アウトした場合、そのホストは到達不可能とみなされます。 値が負の場合、IllegalArgumentExceptionがスローされます。

      パラメータ:
      netif−テストの実行経路となるNetworkInterface。どのインタフェースでもかまわない場合はnull
      ttl−試みるべきホップの最大数。デフォルトは0
      timeout - 呼出しが中止されるまでのミリ秒単位の時間
      戻り値:
      アドレスが到達可能かどうかを示すboolean
      例外:
      IllegalArgumentException - timeoutまたはttlが負の場合。
      IOException - ネットワーク・エラーが発生した場合
      導入されたバージョン:
      1.5
    • getHostName

      public String getHostName()
      このIPアドレスに対応するホスト名を取得します。

      このInetAddressがホスト名を指定して作成されたものである場合は、記憶されているそのホスト名が返されます。そうでない場合は、システムで設定された名前検索サービスに基づいて逆名前検索が実行され、その結果が返されます。 ネーム・サービスの検索が必要になった場合は、getCanonicalHostNameを呼び出します。

      セキュリティ・マネージャが存在する場合は、まずセキュリティ・マネージャのcheckConnectメソッドがホスト名および-1を引数として呼び出され、操作が許可されるかどうかが確認されます。 操作が許可されていない場合、IPアドレスのテキスト表現を返します。

      戻り値:
      このIPアドレスのホスト名。セキュリティ・チェックによってこの操作が許可されていない場合は、このIPアドレスのテキスト表現。
      関連項目:
    • getCanonicalHostName

      public String getCanonicalHostName()
      このIPアドレスに対応する完全指定ドメイン名を取得します。 ベスト・エフォート型のメソッドです。つまり、このメソッドは、背後のシステム構成によってはFQDNを返せない可能性があります。

      セキュリティ・マネージャが存在する場合、このメソッドはまず、ホスト名と-1を引数に指定してそのcheckConnectメソッドを呼び出し、呼出し元のコードがこのIPアドレスのホスト名を知ること(つまり、そのホストに接続すること)を許可されているかどうかを確認します。 操作が許可されていない場合、IPアドレスのテキスト表現を返します。

      戻り値:
      このIPアドレスの完全指定ドメイン名。セキュリティ・チェックによってこの操作が許可されていない場合は、このIPアドレスのテキスト表現。
      導入されたバージョン:
      1.4
      関連項目:
    • getAddress

      public byte[] getAddress()
      このInetAddressオブジェクトの生のIPアドレスを返します。 その結果はネットワーク・バイト順序になります。アドレスの最上位順序バイトはgetAddress()[0].内に存在します。
      戻り値:
      このオブジェクトのIPアドレス。
    • getHostAddress

      public String getHostAddress()
      テキスト表現のIPアドレス文字列を返します。
      戻り値:
      IPアドレスの文字列形式。
      導入されたバージョン:
      1.0.2
    • hashCode

      public int hashCode()
      このIPアドレスのハッシュ・コードを返します。
      オーバーライド:
      hashCode、クラスObject
      戻り値:
      このIPアドレスのハッシュ・コード値。
      関連項目:
    • equals

      public boolean equals(Object obj)
      このオブジェクトと指定されたオブジェクトを比較します。 引数がnullではなく、その引数がこのオブジェクトと同じIPアドレスを表す場合にだけ、結果がtrueになります。

      getAddressによって返されるバイト配列の長さが同じであり、バイト配列の各コンポーネントが同じである場合、2つのInetAddressのインスタンスは同じIPアドレスを表しています。

      オーバーライド:
      equals、クラスObject
      パラメータ:
      obj - 比較対象のオブジェクト。
      戻り値:
      オブジェクトが同じである場合はtrue、そうでない場合はfalse
      関連項目:
    • toString

      public String toString()
      このIPアドレスをStringに変換します。 返される文字列の形式は、「ホスト名/リテラルIPアドレス」になります。 ホスト名が未解決の場合、逆ネーム・サービス検索は実行されません。 ホスト名の部分は空の文字列で表現されます。
      オーバーライド:
      toString、クラスObject
      戻り値:
      このIPアドレスの文字列表現。
    • getByAddress

      public static InetAddress getByAddress(String host, byte[] addr) throws UnknownHostException
      指定されたホスト名とIPアドレスに基づいてInetAddressを作成します。 アドレスの有効性を確認するためのネーム・サービスのチェックは行われません。

      ホスト名は、"www.example.com"のようなマシン名、またはそのIPアドレスのテキスト表現のいずれかです。

      ホスト名の有効性チェックも一切実行されません。

      addrにIPv4アドレスを指定すると、Inet4Addressのインスタンスが返されます。そうでない場合は、Inet6Addressのインスタンスが返されます。

      IPv4アドレスのバイト配列は4バイト長、IPv6のバイト配列は16バイト長である必要があります。

      パラメータ:
      host - 指定されたホスト
      addr - ネットワーク・バイト・オーダーのIPアドレス
      戻り値:
      IPアドレスから生成されたInetAddressオブジェクト。
      例外:
      UnknownHostException - IPアドレスの長さが不正の場合
      導入されたバージョン:
      1.4
    • getByName

      public static InetAddress getByName(String host) throws UnknownHostException
      指定されたホスト名を持つホストのIPアドレスを取得します。

      ホスト名は、"www.example.com"のようなマシン名、またはそのIPアドレスのテキスト表現のいずれかです。 リテラルIPアドレスが指定された場合、アドレス形式の有効性のみがチェックされます。

      リテラルIPv6アドレスで指定されるhostについては、RFC 2732で定義されている形式か、RFC 2373で定義されているリテラルIPv6アドレス形式が可能です。 IPv6スコープ・アドレスもサポートされています。 IPv6スコープ・アドレスについては、ここを参照してください。

      ホストがnullまたはhost.length()がゼロと等しい場合は、ループバック・インタフェースのアドレスを表すInetAddressが返されます。 RFC 3330セクション 2およびRFC 2373セクション 2.5.3を参照してください。

      セキュリティ・マネージャが存在し、hostnullまたはhost.length() がゼロと等しくない場合、セキュリティ・マネージャcheckConnectメソッドが、操作が許可されるかどうかを判断するために、引数としてhostnameと-1をコールされます。

      パラメータ:
      host - 指定されたホストまたはnull
      戻り値:
      指定されたホスト名のIPアドレス。
      例外:
      UnknownHostException - hostのIPアドレスが見つからなかった場合、またはグローバルIPv6アドレスでスコープIDが指定された場合。
      SecurityException - セキュリティ・マネージャが存在し、そのcheckConnectメソッドでこの操作が許可されていない場合。
    • getAllByName

      public static InetAddress[] getAllByName(String host) throws UnknownHostException
      ホスト名を指定すると、システムに設定されているネーム・サービスに基づいてそのIPアドレスの配列を返します。

      ホスト名は、"www.example.com"のようなマシン名、またはそのIPアドレスのテキスト表現のいずれかです。 リテラルIPアドレスが指定された場合、アドレス形式の有効性のみがチェックされます。

      リテラルIPv6アドレスで指定されるhostについては、RFC 2732で定義されている形式か、RFC 2373で定義されているリテラルIPv6アドレス形式が可能です。 リテラルIPv6アドレスは修飾することも可能です。それにはスコープ・ゾーン識別子、つまりスコープIDを末尾に追加します。 スコープIDの構文や使用方法については、ここを参照してください。

      ホストがnullまたはhost.length()がゼロと等しい場合は、ループバック・インタフェースのアドレスを表すInetAddressが返されます。 RFC 3330セクション 2およびRFC 2373セクション 2.5.3を参照してください。

      セキュリティ・マネージャが存在し、hostnullまたはhost.length() がゼロと等しくない場合、セキュリティ・マネージャcheckConnectメソッドが、操作が許可されるかどうかを判断するために、引数としてhostnameと-1をコールされます。

      パラメータ:
      host - ホスト名またはnull
      戻り値:
      指定されたホスト名のすべてのIPアドレスを含む配列。
      例外:
      UnknownHostException - hostのIPアドレスが見つからなかった場合、またはグローバルIPv6アドレスでスコープIDが指定された場合。
      SecurityException - セキュリティ・マネージャが存在し、そのcheckConnectメソッドでこの操作が許可されていない場合。
      関連項目:
    • getLoopbackAddress

      public static InetAddress getLoopbackAddress()
      ループバック・アドレスを返します。

      返されるInetAddressは、IPv4ループバック・アドレスの127.0.0.1またはIPv6ループバック・アドレスの ::1を表します。 返されるIPv4ループバック・アドレスは、127.*.*.*という形式の多くのアドレスのうちの1つだけです。

      戻り値:
      InetAddressループバック・インスタンス。
      導入されたバージョン:
      1.7
    • getByAddress

      public static InetAddress getByAddress(byte[] addr) throws UnknownHostException
      指定された生のIPアドレスを表すInetAddressオブジェクトを返します。 引数はネットワーク・バイト順序になります。アドレスの最上位順序バイトはgetAddress()[0].内に存在します。

      このメソッドはブロックしません。つまり、逆ネーム・サービス検索は実行されません。

      IPv4アドレスのバイト配列は4バイト長、IPv6のバイト配列は16バイト長である必要があります。

      パラメータ:
      addr - ネットワーク・バイト・オーダーのIPアドレス
      戻り値:
      IPアドレスから生成されたInetAddressオブジェクト。
      例外:
      UnknownHostException - IPアドレスの長さが不正の場合
      導入されたバージョン:
      1.4
    • getLocalHost

      public static InetAddress getLocalHost() throws UnknownHostException
      ローカル・ホストのアドレスを返します。 これは、システムからホスト名を取得してから、その名前をInetAddressに解決することによって実現されます。

      ノート: 解決されたアドレスは、短時間キャッシュされる場合があります。

      セキュリティ・マネージャが存在する場合、引数としてローカル・ホスト名と-1を指定してセキュリティ・マネージャのcheckConnectメソッドが呼び出され、この操作が許可されているかどうかが確認されます。 この操作が許可されない場合は、ループバック・アドレスを表すInetAddressが返されます。

      戻り値:
      ローカル・ホストのアドレス。
      例外:
      UnknownHostException - ローカル・ホスト名をアドレスに解決できなかった場合。
      関連項目: