一、概述
统一资源定位符(URL,Uniform Resource Locator)是万维网(WWW,或称Web技术)中专门用来用于定位网页,它是实现Web技术的基础。它描述资源的访问“位置”和“机制”来标识资源。
我们知道,万维网(WWW)是科学家蒂姆·伯纳斯-李(Tim Berners-Lee),在1990年提出发明的。他当初创建的第一套Web技术是由HTML(用于编写网页)、HTTP(用于传输网页)和 URL(用于定位网页)构成,称为Web技术的三大基石。
欲详细了解万维网(WWW)的请进入。
在国家标准GB/T 32402-2015《通信名词术语 数据通信 因特网》中对统一资源定位符(URL)的定义是:因特网上任意资源地址的一个标准写法。它是万维网的一部分。使用绝大多数的统一资源定位地址都可以进人WWW浏览程序,例如Netscape、Lynx等。GB/T 2900.96-2015《电工术语 计算机网络技术》中对统一资源定位符(URL)的定义更为直接:用于定位和访问一个互联网资源的标准字符串。实质上,URL的核心功能是统一命名和精准寻址,为互联网上的资源提供了标准化标识。其主要作用可见下表1的5方面的简述。
表 1:URL的核心功能简述
二、URL的标准
1、IETF
URL的标准主要是由互联网工程任务组(IETF)发布和维护,经过了数十年的标准化发展历程,确保互联世界能用同一种语言对话。我们知道,科学家蒂姆·伯纳斯-李于1990年发明万维网,提出URL概念,URL作为万维网地址的雏形诞生。于是IETF的首个标准发布于1994年,即RFC 1738,正式定义了http、ftp等常见协议的URL语法。后经过1995年、1998年、2005年的修订补充,具体经历详见下表2-1的介绍。目前是主要是RFC 3986,若要详细了解该标准具体内容的请查阅下附件2-1。
表 2-1:IETF 的URL标准的发展变化
附件 3-1:RFC 3986(01/2005)《统一资源标识符(URI):通用语法》
2、WHATWG
在2004年,苹果、Mozilla、Opera等浏览器厂商成立了网页超文本应用技术工作组(WHATWG,Web Hypertext Application Technology Working Group),致力于推动Web技术向前发展,尤其是增强Web的应用功能。在URL应用方面,WHATWG的推动的标准称之为URL动态标准(URL Living Standard),启动时间实在2012年左右,之所以称为动态标准,是因为它实时动态更新,持续维护以反映最新的浏览器实现,没有标准的版本代际之分。它精准描述浏览器解析URL的行为,只定义在Web上能被访问到的“URL”,以面向实现,确保不同浏览器的解析行为一致。下表2-2给出了URL的IETF(RFC)与WHATWG标准的核心差异。若要详细了解WHATWG的URL Living Standard具体内容的请在其官网上直接免费查阅其最新标准内容,因为它是实时动态更新的。
表 2-2:IETF与WHATWG的URL标准之核心差异
欲更多了解上述两个标准组织介绍的请进入:IETF;WHATWG
3、IETF与WHATWG的标准关系
二者并非简单的“新旧”关系或是互相补充关系,而是定位与设计哲学的根本不同。IETF的RFC 3986将构建统一、稳定的理论基石,如同一位严谨的语言学家,致力于定义一套完美且恒久的语法。WHATWG的URL Living Standard要描绘动态、兼容的现实图景,更像一位人类学家,忠实记录并适应着语言随现实不断演变的过程。WHATWG标准的明确目标之一,就是“使 RFC 3986和 RFC 3987与当代实现保持一致,并在此过程中 取代这些RFC”。鉴于此,对于绝大多数Web开发者,理解并遵循WHATWG的URL标准是更务实的选择,因为它直接反映了浏览器的行为。而在设计非Web的网络协议时,应优先参考IETF的URI标准。
三、URL的技术原理
URL将复杂的信息(用什么协议、去哪台服务器、要什么文件)结构化为一串文本。当用户在浏览器输入一个URL后,背后经历了一系列复杂的流程。
1、URL的结构
一个完整的URL结构的通用格式如下,其中只有<scheme>和<host>是必须的,其余部分均为可选,各项的说明详见下表3-1。
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<fragment>
表 3-1:URL结构的拆解说明
上述是URL的标准结构,事实上常用的没那么复杂,关于URL结构的简单示例如:https://www.txrzx.com/i2860.html,表明执行超文本传输协议(采用SSL/TLS的安全HTTP),资源指向的服务器为通信人在线网站,其域名为www.txrzx.com(对应的IP地址为111.221.200.245),客户端(浏览器)访问的网页是i2860.html。
需要说明的是,构成中的“方案<Scheme>”不仅具限于HTTP(或HTTPS),还支持其它多种协议,例如:
文件传输协议(FTP):ftp://files.example.com/report.pdf,用于文件传输。
邮件传输协议(Mailto):Mailto: mailto:hello@example.com, 用于打开默认邮件客户端。mailto 是超文本标记语言(HTML)中用于创建电子邮件链接的协议(通常用在 <a> 标签的 href 属性中),点击链接后会调用用户设备上的默认邮件客户端(如 Outlook、Gmail App 等)并自动填充收件人、主题、正文等信息。
本地文本访问: file:///C:/Users/Public/Documents/report.pdf,用于访问本地文件(主要是指C盘中的指令文件等)。
2、工作流程
当在浏览器地址栏输入URL并按下回车,浏览器将经历:解析URL、DNS解析、客户端建立连接与发送请求、服务器处理与响应、浏览器渲染等步骤,具体详见下表3-2的描述。
表 3-2:URL工作过程简述
3、URL的编码及机制
为保证URL能被所有服务器正确理解,需通过一种“转义”机制来表示非ASCII字符(如中文)或不安全字符。
这种机制被称为百分号编码,原理是将需转码的字符按指定编码(如UTF-8)转化为字节流,每个字节用%加其2位十六进制表示。例如,中文“编解码”的UTF-8编码为:E7 BC 96;E8 A7 A3;E7 A0 81,经百分号编码后就是E7%BC%96%E8%A7%A3%E7%A0%81。
欲更多了解UTF-8编码的请进入。
四、相关说明
1、URL与URI和URN的关系
在互联网概念体系中,尤其是IETF的标准中,有统一资源定位符(URL,Uniform Resource Locator)、统一资源标识符(URI,Uniform Identifier)和统一资源名称(URN,Uniform Resource Name)之分,其概念详见下表4-1。事实上,URL、URN均是URI的子集,URL属于更广义的URI的一种形式。但WHATWG的URL动态标准(URL Living Standard)只使用URL。
表 4-1:关于URL、URI和URN
2、URL与相关技术的关系
从技术架构角度看,URL位于应用层,是多种网络技术的关键一环:超文本传输协议(HTTP)依赖URL来明确请求的具体资源,是HTTP请求的核心组成部分。超文本标记语言(HTML)中的超链接和表单都通过URL来定义跳转目标或数据提交地址。在浏览器访问一个URL之前,需要通过域名系统(DNS)服务将其中的人类可读域名解析为机器可读的IP地址。
3、URL的安全使用
在实际使用中,尤其是对于开发者而言,需要注意一些安全问题:
其一是HTTPS 的重要性。推荐在所有生产环境中强制使用HTTPS协议,以保证数据传输的加密和完整性。其二是防范常见漏洞。永远不要信任用户输入的URL。不当处理可能导致跨站脚本攻击(XSS) 或SQL注入等安全漏洞。在使用前务必进行安全过滤和验证。其三是敏感信息处理。避免在URL的查询参数中明文传输如密码、令牌等敏感信息,应使用POST请求体或采用加密手段。
综上,统一资源定位符(URL)不仅是网页地址那么简单,它背后有着严谨的技术原理和标准体系,是万维网赖以运行的基石之一。理解URL,能帮助我们更好地理解和使用整个互联网。
欲进一步了解IP地址构成的请进入。