Класс InetAddress
- Все реализованные интерфейсы:
Serializable
- Прямые известные подклассы:
-
Inet4Address,Inet6Address
public class InetAddress extends Object implements Serializable
Адрес IP — это 32-битное или 128-битное беззнаковое число, используемое протоколом IP, низкоуровневым протоколом, на котором основаны такие протоколы, как UDP и TCP. Архитектура адресов IP определена в RFC 790: Присвоенные номера, RFC 1918: Распределение адресов для частных сетей, RFC 2365: Администрируемый IP-мультиадрес и Архитектура адресации IP версии 6. Экземпляр InetAddress состоит из адреса IP и, возможно, соответствующего имени хоста (в зависимости от того, был ли он создан с именем хоста или уже выполнил обратный поиск имени хоста).
Типы адресов
| Тип адреса | Описание |
|---|---|
| одноадресная рассылка | Идентификатор для одного интерфейса. Пакет, отправленный по одноадресному адресу, доставляется на интерфейс, идентифицированный этим адресом. Адрес без указания -- также называется локальным или универсальным адресом. Его никогда нельзя назначать узлу. Он указывает отсутствие адреса. Одним из примеров его использования является цель bind, что позволяет серверу принимать подключение клиента на любом интерфейсе в том случае, если у серверного узла есть несколько интерфейсов. Адрес без указания не должен использоваться в качестве адреса назначения IP-пакета. Адреса обратной связи -- это адрес, назначенный интерфейсу обратной связи. Все, что отправляется по этому IP-адресу, циркулирует и становится IP-входом на локальном узле. Этот адрес часто используется при тестировании клиента. |
| многоадресная рассылка | Идентификатор для набора интерфейсов (обычно принадлежащих различным узлам). Пакет, отправленный по многоадресному адресу, доставляется всем интерфейсам, идентифицированным этим адресом. |
Сфера действия IP-адреса
Адреса локальной связи предназначены для использования в адресации на одном канале связи для целей, таких как автоматическая настройка адресов, обнаружение соседей или при отсутствии маршрутизаторов.
Адреса локальной сети предназначены для использования в адресации внутри сети без необходимости глобального префикса.
Глобальные адреса уникальны во всей сети Интернет.
Текстовое представление IP-адресов
Текстовое представление IP-адреса зависит от семейства адресов.Для формата адреса IPv4 см. Inet4Address#format; Для формата адреса IPv6 см. Inet6Address#format.
Существует несколько системных свойств, влияющих на использование адресов IPv4 и IPv6.
Разрешение имен хоста
Разрешение имени хоста в IP-адрес выполняется с помощью комбинации информации о конфигурации локальной машины и служб именования сети, таких как система доменных имен (DNS) и служба сетевой информации (NIS). Используемые службы именования по умолчанию — это настроенные локальной машиной. Для любого имени хоста возвращается соответствующий IP-адрес.Обратный поиск имени означает, что для любого IP-адреса возвращается связанный с ним хост.
Класс InetAddress предоставляет методы для разрешения имен хостов в IP-адреса и наоборот.
Кэширование InetAddress
Класс InetAddress имеет кэш для хранения успешных и неудачных разрешений имен хостов.По умолчанию, при установке менеджера безопасности для защиты от атак с подменой DNS, результаты успешных разрешений имен хостов кэшируются постоянно. При отсутствии менеджера безопасности по умолчанию записи кэшируются на конечный (зависимый от реализации) период времени. Результат неудачного разрешения имени хоста кэшируется в течение очень короткого периода времени (10 секунд) для повышения производительности.
Если поведение по умолчанию нежелательно, можно задать другое значение времени жизни (TTL) для положительного кэширования в системном свойстве Java. Аналогично, системный администратор может настроить другое значение TTL для кэширования отрицательных результатов по мере необходимости.
Два системных свойства Java контролируют значения TTL, используемые для кэширования положительных и отрицательных разрешений имен хостов:
- networkaddress.cache.ttl
- Указывает политику кэширования для успешных поисков имен в службе имен. Значение задается как целое число, указывающее количество секунд для кэширования успешного поиска. Значение по умолчанию — кэшировать на период, зависящий от реализации.
Значение -1 указывает "кэшировать постоянно".
- networkaddress.cache.negative.ttl (по умолчанию: 10)
- Указывает политику кэширования для неудачных поисков имен в службе имен. Значение задается как целое число, указывающее количество секунд для кэширования неудачи при неудачных поисках.
Значение 0 указывает "никогда не кэшировать". Значение -1 указывает "кэшировать постоянно".
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Сравнивает этот объект с указанным объектом. |
byte[] |
getAddress() |
Возвращает сырой IP-адрес этого InetAddress объекта. |
static InetAddress[] |
getAllByName |
Вводя имя хоста, возвращает массив его IP-адресов, на основе конфигурированной службы имен в системе. |
static InetAddress |
getByAddress |
Возвращает объект InetAddress по заданному сырому IP-адресу. |
static InetAddress |
getByAddress |
Создает InetAddress на основе предоставленного имени хоста и IP-адреса. |
static InetAddress |
getByName |
Определяет 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 |
Проверка возможности достижения этого адреса. |
boolean |
isReachable |
Проверка возможности достижения этого адреса. |
boolean |
isSiteLocalAddress() |
Вспомогательная процедура проверки того, является ли InetAddress адресом локальной сети. |
String |
toString() |
Преобразует этот IP-адрес в String. |
Подробное описание методов
isMulticastAddress
public boolean isMulticastAddress()
- Возвращает:
- a
boolean, указывающее, является ли InetAddress адресом IP-мультиадресации - С:
- 1.1
isAnyLocalAddress
public boolean isAnyLocalAddress()
- Возвращает:
- a
boolean, указывающее, является ли InetAddress универсальным адресом. - С:
- 1.4
isLoopbackAddress
public boolean isLoopbackAddress()
- Возвращает:
- a
boolean, указывающее, является ли InetAddress адресом обратной связи; в противном случае — false. - С:
- 1.4
isLinkLocalAddress
public boolean isLinkLocalAddress()
- Возвращает:
- a
boolean, указывающее, является ли InetAddress адресом локальной сети; или false, если адрес не является адресом локальной сети одноадресной рассылки. - С:
- 1.4
isSiteLocalAddress
public boolean isSiteLocalAddress()
- Возвращает:
- a
boolean, указывающее, является ли InetAddress адресом локальной сети; или false, если адрес не является адресом локальной сети одноадресной рассылки. - С:
- 1.4
isMCGlobal
public boolean isMCGlobal()
- Возвращает:
- a
boolean, указывающее, является ли адрес адресом мультиадресации глобального охвата; false, если адрес не имеет глобального охвата или это не адрес мультиадресации - С:
- 1.4
isMCNodeLocal
public boolean isMCNodeLocal()
- Возвращает:
- a
boolean, указывающее, является ли адрес адресом мультиадресации узлового охвата; false, если адрес не имеет охвата узла или это не адрес мультиадресации - С:
- 1.4
isMCLinkLocal
public boolean isMCLinkLocal()
- Возвращает:
- a
boolean, указывающее, является ли адрес адресом мультиадресации локальной связи; false, если адрес не имеет локального охвата связи или это не адрес мультиадресации - С:
- 1.4
isMCSiteLocal
public boolean isMCSiteLocal()
- Возвращает:
- a
boolean, указывающее, является ли адрес адресом мультиадресации охвата сайта; false, если адрес не имеет охвата сайта или это не адрес мультиадресации - С:
- 1.4
isMCOrgLocal
public boolean isMCOrgLocal()
- Возвращает:
- a
boolean, указывающее, является ли адрес адресом мультиадресации охвата организации; false, если адрес не имеет охвата организации или это не адрес мультиадресации - С:
- 1.4
isReachable
public boolean isReachable(int timeout) throws IOException
Значение таймаута в миллисекундах указывает максимальное время выполнения попытки. Если операция завершится таймаутом до получения ответа, хост считается недоступным. Отрицательное значение приведет к исключению IllegalArgumentException.
- Параметры:
-
timeout- время в миллисекундах, до которого вызов прервётся - Возвращает:
- a
boolean, указывающее, доступен ли адрес. - Выбрасывает:
-
IOException- если произошла сетевая ошибка -
IllegalArgumentException- еслиtimeoutотрицательно. - С:
- 1.5
isReachable
public boolean isReachable(NetworkInterface netif, int ttl, int timeout) throws IOException
Параметры network interface и ttl позволяют вызывающей стороне указать сетевой интерфейс, через который будет выполняться проверка, и максимальное количество переходов, которые должны пройти пакеты. Отрицательное значение для ttl приведет к исключению IllegalArgumentException.
Значение таймаута в миллисекундах указывает максимальное время выполнения попытки. Если операция завершится таймаутом до получения ответа, хост считается недоступным. Отрицательное значение приведет к исключению IllegalArgumentException.
- Параметры:
-
netif- сетевой интерфейс, через который будет выполняться проверка, или null для любого интерфейса -
ttl- максимальное число переходов или 0 для значения по умолчанию -
timeout- время в миллисекундах, до которого вызов прервётся - Возвращает:
- a
boolean, указывающее, доступен ли адрес. - Выбрасывает:
-
IllegalArgumentException- еслиtimeoutилиttlотрицательны. -
IOException- если произошла сетевая ошибка - С:
- 1.5
getHostName
public String getHostName()
Если этот InetAddress был создан с именем хоста, это имя хоста будет запомнено и возвращено; в противном случае будет выполнено обратный поиск имени, и результат будет возвращён в соответствии с системной службой поиска имён. Если необходим поиск в службе имён, вызовите getCanonicalHostName.
Если есть менеджер безопасности, его метод checkConnect сначала вызывается с именем хоста и -1 в качестве аргументов, чтобы проверить, разрешена ли операция. Если операция не разрешена, будет возвращено текстовое представление IP-адреса.
- Возвращает:
- имя хоста для этого IP-адреса, или если операция не разрешена проверкой безопасности, текстовое представление IP-адреса.
- См. также:
getCanonicalHostName
public String getCanonicalHostName()
Если есть менеджер безопасности, этот метод сначала вызывает его метод checkConnect с именем хоста и -1 в качестве аргументов, чтобы проверить, разрешено ли вызывающему коду узнать имя хоста для этого IP-адреса, т.е. подключиться к хосту. Если операция не разрешена, будет возвращено текстовое представление IP-адреса.
- Возвращает:
- полное доменное имя для этого IP-адреса, или если операция не разрешена проверкой безопасности, текстовое представление IP-адреса.
- С:
- 1.4
- См. также:
getAddress
public byte[] getAddress()
InetAddress. Результат представлен в сетевом порядке байтов: старший байт адреса находится в getAddress()[0]. - Возвращает:
- исходный IP-адрес этого объекта.
getHostAddress
public String getHostAddress()
- Возвращает:
- исходный IP-адрес в строковом формате.
- С:
- 1.0.2
hashCode
public int hashCode()
- Переопределяет:
-
hashCodeв классеObject - Возвращает:
- значение хэш-кода для этого IP-адреса.
- См. также:
equals
public boolean equals(Object obj)
true тогда и только тогда, когда аргумент не null и он представляет тот же IP-адрес, что и этот объект. Два экземпляра InetAddress представляют один и тот же IP-адрес, если длина массивов байтов, возвращаемых getAddress, одинакова для обоих и каждый из компонентов массивов одинаков для массивов байтов.
- Overrides:
-
equalsв классеObject - Parameters:
-
obj- объект для сравнения. - Returns:
-
trueесли объекты одинаковы;falseв противном случае. - См. также:
toString
public String toString()
String. Возвращаемая строка имеет вид: имя хоста / литеральный IP-адрес. Если имя хоста не разрешено, поиск обратного имени службы не выполняется. Часть имени хоста будет представлена пустой строкой.- Overrides:
-
toStringв классеObject - Returns:
- строковое представление этого IP-адреса.
getByAddress
public static InetAddress getByAddress(String host, byte[] addr) throws UnknownHostException
Имя хоста может быть именем машины, например, "www.example.com", или текстовым представлением его IP-адреса.
Никакая проверка корректности имени хоста также не выполняется.
Если addr указывает IPv4-адрес, будет возвращен экземпляр Inet4Address; в противном случае будет возвращен экземпляр Inet6Address.
Массив байтов IPv4-адреса должен иметь длину 4 байта, а массив байтов IPv6-адреса — 16 байт.
- Parameters:
-
host- указанный хост -
addr- исходный IP-адрес в сетевом порядке байтов - Returns:
- объект InetAddress, созданный из исходного IP-адреса.
- Throws:
-
UnknownHostException- если IP-адрес имеет неверную длину - Since:
- 1.4
getByName
public static InetAddress getByName(String host) throws UnknownHostException
Имя хоста может быть именем машины, например, "www.example.com", или текстовым представлением его IP-адреса. Если указан литеральный IP-адрес, проверяется только правильность формата адреса.
Для host, указанного в литеральном IPv6-адресе, принимается формат, определенный в RFC 2732, или формат литерального IPv6-адреса, определенный в RFC 2373. Поддерживаются также IPv6-адреса с областью действия. См. здесь описание IPv6-адресов с областью действия.
Если хост является null или host.length() равно нулю, то возвращается InetAddress, представляющий адрес локального интерфейса. См. RFC 3330 раздел 2 и RFC 2373 раздел 2.5.3.
Если есть менеджер безопасности, и host не null или host.length() не равно нулю, метод checkConnect менеджера безопасности вызывается с именем хоста и -1 в качестве аргументов, чтобы определить, разрешена ли операция.
- Parameters:
-
host- указанный хост илиnull. - Returns:
- IP-адрес для данного имени хоста.
- Throws:
-
UnknownHostException- если IP-адрес дляhostне найден или если для глобального IPv6-адреса был указан идентификатор области. -
SecurityException- если менеджер безопасности существует и его метод checkConnect не разрешает операцию
getAllByName
public static InetAddress[] getAllByName(String host) throws UnknownHostException
Имя хоста может быть именем машины, например, "www.example.com", или текстовым представлением его IP-адреса. Если указан литеральный IP-адрес, проверяется только правильность формата адреса.
Для host, указанного в литеральном IPv6-адресе, принимается формат, определенный в RFC 2732, или формат литерального IPv6-адреса, определенный в RFC 2373. Литеральный IPv6-адрес также может быть квалифицирован путем добавления идентификатора области действия или scope_id. Синтаксис и использование scope_id описаны здесь.
Если хост является null или host.length() равно нулю, то возвращается InetAddress, представляющий адрес локального интерфейса. См. RFC 3330 раздел 2 и RFC 2373 раздел 2.5.3.
Если есть менеджер безопасности, и host не null или host.length() не равно нулю, метод checkConnect менеджера безопасности вызывается с именем хоста и -1 в качестве аргументов, чтобы определить, разрешена ли операция.
- Parameters:
-
host- имя хоста илиnull. - Returns:
- массив всех IP-адресов для данного имени хоста.
- Throws:
-
UnknownHostException- если IP-адрес дляhostне найден или если для глобального IPv6-адреса был указан идентификатор области. -
SecurityException- если менеджер безопасности существует и его методcheckConnectне разрешает операцию. - См. также:
getLoopbackAddress
public static InetAddress getLoopbackAddress()
Возвращаемый InetAddress будет представлять IPv4-адрес обратной петли, 127.0.0.1, или IPv6-адрес обратной петли, ::1. Возвращаемый IPv4-адрес обратной петли — это всего лишь один из многих в формате 127.*.*.*
- Returns:
- экземпляр InetAddress обратной петли.
- Since:
- 1.7
getByAddress
public static InetAddress getByAddress(byte[] addr) throws UnknownHostException
InetAddress по заданному исходному IP-адресу. Аргумент находится в сетевом порядке байтов: байт старшего порядка адреса находится в getAddress()[0]. Этот метод не блокируется, т.е. поиск обратного имени службы не выполняется.
Массив байтов IPv4-адреса должен иметь длину 4 байта, а массив байтов IPv6-адреса — 16 байт.
- Parameters:
-
addr- исходный IP-адрес в сетевом порядке байтов - Returns:
- объект InetAddress, созданный из исходного IP-адреса.
- Throws:
-
UnknownHostException- если IP-адрес имеет неверную длину - Since:
- 1.4
getLocalHost
public static InetAddress getLocalHost() throws UnknownHostException
InetAddress. Примечание: разрешенный адрес может кэшироваться на короткий период времени.
Если есть менеджер безопасности, его метод checkConnect вызывается с именем локального хоста и -1 в качестве аргументов, чтобы проверить разрешение операции. Если операция не разрешена, возвращается InetAddress, представляющий адрес обратной петли.
- Returns:
- адрес локального хоста.
- Throws:
-
UnknownHostException- если имя локального хоста не удалось разрешить в адрес. - См. также:
© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/net/InetAddress.html