URL的各部分名称及其最大长度

24
在此URL中:
http://www.subdomain.domainname.abc.xyz.com.us/directory/filename.extension
  1. 每个部分的名称是什么?
  2. 每个部分的最大长度是多少?例如子域名、域名、顶级域名等。
3个回答

35

子域名的维基百科条目回答了以下两个问题:

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

子域名是较大域名的一部分;唯一不是子域名的域名是根域名(root domain)。例如,west.example.comeast.example.comexample.com域名的子域名,而后者又是com顶级域名(top-level domain)的子域名。"子域名"表达的是相对依赖性,而不是绝对依赖性:例如,wikipedia.org包含于org域,而en.wikipedia.org则包含于wikipedia.org域。

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

理论上,这种细分可以深达127层,每个DNS标签可以包含最多63个字符,只要整个域名不超过255个字符的总长度即可。但在实践中,大多数域名注册机构将限制其长度不超过253个字符。


11

简述 - 名称

给定 foo://example.com:8042/over/there?name=ferret#nose,根据 RFC3986 (2005年1月) 可以将其组件拆分如下...

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

简述 - 最大长度

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

详细信息

现在,让我们为您给出的URL的另一种版本http://www.subdomain.domainname.com/directory/filename.extension?name=ferret#nose进行分解:

协议

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

子域名

  • wwwsubdomain: www只是今天多余的流行子域名。
    • 最大长度:63个字符。
    • 来源: RFC1035(1987年11月)
    • 引用:"标签必须少于63个字符。"

域名

  • domainname.com: 你的"域名",不是任何级别的域名,而是完整的域名。
    • 最大长度: 如果你关心电子邮件(在SMTP的to字段有个最大长度限制为255字符,因此留下a@(253-char-domain)作为电子邮件中最长可能的域名,则长度为253个字符;如果你不介意电子邮件无法正常工作,则长度为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 : 这是你的路径。
    • 最大长度:无限,但实际上,请将URL长度保持在不超过2,000个字符,因为并非所有浏览器都能理解无限的概念。
    • 来源:RFC3986(2005年1月),RFC2616(1999年6月),RFC7230
    • 引用:

"服务器必须能够处理它们提供的任何资源的URI,并应该能够处理无限长度的URIs..." (RFC2616);

"本规范不限制可能是资源的范围..." (RFC3986);

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

查询和片段

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

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


11
回答问题1:
一个简单的URI看起来像这样:

例如:

http://www.mywebsite.com

从右向左解释会更容易理解:

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

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

因此,另一个例子可能是:

https://aaa.bbb.ccc.mywebsite.co.uk
  • co.uk 是顶级域名
  • mywebsite 是域名
  • ccc 是子域名
  • bbb 是子子域名,或者你可以说是 ccc.mywebsite.co.uk 的子域名
  • aaa 是子子子域名,或者你可以说是 bbb.ccc.mywebsite.co.uk 的子域名

在顶级域名后面但文件名之前的任何内容都被称为路径,例如:

https://www.mywebsite.com/this/is/a/path/to/resource/filename.txt

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接