顶级域名中的号码?

2024-01-22

顶级域名末尾可以包含数字吗?我对 DNS 规则等一无所知,但是当我尝试将 PHP 的 filter_var() 函数与 FILTER_VALIDATE_EMAIL 一起使用时[email protected] /cdn-cgi/l/email-protection它返回 true。


顶级域名末尾可以带数字吗?

从技术上讲是的,除非它是纯数字的,否则根据当前规则并且出于易于理解的原因(为了消除与 IP 地址的歧义),它不能是 TLD。出于 ICANN 强制执行的原因,它的末尾不能包含数字,除非它是 IDN TLD。

让我们回到一些 RFC,以获得一些更清晰的定义:

RFC 952:DOD 互联网主机表规范(1985 年 10 月)

这是当时互联网“主机名”的定义:

“名称”(网络、主机、网关或域名)是一个文本字符串
最多 24 个字符,取自字母表 (A-Z)、数字 (0-9)、减号
符号 (-) 和句点 (.)。请注意,只有在以下情况下才允许使用句点:
它们用于界定“域样式名称”的组成部分。 (看
RFC-921,“域名系统实施时间表”,用于
背景)。不允许有空白或空格字符作为 姓名。不区分大小写。首先 字符必须是字母字符。最后一个字符不能是 减号或句号。

请注意,这还具有以下内容:

单字符名称 或昵称是不允许的。

因此在这一点上:

  • com1是有效的 TLD
  • 3com不是(“第一个字符必须是字母字符。”)
  • 42不是(同样的原因)
  • 1不是(同样的原因)
  • a不是(“不允许使用单字符名称或昵称。”)

RFC 1034:域名 - 概念和设施(1987 年 11 月)

这是创建我们今天所知的 DNS 的 RFC 之一。出于兼容性原因,它将主机名定义为标签序列,其中标签定义如下:

它们必须以字母开头,以字母或数字结尾,并且具有以下内容: 内部字符仅限字母、数字和连字符。还有 对长度有一些限制。标签必须为 63 个字符或 较少的。

TLD 是众多标签之一(TLD 中的 L)。根据上述规则,com1是一个有效的标签,因此也是一个有效的 TLD,其中3com不会的。这直接给我们带来了以下修改。

RFC 1123:互联网主机的要求 - 应用程序和支持(1989 年 10 月)

这通过更改一条规则来修改之前的 RFC:

RFC-952 中指定了合法 Internet 主机名的语法 [DNS:4]。主机名语法的一方面发生了变化: 对第一个字符的限制放宽,允许 字母或数字。主机软件必须支持这种更自由的 句法。

所以在这一点上:

  • com1是有效的 TLD
  • 3com也有效
  • 42已验证
  • 1已验证
  • a已验证

对于“数字”TLD 的情况,第一份文件中的以下规则适用:

每当用户输入互联网主机的身份时,它应该 可以输入 (1) 主机域名或 (2) IP 点分十进制 ("#.#.#.#") 形式的地址。主机应该检查 语法上的字符串之前是点分十进制数 在域名系统中查找它。

and

如果可以输入点分十进制数而无需这样 识别分隔符,那么必须进行完整的语法检查 制作,因为现在允许主机域名的一部分 以数字开头并且合法地可以是完全数字 (参见第 6.1.2.4 节)。然而,有效的主机名永远不能 具有点分十进制形式 #.#.#.#,因为至少 最高级别的组件标签将按字母顺序排列。

RFC 1738:统一资源定位符 (URL)(1994 年 12 月)

这也涉及 TLD,但给出:

网络主机的完全限定域名或其 IP 地址作为一组四个十进制数字组,由 “。”。完全限定域名采用所述形式 RFC 1034 [13] 第 3.5 节和 RFC 1123 第 2.1 节 [5]:由“.”分隔的域标签序列,每个域 以字母数字字符开头和结尾的标签,以及 可能还包含“-”字符。最右边的域 不过,标签永远不会以数字开头,这 在语法上区分所有域名和 IP 地址。

RFC 3696:名称检查和转换的应用技术(2004 年 2 月)

这是引入 IDN(国际化域名)所必需的,它是这样说的:

