Spec-Zone.ru › OpenJDK 27

Класс SNIHostName

java.lang.Object
javax.net.ssl.SNIServerName
javax.net.ssl.SNIHostName
public final class SNIHostName extends SNIServerName
Экземпляры этого класса представляют имя сервера типа host_name в расширении индикации имени сервера (SNI).

Как описано в разделе 3 «Индикация имени сервера» документа «Расширения TLS» (RFC 6066), «HostName» содержит полное доменное DNS-имя сервера в том виде, как его понимает клиент. Закодированное значение имени сервера представляется в виде строки байтов с использованием кодировки ASCII без завершающей точки. Это позволяет поддерживать интернационализированные доменные имена (IDN) с помощью A-меток (формы ASCII-совместимого кодирования (ACE) допустимой строки интернационализированных доменных имён для приложений (IDNA)), определённых в RFC 5890.

Обратите внимание, что объекты SNIHostName являются неизменяемыми.

Начиная с:
1.8
Внешние спецификации
  • RFC 5890: Интернационализированные доменные имена для приложений (IDNA): определения и структура документа
  • RFC 6066: расширения безопасности транспортного уровня (TLS): определения расширений
См. также:
  • SNIServerName
  • StandardConstants.SNI_HOST_NAME

Краткое описание конструкторов

Конструктор Описание
SNIHostName(byte[] encoded)
Создаёт SNIHostName с использованием указанного закодированного значения.
SNIHostName(String hostname)
Создаёт SNIHostName с использованием указанного имени хоста.

Краткое описание методов

Модификатор и тип Метод Описание
static SNIMatcher createSNIMatcher(String regex)
Создаёт объект SNIMatcher для SNIHostName.
boolean equals(Object other)
Сравнивает это имя сервера с указанным объектом.
String getAsciiName()
Возвращает имя хоста этого объекта SNIHostName, совместимое с StandardCharsets.US_ASCII.
int hashCode()
Возвращает хеш-код этого SNIHostName.
String toString()
Возвращает строковое представление объекта, включающее DNS-имя хоста в этом объекте SNIHostName.

Методы, объявленные в классе SNIServerName

getEncoded, getType
Модификатор и тип Метод Описание
final byte[] getEncoded()
Возвращает копию закодированного значения имени сервера для этого имени сервера.
final int getType()
Возвращает тип имени для этого имени сервера.

Методы, объявленные в классе Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
protected void finalize()
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии.
Финализация объявлена устаревшей и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения указанного интервала реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения указанного интервала реального времени.

Подробное описание конструкторов

SNIHostName

public SNIHostName(String hostname)
Создаёт SNIHostName с использованием указанного имени хоста.

Обратите внимание, что согласно RFC 6066, закодированное значение имени сервера для имени хоста должно соответствовать StandardCharsets.US_ASCII. В этом методе hostname может быть удобным для пользователя интернационализированным доменным именем (IDN). Метод IDN.toASCII(String, int) используется для проверки ограничений на символы ASCII в именах хостов (см. RFC 3490, RFC 1122, RFC 1123) и преобразования hostname в ASCII-совместимое кодирование (ACE), как показано ниже:

    IDN.toASCII(hostname, IDN.USE_STD3_ASCII_RULES);

Аргумент hostname является недопустимым, если:

  • hostname пуст,
  • hostname заканчивается точкой,
  • hostname не является допустимым интернационализированным доменным именем (IDN), соответствующим спецификации RFC 3490.
Параметры:
hostname — имя хоста этого имени сервера
Исключения:
NullPointerException — если hostname имеет значение null
IllegalArgumentException — если hostname недопустим
Внешние спецификации
  • RFC 1122: требования к интернет-хостам — уровни взаимодействия
  • RFC 1123: требования к интернет-хостам — приложения и поддержка
  • RFC 3490: интернационализация доменных имён в приложениях (IDNA)
  • RFC 6066: расширения безопасности транспортного уровня (TLS): определения расширений

SNIHostName

public SNIHostName(byte[] encoded)
Создаёт SNIHostName с использованием указанного закодированного значения.

Обычно этот метод используется для разбора закодированного значения имени в запрошенном расширении SNI.

Согласно RFC 6066, закодированное значение имени хоста должно соответствовать StandardCharsets.US_ASCII. Однако в предыдущей версии расширения SNI (RFC 4366) закодированное имя хоста представлено в виде строки байтов с использованием кодировки UTF-8. Для обеспечения совместимости между версиями этот метод допускает, что набор символов аргумента encoded может быть как StandardCharsets.UTF_8, так и StandardCharsets.US_ASCII. Метод IDN.toASCII(String) используется для преобразования аргумента encoded в имя хоста в ASCII-совместимом кодировании (ACE).

