浅析URL

752 阅读11分钟

什么是URL?

概述

和Hypertext以及 HTTP一样,URLWeb中的一个核心概念。它是浏览器用来检索 web 上公布的任何资源的机制。

URL 代表着是统一资源定位符 (Uniform Resource Locator )URL 无非就是一个给定的独特资源在 Web 上的地址。理论上说,每个有效的 URL 都指向一个唯一的资源。这个资源可以是一个HTML页面,一个CSS文档,一幅图像,等等。而在实际中,也有一些例外,最常见的情况就是一个URL指向了不存在的或是被移动过的资源。由于通过URL呈现的资源和URL本身由Web服务器处理,因此web服务器的拥有者需要认真地维护资源以及与它关联的URL

深入探索

基础:剖析URL

下面是一些URL的示例:

https://developer.mozilla.org
https://developer.mozilla.org/en-US/docs/Learn/
https://developer.mozilla.org/en-US/search?q=URL

您可以将上面的这些网址输进您的浏览器地址栏来告诉浏览器加载相关联的页面(或资源)。

一个URL由不同的部分组成,其中一些是必须的,而另一些是可选的。让我们以下面这个URL为例看看其中最重要的部分:

http://www.example.com:80/path/to/myfile.html?key1=value1&
key2=value2#SomewhereInTheDocument
  • http 是协议。它表明了浏览器必须使用何种协议。它通常都是HTTP协议或是HTTP协议的安全版,即HTTPSWeb需要它们二者之一,但浏览器也知道如何处理其他协议,比如mailto:(打开邮件客户端)或者 ftp:(处理文件传输),所以当你看到这些协议时,不必惊讶。

mdn-url-protocol01.png

  • www.example.com 是域名。 它表明正在请求哪个Web服务器。或者,可以直接使用IP address, 但是因为它不太方便,所以它不经常在网络上使用。

mdn-url-domain@x2.png

  • :80 是端口。 它表示用于访问Web服务器上的资源的技术“门”。如果Web服务器使用HTTP协议的标准端口(HTTP为80,HTTPS为443)来授予其资源的访问权限,则通常会被忽略,否则是强制性的。

mdn-url-port@x2.png

  • /path/to/myfile.html 是网络服务器上资源的路径。在Web的早期阶段,像这样的路径表示Web服务器上的物理文件位置。如今,它主要是由没有任何物理现实的Web服务器处理的抽象。

mdn-url-path@x2.png

  • ?key1=value1&key2=value2 是提供给网络服务器的额外参数。 这些参数是用 符号分隔的键/值对列表。在返回资源之前,Web服务器可以使用这些参数来执行额外的操作。每个Web服务器都有自己关于参数的规则,唯一可靠的方式来知道特定Web服务器是否处理参数是通过询问Web服务器所有者。

mdn-url-parameters@x2.png

  • #SomewhereInTheDocument 是资源本身的另一部分的锚点. 锚点表示资源中的一种“书签”,给浏览器显示位于该“加书签”位置的内容的方向。例如,在HTML文档上,浏览器将滚动到定义锚点的位置;在视频或音频文档上,浏览器将尝试转到锚代表的时间。值得注意的是,后面的部分(也称为片段标识符)从来没有发送到请求的服务器。

mdn-url-anchor@x2.png

如何使用URL

可以直接在浏览器的地址栏里输入任何URL,来获得后台的资源,但是这仅仅是冰山一角。 HTML语言对URLs有大量的使用:

  • 为在其他文档中新建链接,用 <a>;
  • 为将文档与它的相关资源关联,用各种标签如 <link><script>;
  • 为显示多媒体如图片 (用 <img> ), 视频 (用 <video> ), 声音和音乐 (用 <audio>), 等等;
  • 为显示其他HTML文档,用<iframe>

其他大量使用URLs的技术如 CSS 或 JavaScript, 这些才是Web的中心。

DNS

DNS (Domain Name System)域名系统,是一个层次化、分散化的Internet连接资源命名系统。DNS维护着一个包含域名与对应资源例如IP地址的列表

DNS最突出的功能是将易于记忆的域名(例如mozilla.org)翻译成为数字化的IP地址(例如151.106.5.172)。这一从域名IP地址的映射过程被称为DNS查询(DNS lookup) ,与之对应,DNS反向查询(rDNS) 用来找到与IP地址对应的域名。

DNS的正向解析(DNSlookup)和反向解析(rDNS)

正向解析:通过主机名获取其对应的广域网IP地址; 同时通过主机名名称查看正向解析信息:

  • 命令行输入 nslookup domain.
  • 从返回的信息中您可以看到正向解析的结果。
C:\>nslookup www.google.com
Server:  zj-ns1.cableplus.com.cn
Address:  219.233.241.166    ------DNS名字服务器信息