允许使用任何字符或位组合(如八位字节) DNS 名称。然而,有一种需要的首选形式 大多数应用程序。这种首选形式是唯一的一种 允许出现在顶级域名 (TLD) 的名称中。一般来说,它 也是大多数注册二级名称中允许的唯一形式 在 TLD 中,尽管用户通常看不到的一些名称遵循 其他规则。它源自最初的 ARPANET 规则 主机命名(即“主机名”规则)也许更好 描述为“LDH 规则”,位于其允许的字符之后。 更新后的 LDH 规则规定标签(单词或字符串) 由句点分隔)组成的域名必须仅包含 ASCII [ASCII] 字母和数字字符,加上连字符。 不允许使用其他符号或标点符号 空格处。如果使用连字符,则不允许出现在 标签的开头或结尾。还有一条附加规则 这本质上要求顶级域名不能全部是- 数字。

事实上,一旦涉及 IDN,并且它们是 IDN TLD(现在是 ccTLD 和 gTLD),所选编码就会生成以下形式的 ASCII 字符串xn--something其中某物可以有数字,包括末尾,如其他答案中所示。

然而,最后一句中的“附加规则”从何而来并不清楚。

RFC 4697:观察到的 DNS 解析不当行为(2006 年 10 月)

不定义任何内容,但提供一些有趣的事实:

根名称服务器接收大量 A 记录 QNAME 看起来像 IPv4 地址的查询。

and

一个可能的解决方案是委托这些数字 TLD 从根区域到一组单独的服务器以吸收 交通。

这清楚地表明,在野外确实存在一些应用程序,可能是错误的,但它至少表明它在技术上是有效的,发送对格式确实类似于 IPv4 地址的名称的查询,因此具有完全数字的“TLD”。

事实上,有一次推出.42注册管理机构,显然完全处于 ICANN 生态系统之外。您可以在以下位置查看其摘要:http://www.dotsauce.com/experimental-numeric-tld-42-domain/ http://www.dotsauce.com/experimental-numeric-tld-42-domain/以及他们的主要解释的存档https://web.archive.org/web/20101222151118/http://register.42registry.org:80/ https://web.archive.org/web/20101222151118/http://register.42registry.org:80/(法语)。

尽管技术上可行,但它并没有走得太远。

例如,它表明基于 Microsoft 的操作系统默认情况下根本不考虑纯数字 TLD,但他们为此提供了一个补丁:https://support.microsoft.com/en-us/help/947228/error-message-when-you-try-to-join-a-windows-vista-based-client-comput https://support.microsoft.com/en-us/help/947228/error-message-when-you-try-to-join-a-windows-vista-based-client-comput“当您尝试将基于 Windows Vista 的客户端计算机加入具有纯数字后缀的顶级域 (TLD) 时,基于 Windows Vista 的客户端计算机无法加入该域。[..] 此行为是设计使然。 ”

互联网草案 Draft-liman-tld-names-06:顶级域名规范(2011 年 11 月)

最后给出了一些解释,解释了为什么纯数字 TLD 甚至只有一位数字的 TLD 有时会被视为无效(当上述规范没有明确结果时):

(下面第 2.1 节引用了上面引用的 RFC 1123 中的内容)

此外,第 2.1 节的讨论部分说:

 'However, a valid host name can never have the dotted-decimal form
 #.#.#.#, since at least the highest-level component label will be
 alphabetic.'  [Section 2.1]

一些实施者可能已经理解了上面这句话“将是” 按字母顺序排列是协议限制。

但它基本上只是建议随波逐流并继续相同的限制:

[RFC0952] 和 [RFC1123] 都没有明确说明原因 这些限制。可以认为人为因素是 考虑; [RFC1123]似乎表明原因之一 是为了防止点分十进制 IPv4 地址和 主机域名。无论如何,有理由相信 一些已部署的软件中已假定存在限制,并且 对规则的修改应谨慎进行。

因此它给出了这样的定义:

传统顶级标签 = 1*63(ALPHA)

该草案从未转换为 RFC,因为并非所有人都同意。您可以在以下位置找到有反对声音的帖子:https://www.ietf.org/mail-archive/web/dnsop/current/msg08866.html https://www.ietf.org/mail-archive/web/dnsop/current/msg08866.html;基本上不清楚过去是否有限制,我们现在正在尝试放松一点,或者是否从一开始就没有限制,以及人们错误地实施了系统。

