HTTP协议 - 从URI开始

原文连接 blog

URI

URI, 既是统一资源标识符号,每个 Web 服务器都有一个 URI 标识符,它在世界范围内唯一标识并定位信息资源。

它具有两种形式,URN (统一资源名)、URL(统一资源定位符)。

URN

URN (统一资源名),是作为特定内容的唯一名称使用的,与目前资源所在地无关。使用这些与位置无关的 URN,就可以将资源四处搬移。通过 URN,还可以用同一个名字通过多种网络访问协议来访问资源。

URL

URL(统一资源定位符),是 URI 最常见的形式,它描述了一台特定服务器上某资源的特定位置。它们可以明确说明如何从一个精确、固定的位置获取资源。

一个完整的 URL 通常包括以下三部分:

  • 方案:方案部分,说明了 Web客户端 访问资源时所使用的协议类型。通常是HTTP协议。方案可以使用其他协议来访问资源,它们可以指向因特网上的任意资源,比如:E-mail: jkchaom@gmail.com ,或者其他协议。
  • 服务器位置:这部分告知服务器端的位置位于何处。通常的组成是“主机名 + 端口”的形式告知,也有“ IP 地址 + 端口”的形式。端口标识出服务器正在监听的网络端口,对下层使用了 TCP 协议的 HTTP 来说,默认端口号为80;
  • 资源路径:路径说明了请求的是服务器上哪个特定的本地资源。

整合到结构,既是“方案 :// 服务器位置/路径”

此外,一些非必需的 URL 组件也在其中扮演着非常重要的作用:

  • 查询:主要用来缩小所请求资源类型范围。通常以一个“ ?”,开始,比如以下URL 地址,www.baidu.com/s?ie=utf-8&… 。按照常规,查询组件的组成是以一系列的“名/值”,对的形式出现,名值对之间用字符“&”分隔。
  • 片段:有些资源类型,可以做进一步划分,比如 HTML ,URL 支持使用片段组件来表示一个资源内部的片段。通常以“#” 开始,比如:github.com/jkchao/blog…HTTP 服务器通常只处理整个对象,而不是对象的片段,客户端不能将片段传送给服务器,浏览器从服务器获得了整个资源之后,会根据片段来显示片段资源。 因此,片段组件,仅由客户端使用。

URL 的缺点

URL 表示的是实际的地址,而不是准确的名字。这就意味着 URL 会告诉你资源此时处于什么位置,它会为你提供特定端口上特定服务器的名字,告诉你在何处可以找到这个资源。这种方案的最大弊端在于,如果资源被移走了,URL 也就不再有效了。那时,它就无法对对象进行定位了。

永久统一资源定位符(PURL),是用 URL 实现 URN 功能的一个例子。其基本思路是在搜索资源的过程中引入另一个中间层,通过一个中间资源定位符服务器对资源的实际 URL 进行登记和跟踪,客户端可以向定位符请求一个永久 URL ,定位符可以以一个资源作为响应,将客户端重定向到资源当前实际 URL 上去。如下图所示:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏开源优测

渗透测试 - kali Linux

渗透测试操作系统 - kali 什么是kali Kali Linux是基于Debian的Linux发行版, 设计用于数字取证操作系统。 由Offensive S...

56140
来自专栏网商云

小白教程--centos7修改ssh远程端口

新账号关联我们公司购买腾讯云产品,有优惠哦!联系电话:13430587834(微信同号)

77040
来自专栏云计算教程系列

如何在Debian 9上安装最新的MySQL

MySQL是一个着名的开源数据库管理系统,用于存储和检索各种流行应用程序的数据。MySQL是LAMP堆栈中的M,是一组常用的开源软件,也包括Linux,Apac...

81520
来自专栏Python中文社区

Python开源项目介绍:用zmail简单地发邮件

发送邮件是个很简单的需求,但是在实际的使用中依然碰到了很多坑,因此创建了zmail这个项目,让你使用python发送邮件的过程尽可能简单。

16930
来自专栏cloudskyme

三步学会用spring开发OSGI——(第一步:环境篇)

Spring-DM是什么 Spring-DM 指的是Spring Dynamic Modules. dm Server 是一个完全模块化部署的,基于OSGi的J...

39160
来自专栏Debian社区

使用 tmate 分享你的终端会话

tmate 的意思是 teammates,它是 tmux 的一个分支,并且使用相同的配置信息(例如快捷键配置,配色方案等)。它是一个终端多路复用器,同时具有即时...

11530
来自专栏无题

分布式Session一致性解决方案

在分布式架构或微服务架构下,必须保证一个应用服务器上保存Session后,其它应用服务器可以同步或共享这个Session Web应用在单机部署的情况下,Ses...

45160
来自专栏桥路_大数据

Gradle打包问题Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0

2.5K40
来自专栏程序猿DD

Jenkins:配置信息变更历史

作者:sparkdev 出处:http://www.cnblogs.com/sparkdev/ 像 Jenkins 这样的系统,使用的过程就是配置文件变更的过程...

27950
来自专栏安恒信息

预警 | Struts2 REST插件存在远程代码执行漏洞(CVE-2017-9805)

漏洞描述 Struts2 是 Apache 软件基金会负责维护的一个基于MVC设计模式的 Web 应用框架开源项目。 Struts2的REST插件使用带有XSt...

381140

扫码关注云+社区

领取腾讯云代金券