URL部分的名称和最大长度

ham*_*mid 14 subdomain url

在此网址中:

http://www.subdomain.domainname.abc.xyz.com.us/directory/filename.extension
Run Code Online (Sandbox Code Playgroud)
  1. 每个部分的名称是什么?
  2. 每个部件的最大长度是多少?例如子域名,域名,顶级域名......

com*_*ike 22

Subdomain的维基百科条目回答了这两个问题:

  1. 每个部分的名称是什么?

亚结构域是一个域是一个较大域的一部分; 唯一不属于子域的域是根域.例如,west.example.com并且east.example.com是域的子example.com域,而域又是com 顶级域(TLD)的子."子域"表示相对依赖性,而不是绝对依赖性:例如,wikipedia.org包括域的子org域,并且en.wikipedia.org包括域的子域wikipedia.org.

  1. 每个部件的最大长度是多少?例如子域名,域名,顶级域名......

理论上,这个细分可以深达127级,每个DNS标签最多可以包含63个字符,只要整个域名的总长度不超过255个字符.但实际上,大多数域名注册管理机构限制为253个字符.


Hol*_*ger 11

TLDR - 名称

根据RFC3986foo://example.com:8042/over/there?name=ferret#nose (2005 年 1 月) ,您的组件可以按如下方式分解...

     foo://subdomain.example.com:8042/over/there?name=ferret#nose
     \_/  \________/                /\_________/ \_________/ \__/
      |       |                          |            |        |
          \___|_____________________/
   scheme   label       authority       path        query   fragment
   (AKA:                (AKA:
   protocol)            (domain)
Run Code Online (Sandbox Code Playgroud)

TLDR - 最大长度

  • 标签/子域:63最多字符数。
  • 域:253最大字符数
  • 总 URL:2,000最多字符数

细节

现在,让我们将其分解为给定 URL 的替代版本http://www.subdomain.domainname.com/directory/filename.extension?name=ferret#nose

协议

  • http://:方案或协议。
    • 最大长度:没有限制,但这些限制通常由 IETF 创建,因此最长的 RFC 方案将是最大长度,我将其视为prospero,8字符。 然而! 您可以制定自己的协议并使其具有任何合理的长度,尽管我可能不会超过255字符。例如,file:/在Chrome中会显示文件,samba:/在Linux中会启动Samba应用程序并访问资源等等。
    • 资料来源:RFC1738(1994 年 12 月)
    • 引用:“关于特定协议的注释如下。涵盖的方案包括:ftp、http、gopher、mailto、news、nntp、telnet、wais、file、prospero。”

子域

  • www, subdomain:www只是一个流行的子域,在今天是多余的。
    • 最大长度:63字符
    • 资料来源:RFC1035(1987 年 11 月)
    • Quote:“标签不得超过 63 个字符。”

领域

  • domainname.com:您的“域”,不是任何级别,而是完整的域。
    • 最大长度:253如果您关心电子邮件,则为字符数(toSMTP 中字段的最大限制为255字符,为您留下a@(253-char-domain)电子邮件中最长的可能域;255如果您不介意电子邮件无法正常工作)
    • 资料来源:RFC2821(2008 年 10 月)、RFC5321(2008 年 10 月)、RFC821(1982 年 8 月)
    • 引用:

域名或号码的最大总长度为 255 个字符。(RFC2821、RFC5321)

[电子邮件地址格式为]<mailbox> ::= <local-part> "@" <domain> (RFC821)

二级域名

  • domainname:您的二级域名。
    • 与子域相同的限制和来源。

顶级域名

  • com:您的顶级域名 (TLD)。其中也可能包含句点,例如co.uk
    • 最大长度:这些是由 IETF 通过 RFC 建立的。最大长度将是存在的最长 TLD。例如,RFC6927.XN--MGBERP4A5D4AR为沙特阿拉伯保留了域名。
    • 资料来源:RFC920(1984 年 10 月)
    • 引用:“最初的顶级域名是:ARPA、GOV、EDU、COM、MIL、ORG。”

小路

  • directory/filename.extension: 这是你的路。
    • 最大长度:Infinite但实际上,请坚持 URL 长度不超过2,000字符,因为并非所有浏览器都能理解无限的概念。
    • 资料来源:RFC3986(2005 年 1 月)、RFC2616(1999 年 6 月)、RFC7230
    • 引用:

“服务器必须能够处理它们所服务的任何资源的 URI,并且应该能够处理无限长度的 URI...”(RFC2616);

“本规范不限制资源的范围……”(RFC3986);

*“建议所有 HTTP 发送方和接收方至少支持 8000 个八位位组的请求行长度。” (RFC7230)

查询和片段

  • name=ferret:这是一个GET参数,形式为field=value
  • #nose:这是片段,可用于使用<a name="nose" />HTML 锚定到 HTML 文档的特定部分。
    • Max:如上面关于路径的部分所述,总路径、查询和片段不应超过2,000字符。
    • 来源:RFC3986(2005 年 1 月)
    • 引用:

URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]


Yor*_*Kev 7

回答问题1:

一个简单的URI看起来像:

http://www.mywebsite.com
Run Code Online (Sandbox Code Playgroud)

从右到左解释起来比较容易:

  • com是顶级域名(TLD)
  • mywebsite是域名,但在描述时通常包括TLD,例如mywebsite.com
  • www是一个子域名
  • http://是用于访问资源的协议

只是为了让事情变得更加混乱,许多顶级域名实际上是2个域名,例如.co.uk

所以,另一个例子是:

https://aaa.bbb.ccc.mywebsite.co.uk
Run Code Online (Sandbox Code Playgroud)
  • co.uk是TLD
  • mywebsite是域名
  • ccc是一个子域名
  • bbb是一个子子域,或者你可以说是ccc.mywebsite.co.uk的子域名
  • aaa是子子域,或者你可以说是bbb.ccc.mywebsite.co.uk的子域名

在TLD之后但在文件名之前的任何内容被称为路径,例如:

https://www.mywebsite.com/this/is/a/path/to/resource/filename.txt
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,filename.txt通常被称为资源(虽然有些人会说整行是资源,因为你并不总是有文件名).