HTTP协议——URL

原文链接: https://blog.csdn.net/vikeyyyy/article/details/80596988

文章目录

  • ip地址、域名、DNS、URL(网址)
  • URL详解
      • 1. URL格式
      • 2. URL组成部分介绍
          • 方案
          • 主机和端口
          • 用户名和密码
          • 路径
          • 参数
            • 查询字符串
          • 片段
      • 3. URL快捷方式
          • 3.1 相对URL
          • 基础URL
          • 解析相对引用
          • 自动拓展URL
      • 4. URL字符集
          • URL字符集
          • 编码机制
          • 字符限制

ip地址、域名、DNS、URL(网址)

  1. IP地址:每个连接到Internet上的主机都会分配一个IP地址,IP地址是用来唯一标识互联网上计算机的逻辑地址,机器之间的访问就是通过IP地址来进行的。IP地址采用二进制的形式表示的话很长,比较麻烦,为了便于使用,IP地址经常被写成十进制的形式,用“.”分开,叫做“点分十进制表示法”,如:127.0.0.1。

  2. 域名:IP地址毕竟是数字标识,使用时不好记忆和书写,因此在IP地址的基础上又发展出一种符号化的地址方案,来代替数字型的IP地址。每一个符号化的地址都与特定的IP地址对应。这个与网络上的数字型IP地址相对应的字符型地址,就被称为域名。目前域名已经成为互联网品牌、网上商标保护必备的要素之一,除了识别功能外,还有引导、宣传等作用。如:www.hstc.edn.cn。

  3. DNS:在Internet上域名与IP地址之间是一对一(或者多对一)的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。域名的最终指向是IP。

  4. URL:统一资源定位符(英语UniformResourceLocator的缩写)俗称为网址,网址格式为:<协议>://<域名或IP>:<端口>/<路径>。<协议>://<域名或IP>是必需的,<端口>/<路径>有时可省略。如:https://www.baidu.com/

URL详解

URL 是一种 URI,它标识一个互联网资源,并指定对其进行操作或获取该资源的方法。可能通过对主要访问手段的描述,也可能通过网络“位置”进行标识。

大部分URL遵循一种标准格式,该格式包含三个部分:

  • 第一部分:方案,方案告知Web客户端怎样访问资源

  • 第二部分:服务器的位置,告知Web客户端资源位于何处。

  • 第三部分:指定服务器上某个资源,说明了请求的是服务器上的哪个特定的资源。

1. URL格式

大多数URL协的语法都建立在下面9个部分构成的通用格式上:
://:@:/;?#
其中最重要的3个部分是:方案(scheme)主机(host)路径(path)

2. URL组成部分介绍

HTTP协议——URL_第1张图片

方案

规定如何访问指定资源的主要标识符,它会告诉负责解析URL的应用程序应该使用搞什么协议。
方案组件必须以一个字母符号开始,由第一个“:”符号将其与URL其余部分分隔开来。(方案名大小写不敏感)

主机和端口

URL的主机和端口组件告诉应用程序要从哪台机器装在资源,以及在哪台机器的什么地方可以找到对目标资源进行访问的服务器。
主机组件标识了往上能访问资源的宿主机器。可用主机名或者IP地址来表示主机名。
端口组件标识了服务器正在监听的网络端口。

用户名和密码

很多服务器要求输入用户名和密码才会允许用户访问数据,如FTP。

如果某个应用程序使用的URL协议要求输入用户名密码,但用户没有提供,通常会插入一个默认的用户名和密码。如ftp://ftp.prep.ai.mit.edu/pub/gnu,指定了一个用户名anonymous,与主机组合在一起,看起来像一个email地址一样;字符@将用户名和密码组件与其他部分分隔开来,ftp://anonymous:my_password@ftp://ftp.prep.ai.mit.edu/pub/gnu指定了用户名和密码,两者之间由字符隔开。

路径

URL的路径组件说明了资源位于服务器的什么地方。路径通常很像一个分级的文件系统路径。路径是服务器定位资源所需的信息,可以用“/”将http URL中的路径组件划分为一些路径段(path segment),每个路径段都有自己的参数字段。

参数

对很多协议来说,只有简单的主机名和到达对象路径的是不够的,除了端口和用户名密码,还需要更多的内容才可以访问有些负责解析URL的应用程序需要协议参数才能工作;否则服务器不会提供服务,或者提供错误的服务,比如ftp协议有两种传输方式:二进制和文本。如果用文本形式传送二进制图片,结果很难预料有多糟糕.参数组件是URL中的名值队列表,由;将其与其他部分分隔开,比如ftp://ftp.prep.ai.mit.edu/pub/gnu;type=d参数为type=d,其中参数名为type,值为d

查询字符串

在我们发送请求时,很多的资源,比如数据库服务,都可以通过查询来缩小请求资源的类型范围,例如
http://www.joes-hardware.com/inventoty-check.cgi?itcm-12731 问号(?)右边的内容就是这个URL的查询组件。URL的查询组件和标识网关资源的URL路径组件一起被发送给网关资源。可以将网关当做访问其他应用程序的访问点

