Класс 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
- Внешние спецификации
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
SNIHostName |
Создаёт SNIHostName с использованием указанного закодированного значения. |
SNIHostName |
Создаёт SNIHostName с использованием указанного имени хоста. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static SNIMatcher |
createSNIMatcher |
Создаёт объект SNIMatcher для SNIHostName. |
boolean |
equals |
Сравнивает это имя сервера с указанным объектом. |
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 |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения указанного интервала реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова 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недопустим - Внешние спецификации
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недопустим - Внешние спецификации
Подробное описание методов
getAsciiName
public String getAsciiName()
SNIHostName, совместимое с StandardCharsets.US_ASCII. Обратите внимание, что согласно RFC 6066 возвращаемое имя хоста может быть интернационализированным доменным именем, содержащим A-метки. Дополнительные сведения о подробной спецификации A-меток см. в RFC 5890.
- Возвращает:
- имя хоста этого объекта
SNIHostName, совместимое сStandardCharsets.US_ASCII - Внешние спецификации
equals
public boolean equals(Object other)
Согласно RFC 6066, DNS-имена хостов нечувствительны к регистру. Имена двух серверов равны тогда и только тогда, когда у них одинаковый тип имени и имена хостов равны при сравнении без учёта регистра.
- Переопределяет:
-
equalsв классеSNIServerName - Параметры:
-
other— другой объект имени сервера для сравнения. - Возвращает:
- true, если и только если
otherсчитается равным этому экземпляру - Внешние спецификации
- См. также:
hashCode
public int hashCode()
SNIHostName. Значение хеш-кода вычисляется с использованием имени хоста этого SNIHostName без учёта регистра.
- Переопределяет:
-
hashCodeв классеSNIServerName - Возвращает:
- значение хеш-кода для этого
SNIHostName. - См. также:
toString
public String toString()
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— если синтаксис регулярного выражения недопустим
© 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.