モジュール java.base
パッケージ 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アドレスと、場合によってはそれに対応するホスト名から構成されます。ホスト名が含まれるかどうかは、そのインスタンスがホスト名を使って構築されているかどうか、またはそのインスタンスがホスト名の逆解決をすでに実行したかどうかによって決まります。

    アドレスの型

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

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

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

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

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

    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
    関連項目:
    getByAddress(byte[]), getByAddress(java.lang.String, byte[]), getAllByName(java.lang.String), getByName(java.lang.String), getLocalHost(), 直列化された形式
    • メソッドのサマリー

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

      • 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(), SecurityManager.checkConnect(java.lang.String, int)
      • getCanonicalHostName

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

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

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

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

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

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

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

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

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

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

        ホスト名は、「java.sun.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アドレスを取得します。

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

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

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

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

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

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

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

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

        セキュリティ・マネージャが存在する場合、hostがnullではなく、host.length() の値がゼロではないときは、セキュリティ・マネージャのcheckConnectメソッドが、引数としてホスト名と-1を指定して呼び出され、この操作が許可されているかどうかを確認します。

        パラメータ:
        host - ホスト名またはnull
        戻り値:
        指定されたホスト名のすべてのIPアドレスを含む配列。
        例外:
        UnknownHostException - hostのIPアドレスが見つからなかった場合、またはグローバルIPv6アドレスでスコープIDが指定された場合。
        SecurityException - セキュリティ・マネージャが存在し、そのcheckConnectメソッドでこの操作が許可されていない場合。
        関連項目:
        SecurityManager.checkConnect(java.lang.String, int)
      • 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 - ローカル・ホスト名をアドレスに解決できなかった場合。
        関連項目:
        SecurityManager.checkConnect(java.lang.String, int), getByName(java.lang.String)