Non-authoritative answer:
Name:    www.google.com
Addresses:  2404:6800:4005:c00::63
          74.125.128.106
          74.125.128.147
          74.125.128.99
          74.125.128.103
          74.125.128.104
          74.125.128.105    -------www.google.com的IP地址

反向解析:两种表达方式中IP地址部分顺序恰好相反,因为域名结构是自底向上(从子域到域),而IP地址结构是自顶向下(从网络到主机)的。实质上逆向域名解析是将IP地址表达成一个域名,以地址做为索引的域名空间,这样逆向解析的很大部分可以纳入正向解析中。

查看反向解析信息:

  • 命令行输入 nslookup -qt=ptr yourIP
  • 从返回的信息中您可以看到反向解析的结果。
C:\>nslookup -qt=ptr 74.125.128.106
Server:  zj-ns1.cableplus.com.cn
Address:  219.233.241.166                 -----DNS名字服务器信息

Non-authoritative answer:
106.128.125.74.in-addr.arpa     name = hg-in-f106.1e100.net
125.74.in-addr.arpa     nameserver = NS4.GOOGLE.COM
125.74.in-addr.arpa     nameserver = NS1.GOOGLE.COM
125.74.in-addr.arpa     nameserver = NS2.GOOGLE.COM
125.74.in-addr.arpa     nameserver = NS3.GOOGLE.COM    ---对应的域名
NS1.GOOGLE.COM  internet address = 216.239.32.10
NS2.GOOGLE.COM  internet address = 216.239.34.10
NS3.GOOGLE.COM  internet address = 216.239.36.10
NS4.GOOGLE.COM  internet address = 216.239.38.10

IP (Internet Protocol)因特网传输协议

IPInternet Protocol(网际互连协议)的缩写,是TCP/IP体系中的网络层协议。设计IP的目的是提高网络的可扩展性:一是解决互联网问题,实现大规模、异构网络的互联互通;二是分割顶层网络应用和底层网络技术之间的耦合关系,以利于两者的独立发展。根据端到端的设计原则,IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务。