片段

有些资源类型,比如HTML,除了资源级意外,还可以进一步划分,比如一个带有章节的大型文本文档,资源的URL会指向整个文档,但理想情况,可以指向资源中的章节为了方便引用,URL允许使用片段(frag)组件来表示资源内的一个片段,片段挂在URL右边,最前面有一个字符“#”,比如:http://www.joes-hardware.comtools.html#drills这个例子中,片段引用了joes-hardwareweb服务器上页面/tools.html中的一个部分,这部分名字叫drills。

3. URL快捷方式

Web客户端可以理解并使用几种URL快捷方式。相对URL是在某资源内部指定一个资源的便捷略所方式。很多浏览器支持自动拓展,用户输入URL的关键部分,然后由浏览器将其余部分填充。

3.1 相对URL

URL有绝对URL相对URL两种方式。绝对URL里包含有访问资源所需的全部信息;相对URL是不完整的,要从相对URL中获取访问资源所需的全部信息,就必须相对另一个被称为基础的URL进行解析。相对URL是URL的一种便捷缩略记法。
例如在http://www.joes-hardware.com/tools.html的html文档中,包含一个URL ./hammers.html的超链接,这个URL看似不完整,但实际是合法的相对URL。这个URL是相对于它所在的文档的URL来进行解析的。
使用缩略形式的相对URL语法,HTML的编写就可以省略URL中的方案、主机等组件。这些组件都可以从他们所属资源的基础URL推算出来。
下图说明了如何从基础URL中推导出缺失的组件信息
HTTP协议——URL_第2张图片

相对URL只是URL的片段或一小部分,处理URL的应用程序需要在相对和决定URL之间进行转换。相对URL为了保持一组资源(HTML页面)的便捷性提供了一种便捷方式,如果使用相对URL,可以在搬移一组文档时,仍保持链接的有效性;因为相对URL是相对于新基础进行解释的,类似于在其他服务器提供镜像内容等功能。

基础URL

转换处理的第一步就是找到基础URL,基础URL是作为相对URL的参考点使用的。基础URL可以来自以下几个地方:
(1)在字眼中显示提供:有些资源会显示地指定基础URL。
(2)封装资源的基础URL:在一个没有显示指定基础URL的资源中发现了一个相对URL,则可以将它所属资源的URL作为基础。
(3)没有基础URL:如果没有基础URL,则证明这个相对URL是一个不完整的或者损坏了的URL。

解析相对引用

解析:要将相对URL转换为一个绝对URL,需要将相对URL和绝对URL划分成组件段,这样,实际上只是在解析URL,但这种做法会将其划分为一个个组件,可以称之为解析/分解URL

将基础和相对URL划分成组件,可以下用下图的算法来完成转换
HTTP协议——URL_第3张图片
这个算法将一个相对URL转换成了其绝对模式,之后,就可以用其引用资源。

自动拓展URL

很多浏览器会在用户提交URL/输入URL时尝试自动扩展URL,这样为用户提供便捷,用户不需要输入完整的URL,浏览器自动扩展
自动扩展特性有以下2种方式:
(1)主机名扩展:在主机名扩展中,只要有些小提示,浏览器通常就可以在没有帮助的情况下,将你输入的主机名扩展为完整的主机名。
(2)历史扩展:将以前用户访问过的URL记录储存起来,当用户输入URL时将其与历史记录中的URL前缀进行匹配,并提供一些完整的选项供用户选择PS:与代理一起使用时,URL自动扩展的行为可能有所不同,后面详细解释

4. URL字符集

URL是可移植的:因为URL要统一地命名因特网上的所有资源,而不同的协议在传输数据时都会使用不同的机制,因此URL可以通过任意因特网协议安全地传输是很重要的。
URL是可读的:因此,即使不可见、不可打印的字符能够穿越邮件程序,从而成为可移植的,也不能在URL中使用。
URL是完整的:有时候人们会希望URL中包含除通用的安全字母表之外的二进制数据或字符。因此需要一种转移机制,能够将不安全的字符编码为安全字符,再进行传输。

URL字符集

很多计算机应用程序使用的是US-ASCII字符集,使用7位二进制来表示英文大机子提供的大多数按键和少数用于文本格式和硬件通知的不可打印控制字符。US-ASCII可移植性很好,但是不支持数百种非罗马语言中常见的变体字符。
因此引入了转义序列集,通过转义序列,就可以用US-ASCII字符集的有限自己对任意自复制或数据进行编码了,这样实现了可移植性和完整性。

编码机制

为了避开安全字符集带来的限制,人们设计了“转义”表示法来表示不安全字符,其中包含一个百分号(%),后面跟2个表示字符ASCII码的十六进制数。例如,~符号转义成%7E,%符号转义成%25,=符号转义成%3D。

字符限制

在URL中,有几个字符被保留下来,有特殊意义,不建议使用。如果要用于保留用途以外的场景时,要在URL中对其进行编码。

HTTP协议——URL_第4张图片

参考:

  1. ip地址、域名、DNS、URL(网址)
  2. HTTP协议——URL

你可能感兴趣的:(网站建设)