例如,您可以查看此 Chromium/Chrome 错误报告:https://bugs.chromium.org/p/chromium/issues/detail?id=31405 https://bugs.chromium.org/p/chromium/issues/detail?id=31405如果使用以数字或纯数字开头的 TLD,则浏览会失败(如果以前面有字母的数字结尾,则浏览会失败)。这不被认为是一个错误,也没有被修复,因为浏览器附带了一个 TLD 列表,因此除了测试它们的语法之外,它还可以知道哪些是有效的,哪些是无效的。

ICANN 新 TLD 申请指南(2012 年 6 月)

可用于https://newgtlds.icann.org/en/applicants/agb/guidebook-full-04jun12-en.pdf https://newgtlds.icann.org/en/applicants/agb/guidebook-full-04jun12-en.pdf从第 64 页开始,内容如下:

ASCII 标签(即在线路上传输的标签)必须按照技术标准域名:实施和规范 (RFC 1035) 以及 DNS 规范的澄清 (RFC 2181) 及其任何更新中的规定有效。

ASCII 标签必须是有效的主机名,如技术标准 DOD 互联网主机表规范 (RFC 952)、互联网主机要求 — 应用程序和支持 (RFC 1123) 以及名称检查和转换应用技术 (RFC 3696)、应用中的国际化域名 (IDNA)(RFC 5890-5894) 及其任何更新。这包括以下内容:

ASCII 标签必须完全由字母(字母字符 a-z)组成,或者

该标签必须是有效的 IDNA A 标签(进一步限制如下文第二部分所述)。

特别注意的是:ASCII 标签必须完全由字母组成(字母字符 a-z)

这会立即禁止任何完整的数字,以及事实上的任何数字,包括末尾的数字,但 IDN TLD 除外,其形式为xn--something.

请注意,有人直接向 ICANN 询问此事,并得到了以下回复,如下所示:https://domaingang.com/domain-news/icann-applicant-handbook-this-is-why-we-cannot-have-numeric-gtlds/ https://domaingang.com/domain-news/icann-applicant-handbook-this-is-why-we-cannot-have-numeric-gtlds/ :

