Я видел несколько упоминаний о том, что максимальная длина строки имени DNS (имени домена) составляет 253 символа. Wikipedia, кажется, иметь в виду эту старую запись в блоге:Какова максимальная длина имени DNS
https://en.wikipedia.org/wiki/Hostname http://blogs.msdn.com/b/oldnewthing/archive/2012/04/12/10292868.aspx
С другой стороны, если я понял RFC, эта статья неправильно. имя DNS максимальная длина строки должна быть 250 ASCII символов вместо 253 на основе следующей последовательности байтов, которые в соответствии с RFC1035 максим до 255 байт:
Для упрощения реализации, общая длина доменного имени (например, октеты ярлыков и октеты длины ярлыков) ограничено 255 октетами или меньше.
В соответствии с RFC1035, доменными именами формируются следующим образом:
доменного имени, представленное в виде последовательности меток, где каждая метка состоит из длины октета с последующим этим числом октетов. Доменное имя завершается октетом нулевой длины для нулевой метки корня. Обратите внимание, что это поле может быть нечетным числом октетов; не используется прокладка.
Это означает, что следующие поля составляют доменные имена:
- Длина этикетки (LL): 1 байт
- Название этикетки (LN): 63 байт (максимум) потому что максимальное значение длины метки может быть только 00111111 (поскольку два первых бита зарезервированы для специальных функций, таких как указатели)
- Null Label (Н. Л.): 1 байт (представляющий корневой домен)
Формат всегда должен быть (в отличие от блога):
LL + Л.Н. [LL + Л.Н. ...] + Н.Л.
Это означает, максимальная длина должна быть (1 байт = 1 символ = 1 октет):
LL (1) + Л.Н. (63) + LL (1) + Л.Н. (63) + LL (1) + Л.Н. (63) LL (1) + Л.Н. (61) + Н. Л. (1) = 255 байт
Таким образом, если мы вычислим часть строки только (LN сек), получим:
63 + 63 + 63 + 61 = 250 символов максимум.
Пропустил ли я что-нибудь или мы должны обновить несколько ссылок в Википедии? Единственная часть, о которой я сомневаюсь, это о том, что Null Label является частью 255 байтов.
Это имело бы смысл. Итак, другими словами, 250 - это максимальное количество символов (без точек), и если мы включим точки (без последней), значение 253 символов будет правильным? –