在这篇文章中,我将尝试解释URL的语法和用法,以及URI、URL、URN和URC之间的区别。
URL解析
这将是我们本文的示例:
https://username:password@www.example.com:443/path/to/page.html?query=file#fragment
这个URL
的格式是建立在URI通用语法之上的,看起来像这样[2]:
URI = scheme ":" ["//" authority] path ["?" query] ["#" fragment]
注意,“authority”
可以具有以下语法:
authority = [userinfo "@"] host [":" port]
URI SCHEME
URI SCHEME必需的
,但通常由应用程序隐藏,例如在浏览器中最常见的是http
或https
,这是默认的并隐含的。
https:// ssh:// tel://
通常也称为“协议”,它是资源如何被访问的指示器。
URI方案名称的官方注册由IANA
在http://www.iana.org/assignments/uri-schemes
上维护。IANA
将显示从未注册的已注册和保留方案[1]。
RFC4395
解释了注册程序并提供了一些指南。旧版本是RFC2717
用于注册,RFC2718
用于指南。
USERINFO
UserInfo
是可选的,并且通常会被应用程序丢弃。大多数浏览器会忽略或警告该信息,因为这是一种安全风险。
一个通常使用它的示例:
ssh://username@example.com:2222
HOST
这是主机部分。它可以是相同的系统、主机名、IP
或域。
示例:
ldap://[2001:db8::10]/c=GB?objectClass?one #必须将IPv6地址放入方括号中
https://ittavern.com/url-explained-the-fundamentals/
vnc://10.10.20.57:5900
DOMAINS
只是对域的简短偏离。
示例:
www.example.com #完整的域名
www #子域
example #二级域名(SDL)
com #顶级域名(TDL),也称为“域后缀”或“域扩展”。
. #参考:根区,
第二级域名必须只包含字母(a-z)
、数字(0-9
)和短划线('-')
,但不能以短划线开头。此外,域是大小写不敏感的,这意味着ITTAVERN.COM
与ittavern.com
相同。第二级域名的最大长度为63个字符。子域名也受到相同规则的约束,但还可以包含下划线(_)
-不建议使用,但某些服务要求使用。例如,Microsoft
的一些SRV DNS
_sipfederationtls._tcp.example.com`。浏览器可以接受它,但不能保证。
点之间的每个字符串称为标签,一个标签的最大长度为63
个字符。完整域名的最大长度为253
个字符,包括点。
目前已注册的TLD
几乎有1500个。在创建本文时有1470个TLD
,更具体地说。
kuser@pleasejustwork:〜$ curl https://data.iana.org/TLD/tlds-alpha-by-domain.txt | sed '1d' | wc -l
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 9828 100 9828 0 0 11506 0 --:--:-- --:--:-- --:--:-- 11494
1470
所有TLD
的列表可以在IANA
的文档中找到。
TLD
有两种类型 - 通用顶级域(gTLD)
如.com .info .net
和国家代码顶级域(ccTLD)
如.nl .de .us
以及一些组合如.co.uk
或.com.au
。
PORT
许多方案有一个默认端口号,允许大多数程序隐藏端口号以避免用户困惑。http
的默认端口是80
,https
的默认端口是443
,ssh
的默认端口是22
等等。相同的原则也适用于传输协议,例如TCP
或UDP
。它们是必需的,但是如果使用默认端口,则大多数应用程序会隐藏它们,例如,如果使用的协议是https
,则浏览器会隐藏:443
并显示:10443
。
PATH
路径是子目录或子文件夹和文件的分层命名系统,从左到右,是必需的。与域不同,路径区分大小写!
示例:
https://ittavern.com/images/logo.png
https://ittavern.com/random-post/
https://duckduckgo.com #没有路径意味着根目录/
第一个示例指向一张图像,第二个示例中可能提示你注意文件丢失。浏览器将打开random-post
子文件夹,Web
服务器已配置为向浏览器提供预定义文件。这些文件通常称为index.html
,但是这可能会因设置而异。这也称为“Pretty URLs”
。
QUERIES
携带可选参数,可以在服务器或客户端站点上使用。常见用例包括引用者信息、变量、选项设置等。参数之间的分隔符是&
和;
。
示例:
https://www.twitch.tv/randomstream1231?referrer=raid #在Twitch上显示观众来自何处
https://youtu.be/dQw4w9WgXcQ?t=4 #在YouTube上,它告诉客户端从哪里开始播放视频
https://youtu.be/dQw4w9WgXcQ?
URL
URL
代表统一资源定位符,指定了已标识资源的位置以及访问该资源的机制。
URN
URN
标识资源的唯一和持久名称,而无需任何位置。
示例:
urn:isbn:n-nn-nnnnnn-n #通过ISBN编号标识一本书
urn:uuid:39ab000da-3f9a-abe2-1337-123456789abc #全局唯一标识符
urn:publishing:book #标识文档为书籍类型的XML命名空间
isbn - 如第一个示例中所示 - 是URN命名空间标识符(NID),而不是URN方案或URI方案 。有人提到,有些人会将NID(请参见以下列表)称为URI方案,相当于URL,这是不正确的。
每个URN
应具有以下结构:
- URN #方案规范前缀。
- NID #命名空间标识符(字母、数字、破折号)
- NSS #标识资源的特定于命名空间的字符串(可以包含ASCII码、数字、标点符号和特殊字符)
URC
URC
代表统一资源特征或统一资源引用。根据维基百科,前者是当前使用的名称。
URC
指向资源的元数据,而不是资源本身。一个快速示例是指向主页源代码的URC
:
view-source:http://example.com/
URC
从未产生最终标准,并且URC
从未被广泛采用。
网友评论