Настоятельно рекомендуется использовать этот конструктор только для разбора закодированного значения имени в запрошенном расширении SNI. В противном случае, чтобы соответствовать RFC 6066, всегда используйте набор символов, совместимый с StandardCharsets.US_ASCII, и проверяйте ограничения на символы ASCII в именах хостов (см. RFC 3490, RFC 1122, RFC 1123) для аргумента encoded либо используйте вместо него SNIHostName(String).

Аргумент encoded является недопустимым, если:

  • encoded пуст,
  • encoded заканчивается точкой,
  • encoded закодирован с использованием набора символов, не совместимого с StandardCharsets.US_ASCII или StandardCharsets.UTF_8,
  • encoded не является допустимым интернационализированным доменным именем (IDN), соответствующим спецификации RFC 3490.

Обратите внимание, что массив байтов encoded клонируется для защиты от последующих изменений.

Параметры:
encoded — закодированное имя хоста этого имени сервера
Исключения:
NullPointerException — если encoded имеет значение null
IllegalArgumentException — если encoded недопустим
Внешние спецификации
  • RFC 1122: требования к интернет-хостам — уровни взаимодействия
  • RFC 1123: требования к интернет-хостам — приложения и поддержка
  • RFC 3490: интернационализация доменных имён в приложениях (IDNA)
  • RFC 4366: расширения безопасности транспортного уровня (TLS)
  • RFC 6066: расширения безопасности транспортного уровня (TLS): определения расширений

Подробное описание методов

getAsciiName

public String getAsciiName()
Возвращает имя хоста этого объекта SNIHostName, совместимое с StandardCharsets.US_ASCII.

Обратите внимание, что согласно RFC 6066 возвращаемое имя хоста может быть интернационализированным доменным именем, содержащим A-метки. Дополнительные сведения о подробной спецификации A-меток см. в RFC 5890.

Возвращает:
имя хоста этого объекта SNIHostName, совместимое с StandardCharsets.US_ASCII
Внешние спецификации
  • RFC 5890: интернационализированные доменные имена для приложений (IDNA): определения и структура документа
  • RFC 6066: расширения безопасности транспортного уровня (TLS): определения расширений

equals

public boolean equals(Object other)
Сравнивает это имя сервера с указанным объектом.

Согласно RFC 6066, DNS-имена хостов нечувствительны к регистру. Имена двух серверов равны тогда и только тогда, когда у них одинаковый тип имени и имена хостов равны при сравнении без учёта регистра.

Переопределяет:
equals в классе SNIServerName
Параметры:
other — другой объект имени сервера для сравнения.
Возвращает:
true, если и только если other считается равным этому экземпляру
Внешние спецификации
  • RFC 6066: расширения безопасности транспортного уровня (TLS): определения расширений
См. также:
  • Object.hashCode()
  • HashMap

hashCode

public int hashCode()
Возвращает хеш-код этого SNIHostName.

Значение хеш-кода вычисляется с использованием имени хоста этого SNIHostName без учёта регистра.

Переопределяет:
hashCode в классе SNIServerName
Возвращает:
значение хеш-кода для этого SNIHostName.
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(Object)

toString

public String toString()
Возвращает строковое представление объекта, включающее DNS-имя хоста в этом объекте SNIHostName.

Точные детали представления не определены и могут измениться, но типичным может считаться следующий вариант:

    "type=host_name (0), value=<hostname>"
Значение «<hostname>» представляет собой ASCII-представление имени хоста, которое может содержать A-метки. Например, возвращаемое значение для условного имени хоста может выглядеть так:
    "type=host_name (0), value=www.example.com"
или
    "type=host_name (0), value=xn--fsqu00a.xn--0zwm56d"

Обратите ВНИМАНИЕ: точные детали представления не определены и могут измениться.

Переопределяет:
toString в классе SNIServerName
Возвращает:
строковое представление объекта.

createSNIMatcher

public static SNIMatcher createSNIMatcher(String regex)
Создаёт объект SNIMatcher для SNIHostName.

Этот метод может использоваться сервером для проверки допустимых SNIHostName. Например,

    SNIMatcher matcher =
        SNIHostName.createSNIMatcher("www\\.example\\.com");
будет принимать имя хоста «www.example.com».
    SNIMatcher matcher =
        SNIHostName.createSNIMatcher("www\\.example\\.(com|org)");
будет принимать имена хостов «www.example.com» и «www.example.org».
Параметры:
regex — шаблон регулярного выражения, задающий имена хостов для сопоставления
Возвращает:
объект SNIMatcher для SNIHostName
Исключения:
NullPointerException — если regex имеет значение null
PatternSyntaxException — если синтаксис регулярного выражения недопустим

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзорные материалы, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API