域名(Domain Name

域名(英语:Domain Name),又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置

由于IP地址具有不方便记忆并且不能显示地址组织的名称和性质等缺点,人们设计出了域名,并通过网域名称系统(DNS,Domain Name System)来将域名IP地址相互映射,使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址数串

域名的种类

(顶级域名、一级域名、二级域名、三级域名)

顶级域名

英语:Top-level domains,first-level domains(TLDs),也翻译为国际顶级域名

通用顶级域名主条目:通用顶级域

  • 通用顶级域:
  • 无赞助: .biz .com .edu .gov .info .int .mil .name .net .org .pro .xyz
  • 赞助: .aero .cat .coop .jobs .museum .travel .mobi .asia .tel .xxx
  • 基本架构: .arpa .root .tel
  • 审批阶段: .post
  • 申请阶段: .geo .kid .mail .sco .web
  • 删除/退休: .nato
  • 预留: .example .invalid .localhost .test
  • 伪域名: .bitnet .csnet .local .onion .uucp Others

下面是现在使用中的通用顶级域(加上.arpa,有时被认为是通用顶级域之一):通用顶级域在1985年1月创立,当时共有6个通用顶级域,主要供美国使用:

域名、创建时间、使用范围说明:

  • .com- 供商业机构使用,但无限制最常用,被大部分人熟悉和使用
  • .net- 1985年1月,原供网络服务(供应商)使用,现无限制
  • .org- 1985年1月,原供不属于其他通用顶级域类别的组织使用,现无限制
  • .edu / .gov / .mil- 1985年1月,供美国教育机构美国政府机关/美国军事机构。因历史遗留问题一般只在美国专用

1988年11月应北约(NATO)要求,开始使用.int。该域名原计划也用于部分因特网基建数据库,如.ip6.int,即.in-addr.arpa的IPv6版本。但后来又建议所有新的数据库需使用.arpa创建(与TLD以前的系统相同),现有的亦将在可能的情况下移动到.arpa,令IPv6反搜索使用.ip6.arpa 。

  • .int- 1988年11月国际联盟、国际组织,供由条约而成立的国际性机构使用
  • .arpa- 是美国军方保留的域

1997年,美国政府叫停了IAHC设立7个新通用顶级域名(.arts艺术机构、.firm商业公司、.info信息机构、.nom个人个体、.rec消遣机构、.store商业销售机构及.web因特网相关机构)的建议。

2000年11月16日,ICANN发布了7个新通用顶级域名:.aero,.biz, .coop, .info, .museum, .name, .pro。

  • .aero- 供航空运输业使用
  • .biz- 供商业使用
  • .coop- 供联合会(cooperatives)使用
  • .info- 供信息性网站使用,但无限制
  • .museum- 供博物馆使用
  • .name- 供家庭及个人使用
  • .pro- 供部分专业使用

至2005年6月,ICANN公布多个新通用顶级域.cat, .jobs, .mobi, .post, .tel, .travel, .xxx, .kid。

  • .asia- 供亚洲社区使用
  • .cat- 供加泰罗尼亚语/文化使用
  • .jobs- 供求职相关网站使用
  • .mobi- 供手提电话等设备网站使用
  • .travel- 供旅行社、航空公司、酒店及旅游协会等机构使用
  • .tel- 供连接电话网络与因特网的服务使用

下列通用顶级域正在接受审批,可能会在不久的将来加入通用顶级域域名服务器之中:

  • .post- 供邮政服务使用
  • .xxx- 供色情网站使用
  • .mail- 供邮件网站使用

非官方TLD及建议:各组织及商业机构建议了不少新的通用顶级域,部分更非正式地被创建,但并未能正常运作,包括 .berlin、.sco、.love等。

国家地区代码顶级域名主条目:国码顶级域名(ccTLDs, country code top-level domain,国家域名)一般是基于ISO-3166的两字母。两个字的后缀表示该域所在的国家或地区,例如:cn(中国大陆)、de(德国)、eu(欧盟)、jp(日本)、hk(中国 香港)、tw(中国 台湾)、uk(英国)、us(美国)。(依字母顺序)

国家代码顶级域名:

  1. .ac .ad .ae .af .ag .ai .al .am .an .ao .aq .ar .as .at .au .aw .az
  2. .ba .bb .bd .be .bf .bg .bh .bi .bj .bm .bn .bo .br .bs .bt .bv .bw .by .bz
  3. .ca .cc .cd .cf .cg .ch .ci .ck .cl .cm .cn .co .cr .cu .cv .cx .cy .cz
  4. .de .dj .dk .dm .do .dz
  5. .ec .ee .eg .er .es .et .eu
  6. .fi .fj .fk .fm .fo .fr
  7. .ga .gd .ge .gf .gg .gh .gi .gl .gm .gn .gp .gq .gr .gs .gt .gu .gw .gy
  8. .hk .hm .hn .hr .ht .hu
  9. .id .ie .il .im .in .io .iq .ir .is .it
  10. .je .jm .jo .jp
  11. .ke .kg .kh .ki .km .kn .kr .kw .ky .kz
  12. .la .lb .lc .li .lk .lr .ls .lt .lu .lv .ly
  13. .ma .mc .md .me .mg .mh .mk .ml .mm .mn .mo .mp .mq .mr .ms .mt .mu .mv .mw .mx .my .mz
  14. .na .nc .ne .nf .ng .ni .nl .no .np .nr .nu .nz
  15. .om
  16. .pa .pe .pf .pg .ph .pk .pl .pm .pn .pr .ps .pt .pw .py
  17. .qa
  18. .re .ro .ru .rw
  19. .sa .sb .sc .sd .se .sg .sh .si .sk .sl .sm .sn .so .sr .st .sv .sy .sz
  20. .tc .td .tf .tg .th .tj .tk .tl .tm .tn .to .tr .tt .tv .tw .tz
  21. .ua .ug .uk .us .uy .uz
  22. .va .vc .ve .vg .vi .vn .vu
  23. .wf .ws
  24. .ye .yt .yu
  25. .za .zm .zw

预留/未分配: .cs .eh .kp

已分配/未使用: .ax .bv .gb .sj .um

逐渐中止: .tp .su

删除/退休: .cs .dd .zr

使用中:

  1. .cn代表中国,以 .cn结尾即中国国内域名,适用于其国内各机构、企业,常称为英文国内顶级域名,.CN类英文域名。1997年12月31日诞生并开通。注册局为CNNIC。按国家规定划分六类二级域名,后缀:
  2. .com.cn .net.cn .org.cn .gov.cn .edu.cn。现在已开放.cn二级域名注册。
  3. 岛国域名:与一些私营公司达成协议向全世界开放。
  4. .tv:诞生--The .tv Corporation于2000年以5000万美元向太平洋小国图瓦卢购得,2001年1月开通,注册局为The .tv Corporation。特点是直接形成电视、视频、影音等概念联想。
  5. .cc:诞生--eNIC集团于2000年向印度洋科科斯群岛购得.cc,2001年1月开通,注册局为eNIC Corporation。特点是简单易记、便于识别,极具想象力,Intel、Coca-cola等国际大公司创建.cc域名门户,显示了.cc的价值与日俱增。

其它级别域名

除了顶级域名,还有二级域名(SLD,second-level domain),就是最靠近顶级域名左侧的字段。如:zh.wikipedia.org中,wikipedia就是二级域名(有资料认为, 在顶级域名后面, 还存在一级域名, 那么zh就是二级域名)。

再下来就是三级域名,即最靠近二级域名左侧的字段,从右向左便可依次有四级域名、五级域名等等。举个正在使用中的三级域名的实例,www.ncic.ac.cn,其中www前缀表明此域名对应着万维网服务,每一级域名由英文半角句号分区,“ncic”作为三级域名是“ac.cn”的子域名。