请注意,数字 TLD 在第一轮申请中被禁止。 申请人指南中禁止数字 gTLD(http://newgtlds.icann.org/en/applicants/agb http://newgtlds.icann.org/en/applicants/agb)源于对此类域正常运行能力的许多技术问题。域名通常用于可能使用其他类型标识符(如 IP 地址)的地方。

TLD 全部由字母组成的事实通常是软件识别域名的关键决定因素。如果允许使用诸如“.123”之类的 TLD,您可能会拥有一个域名“74.125.244.123”,该域名很难与 IP 地址“74.125.244.123”区分开来。还有其他考虑因素:一些技术标准文档规定 TLD 将按字母顺序排列,这也已被编码为软件中的假设。

AGB 对字母字符的限制旨在限制这些情况,这意味着此类 TLD 不太可能在软件中正常工作,并限制相同问题可能导致的潜在安全问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

顶级域名中的号码? 的相关文章

  • 在php中获取二进制数据大小的正确方法是什么?

    我已阅读文件的一部分 现在想确保该部分的大小正确 我怎样才能在 php 中做到这一点 part fread file 1024 return some function part 1024 我已经阅读了这些示例 但我怀疑是否要使用 strl
  • XDebug 与 Symfony 和 PhpStorm 不起作用(Ubuntu 安装)

    关于我的系统的事实乌班图15 10PHP 5 6 11交响乐2 7PhpStorm 10调试2 4我真的很难让 xdebug 在 PhpStorm 的 Symfony 项目下工作 我安装了xdebug 在我的 etc php5 apache
  • HTML 表单 POST 到 PHP 页面 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 好的 我创
  • 如何为 Lumen 的封闭路线指定路线名称?

    您好 我有以下流明路线 router gt get end function Illuminate Http Request request use router controller router gt app gt make App H
  • Instagram 如何使用 Amazon S3?

    在将文件上传到 Amazon S3 时 我需要深入了解 Instagram 的工程 我刚刚开始使用 S3 我认为 Instagram 是一个值得效仿的好模式 因为他们每天上传数千张图片 我的应用程序有点相似 用户上传图片 可以删除自己的图片
  • 在 symfony2 中为特定控制器设置 max_execution_time

    Using ini set 我可以扩展最大执行时间一个脚本的 在Symfony2 我可以添加ini set to web app php and web app dev php将增加的执行时间应用于所有控制器 但在这种情况下 我只想扩展最大
  • mongodb对话系统

    我正在实施一个verymongodb 上的简单对话系统 这个想法应该是 当我打开一个 convo 时 它应该显示发送和接收的消息 到目前为止一切正常 并且应该非常容易 通过使用像这样的伪代码这样的简单查询 from my id AND to
  • Symfony php.ini Debian

    我在 Oracle VM VirtualBox 上使用 Debian 7 amd64 LAMP 服务器 我正在尝试安装 Symfony 但遇到了一些小问题 当我运行命令时 php my project name app check php
  • 将 SQL 中的数据存储在数组中

    我正在尝试将 sql 数据库中的数据存储到数组中 目前我有这个 query mysql query SELECT FROM InspEmail WHERE Company LIKE company while row mysql fetch
  • Django 表单:时间字段验证

    我觉得我在这里遗漏了一些明显的东西 我有一个 Django 表单 其中包含时间场 http docs djangoproject com en dev ref forms fields timefield在上面 我希望能够允许像 10 30
  • 疯狂的 crond 行为。不断使 bash 进程失效

    我有一个看起来像这样的 crontab SHELL bin bash PATH sbin bin usr sbin usr bin MAILTO root HOME 0 59 var www html private fivemin zda
  • 使用 php 和 symfony 从数组创建 Excel 文件

    我正在尝试使用 PHP 和 symfony 将数组导出为 XLS 文件 如下面的代码所示 创建 XLS 文件后 我只能获取数组的最后一行 并且它显示在文件的第一行中 似乎 lignes 变量没有增加 我不明白出了什么问题 有人可以帮忙吗 f
  • 需要使用 php 从远程服务器下载与 $_FILES 相同的内容[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 好的 我有处理图像上传的 php 代
  • 从多个选择列表中插入数据到mysql数据库(html形式)

    我制作了一个表格 其中有商店的 ID
  • 无法在 Centos 上安装 php-mysqli 扩展

    我正在尝试将 mysqli 扩展安装到 php yum install php mysqli 我收到下一个错误 Transaction Check Error file usr share mysql charsets Index xml
  • 验证单个单选按钮在可用的 javascript 验证脚本中不起作用

    我随机生成了单选按钮系列 例如
  • 如何显示不同页眉的页面? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在为我的学校项目开发网站 但我遇到了一个问题 我在每个页面上显示一个标题 我的标题之一包含登录表单 另一标题包含用户名 搜索栏等 问题是
  • NodeJS 和 PHP (Laravel) 集成用于 Socket.IO 实时聊天

    目前我有一个我写过的网站PHP通过Laravel 框架 我已经使用写了一个实时聊天nodeJS with 套接字IO and Express现在我想做的是将它集成到我已经编写的 Laravel 网站中 问题是聊天必须在主页中 当前由 Lar
  • PHP 除法浮点值问题

    当我尝试获取余数时 它给出了无效值 我试图获得两位小数的余数 我得到 3 4694469519536E 18 我的价值观是 x 0 1 y 0 005 我尝试了以下方法 echo ed fmod 0 1 0 005 OutPut 3 469
  • 处理查询字符串参数时 Codeigniter 缓存问题

    问候 我正在编写一个 CI Web 应用程序 它实现标准文件缓存功能 如下所示 this gt output gt cache n 我使用了段和查询字符串参数的组合 因此似乎遇到了问题 我在用例和输出类代码中看到的是 缓存仅基于段 像这样

随机推荐

  • 保持 C# 控制台应用程序运行的最佳方法是什么[重复]

    这个问题在这里已经有答案了 我开发了一个必须在后台运行的控制台应用程序 应用程序必须不断检查数据库中的新记录 如果返回新记录 则会对其进行处理 我的应用程序目前使用 while true 来保持应用程序运行 使用 while 循环是最好的解
  • 带有 IOS SDK 4.2 的 Xcode 3.2.5 下载 [已关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我在苹果开
  • HTML5、占位符、Webkit 中的行高

    我有一个输入字段
  • 加载微调器会在页面上的每个按钮上激活

    我正在尝试将加载旋转器集成到按钮中 这也非常有效 问题 如果我单击一个按钮 微调器将对每个其他按钮做出响应 我该如何纠正这个问题 My code
  • 如何在 C++ 数据结构中存储 Fortran 风格的长字符标量

    我正在使用需要字符标量的旧版 Fortran 库PATH作为子例程的参数 原来的界面是 SUBROUTINE MINIMAL VAR1 PATH CHARACTER LEN 4096 PATH 我需要能够从 C 调用它 因此我进行了以下更改
  • 出现 TypeError:无法 pickle _thread.lock 对象

    我正在查询 MongoDB 以获取字典列表 对于列表中的每个字典 我正在对值进行一些比较 根据比较结果 我将字典的值 比较结果和计算出的其他值存储在 mongoDB 集合中 我试图通过调用多处理来做到这一点 但收到此错误 def save
  • 在 Visual Studio 2019 中运行 python matplotlibcpp

    我想为 C 程序安装绘图功能 我选择了matplotlibcpp由于其简单性和在线评论 但是 我无法生成图并出现许多神秘错误 我是 C 新手 更新 VS 2019 的包含路径后 我能够在编译和链接时没有错误 但执行过程中列出了许多错误 下面
  • 在哪里可以找到 Azure Devops 中项目的 System.TeamProjectId

    我需要预先提供此 ID 但我似乎无法在网上找到它 The 文档 https learn microsoft com en us azure devops pipelines build variables view vsts仅将其称为系统变
  • 如何在php中根据时区获取Unix时间戳

    代码优先 echo time br echo date Y m d H i s br date default timezone set America New York echo time br print r timezones tim
  • Mongo 聚合的分页跳过和限制

    我正在使用flask paginate在flask Python框架 中进行分页 仅供参考 我能够实现分页find查询如下 from flask paginate import Pagination from flask paginate
  • 为什么我从 App Engine 调用 Google API 时会收到 invalid_grant?

    我正在尝试从 App Engine 访问 Google Prediction API 并按照此处的说明进行操作 https developers google com appengine articles prediction servic
  • 根据文本区域行调整 TD 高度

    我有一个文本区域rows 1 里面一个 td 因此空时占用的空间尽可能小 现在我想知道 当用户按下回车键时 如何最好地 扩展 文本区域 我提出了一个非常简单的jsfiddle http jsfiddle net zdjsU 来测试这个想法
  • com.sec.android.provider.* 应用程序到底是什么?

    我知道这不是代码问题 但是 我尝试处理存储在类似目录中的一些数据库 data data com sec android provider 提供商签名中的 sec 是什么意思 这取决于制造商吗 一个例子 内容提供商call logs读取数据库
  • 多个 after_commit 回调的执行顺序 (Rails)

    我最近发现有多个after commit在同一模型中定义的对象会以相反的顺序被调用 例如 after commit method1 on gt create after commit method2 on gt create method2
  • 使用整数键创建关联数组

    我需要在 javascript 中创建一个关联数组integer关键如下 a 10 ten 但是当我创建一个数组时 它将值放入10th数组的索引 它创建一个长度为 11 的数组 我希望它是一个键值对 我知道这可以通过使用对象来完成 但我只需
  • Django 与另一个字段的多对多关系

    我有两个模型 Recipe and Ingredient 配方模型与成分有多种关系 但我还需要能够指定成分的数量 我的模型目前看起来像 class Ingredient models Model name models CharField
  • 获取包含当前输入值的 HTML

    我需要获取整个页面的 HTML 其中包含所有输入的当前值value 我试过这个 document getElementById htmlId innerHTML 和这个 html html 但两者都返回 HTML 页面 但没有输入值 I k
  • Bash:在初始注释后将行插入源代码文件

    我需要使用 bash 在 python 文件中插入一行 该行需要出现在文件中的任何初始注释之后 所以给定文件 usr bin python This is just an example comment moo cow etc 我需要一个
  • 如何防止 C# 中表单的 keydown 事件多次触发?

    根据官方文档 http msdn microsoft com en us library ms171536 aspx Windows 窗体控件上的 KeyDown 事件仅发生一次 但很容易证明只要按住某个键 该事件就会不断触发 privat
  • 顶级域名中的号码?

    顶级域名末尾可以包含数字吗 我对 DNS 规则等一无所知 但是当我尝试将 PHP 的 filter var 函数与 FILTER VALIDATE EMAIL 一起使用时 email protected cdn cgi l email pr