- すべての実装されたインタフェース:
Serializable
- 直系の既知のサブクラス:
Inet4Address
,Inet6Address
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値を必要に応じて設定することができます。
2つのJavaセキュリティ・プロパティにより、ポジティブおよびネガティブのホスト名解決のキャッシュに使用するTTL値を制御します。
- networkaddress.cache.ttl
- ネーム・サービスによる成功した名前検索に対するキャッシング・ポリシーを示します。 この値は、正常なルックアップをキャッシュする秒数を示す整数で指定します。 デフォルト設定は、実装に固有の期間キャッシュすることです。
-1の値は、「ずっとキャッシュする」という意味です。
- networkaddress.cache.negative.ttl (デフォルト: 10)
- ネーム・サービスによる失敗した名前検索に対するキャッシング・ポリシーを示します。 この値は、失敗したルックアップの失敗をキャッシュする秒数を示す整数として指定されます。
0の値は、「キャッシュしない」という意味です。 -1の値は、「ずっとキャッシュする」という意味です。
-
メソッドのサマリー
修飾子と型メソッド説明boolean
このオブジェクトと指定されたオブジェクトを比較します。byte[]
この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
指定されたホスト名を持つホストのIPアドレスを取得します。このIPアドレスに対応する完全指定ドメイン名を取得します。テキスト表現のIPアドレス文字列を返します。このIPアドレスに対応するホスト名を取得します。static InetAddress
ローカル・ホストのアドレスを返します。static InetAddress
ループバック・アドレスを返します。int
hashCode()
この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がサイト・ローカル・アドレスかどうかを調べるユーティリティ・ルーチンです。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。どのインタフェースでもかまわない場合はnullttl
−試みるべきホップの最大数。デフォルトは0timeout
- 呼出しが中止されるまでのミリ秒単位の時間- 戻り値:
- アドレスが到達可能かどうかを示す
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アドレスのハッシュ・コードを返します。 -
equals
public boolean equals(Object obj) このオブジェクトと指定されたオブジェクトを比較します。 引数がnull
ではなく、その引数がこのオブジェクトと同じIPアドレスを表す場合にだけ、結果がtrue
になります。getAddress
によって返されるバイト配列の長さが同じであり、バイト配列の各コンポーネントが同じである場合、2つのInetAddress
のインスタンスは同じIPアドレスを表しています。 -
toString
public String toString()このIPアドレスをString
に変換します。 返される文字列の形式は、「ホスト名/リテラル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を参照してください。セキュリティ・マネージャが存在し、
host
がnull
または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を参照してください。セキュリティ・マネージャが存在し、
host
がnull
または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
- ローカル・ホスト名をアドレスに解決できなかった場合。- 関連項目:
-