Как долго может существовать TLD?


Я работаю над регулярным выражением проверки электронной почты в PHP, и мне нужно знать, как долго TLD может быть и оставаться действительным. Я провел несколько поисков, но не смог найти много информации по этой теме. Итак, как долго может существовать TLD?

Author: Charles, 2012-02-11

5 answers

DNS допускает максимум 63 символа для отдельной метки.

 54
Author: tripleee, 2016-11-25 16:00:39

Самый длинный TLD, существующий в настоящее время, состоит из 24 символов и может быть изменен. Максимальная длина ДВУ, указанная RFC 1034, составляет 63 октета.

Чтобы получить длину самого длинного существующего ДВУ:

wget -qO - http://data.iana.org/TLD/tlds-alpha-by-domain.txt | tail -n+2 | wc -L

Вот что делает эта команда:

  1. Получите последний список реально существующих ДВУ от IANA
  2. Удалите первую строку, которая является длинным комментарием
  3. Запуск wc чтобы посчитать самый длинный строка

Альтернативное использование curl благодаря Стефану:

curl -s http://data.iana.org/TLD/tlds-alpha-by-domain.txt | tail -n+2 | wc -L
 51
Author: Dan Dascalescu, 2015-11-02 11:49:56

Самый длинный с латинскими буквами .MUSEUM (источник), но есть некоторые со специальными символами. Самый длинный из них - XN--CLCHC0EA0B2G2A9GCD. Кроме того, за короткое время можно будет зарезервировать свой собственный TLD по высокой цене, и таким образом можно будет быть дольше.

 7
Author: axiomer, 2012-02-11 08:11:34

-РЕДАКТИРОВАТЬ -

Согласно RFC 2606.localhost - зарезервированное доменное имя, длина которого составляет 9 символов. Это самый длинный срок, о котором я знаю.

- КОНЕЦ РЕДАКТИРОВАНИЯ -

Однако я думаю, что вам следует заботиться о длине адреса электронной почты, а не только о длине ДВУ. Ниже приведена цитата из этой статьи. Длина адреса электронной почты составляет 254 символа:

По-видимому, существует некоторая путаница в отношении максимального допустимого размера адреса электронной почты. Большинство людей считают, что это 320 символов (64 символа для имени пользователя + 255 символов для домена + 1 символ для символа @). Другие источники предполагают 129 (64 + 1 + 64) или 384 (128+1+255, предполагая, что в будущем длина имени пользователя удвоится).

Эта путаница означает, что вы должны соблюдать "принцип надежности" ("разработчики должны тщательно писать программное обеспечение, которое точно соответствует существующим RFC, но принимает и анализирует входные данные от коллег, которые могут не соответствовать этим RFC". - Википедия ) при написании программного обеспечения, которое имеет дело с адресами электронной почты. Кроме того, некоторые программы могут быть повреждены наивными предположениями, например, полагая, что 50 символов достаточно ( примеры). Ваш адрес электронной почты из 200 символов может быть технически действительным, но это не поможет вам, если большинство веб-сайтов или приложений отклонят его.

Фактическая максимальная длина электронной почты в настоящее время составляет 254 символа:

"В оригинальной версии RFC 3696 действительно говорилось, что 320 - это максимум длина, но Джон Кленсин (ICANN) впоследствии признал, что это было неправильно".

"Это вытекает из простой арифметики максимальной длины домена (255 символов) + максимальной длины почтового ящика (64 символа) + символ @ = 320 символов. Неправильный. Этот слух фактически задокументирован в оригинальной версии RFC3696. Это было исправлено в опечатках. На самом деле существует ограничение от RFC5321 на элемент пути SMTP-транзакции 256 персонажи. Но это включает угловые скобки вокруг адреса электронной почты, поэтому максимальная длина адреса электронной почты составляет 254 символа"

.
 7
Author: aviad, 2013-08-13 11:48:03

Это PHP код для получения обновленного списка TLD, разделенного вертикальной чертой UTF-8, который будет использоваться непосредственно в регулярном выражении:

<?php 
  function getTLDs($separator){
    $tlds=file('http://data.iana.org/TLD/tlds-alpha-by-domain.txt');
    array_shift($tlds); // remove heading comment
    usort($tlds,function($a,$b){ return strlen($b)-strlen($a); }); // sort from longest to shortest
    return implode($separator,array_map(function($e){ return idn_to_utf8(trim(strtolower($e))); },$tlds));
  }
  echo getTLDs('|');
?>

Вы можете увидеть это в действии здесь.

Чтобы соответствовать имени хоста, вы можете использовать его следующим образом:

$tlds=getTLDs('|');
if (preg_match("{([\da-z\.-]+)\.($tlds)}u",$address)) {
  ..
}
 0
Author: Meisner, 2017-01-29 17:12:03