【网络】HTTP 协议中 URI 和 URL 有什么区别?

article/2025/10/2 14:57:41

HTTP定义

超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出

HTTP是用于分布式、协作式和超媒体信息系统的应用层协议,是因特网上应用最为广泛的一种网络传输协议,所有的 WWW 文件都必须遵守这个标准。

HTTP基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

更多内容可参考 菜鸟教程HTTP

URI 和URL定义

URL:(Uniform/Universal Resource Locator 的缩写,统一资源定位符)。
URI:(Uniform Resource Identifier 的缩写,统一资源标识符)(代表一种标准)。

与之相关的还有一种定义:URN = Uniform Resource Name 统一资源名称

关系:
URI 属于 URL 更高层次的抽象,一种字符串文本标准。
就是说,URI 属于父类,而 URL 属于 URI 的子类。URL 是 URI 的一个子集。
二者的区别在于,URI 表示一种标准来定义一个资源。
而 URL 怎么去实现这个标准,同时说明要如何访问这个资源(http://)。

如下图,通过各种协议去访问资源
(图片来自https://www.cnblogs.com/diandianquanquan/p/10606938.html)
在这里插入图片描述

浏览器地址栏里访问网站的地址认为是URL就好了,也就是以HTTP/HTTPS开头的URI子集。

知乎高赞回答如此大白话:

URI是抽象的定义,不管用什么方法表示,只要能定位一个资源,就叫URI,本来设想的的使用两种方法定位:
1,URL,用地址定位;
2,URN ,用名称定位。
举个例子:去村子找个具体的人(URI),如果用地址:某村多少号房子第几间房的主人 就是URL, 如果用身份证号+名字去找就是URN了。结果就是 目前WEB上就URL流行开了,平常见的URI 基本都是URL。

URL 标准格式

scheme://host[:port#]/path/.../[;url-params][?query-string][#anchor]
scheme //有我们很熟悉的http、https、ftp以及著名的ed2k,迅雷的thunder等。
host   //HTTP服务器的IP地址或者域名
port#  //HTTP服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明,例如tomcat的默认端口是8080 http://localhost:8080/
path   //访问资源的路径
url-params  //所带参数 
query-string    //发送给http服务器的数据
anchor //锚点定位

Java中的URI和URL

Java里面的注释定义

A URI is a uniform resource identifier while a URL is a uniform
resource locator. Hence every URL is a URI, abstractly speaking, but
not every URI is a URL. This is because there is another subcategory
of URIs, uniform resource names (URNs), which name resources but do
not specify how to locate them. The mailto, news, and isbn URIs shown
above are examples of URNs.

翻译过来就是

URI 是统一资源标识符,而 URL 是统一资源定位符。 因此,抽象地说,每个 URL 都是一个 URI,但并不是每个 URI 都是一个URL。 这是因为有另一个 URI 子类别,统一资源名称(URN),它命名资源但不指定如何定位它们

但是在Java的实现里面并没有URI和URL的继承关系啥的,他们两个都是final类

public final class URI implements Comparable<URI>, Serializable
public final class URL implements java.io.Serializable

URI类中提供了转换到URL的方法

    public URL toURL()throws MalformedURLException {if (!isAbsolute())throw new IllegalArgumentException("URI is not absolute");return new URL(toString());}

URL类同样也提供了转换到URI的方法

    public URI toURI() throws URISyntaxException {URI uri = new URI(toString());if (authority != null && isBuiltinStreamHandler(handler)) {String s = IPAddressUtil.checkAuthority(this);if (s != null) throw new URISyntaxException(authority, s);}return uri;}

Java中对URI和URL的操作

public class UriAndUrl {public static void urlTest(String str) throws Exception{URL url = new URL(str);System.out.println("URL:                  " + url.toString());System.out.println("protocol:        " + url.getProtocol());System.out.println("Authority:      " + url.getAuthority());System.out.println("file name:      " + url.getFile());System.out.println("host:                " + url.getHost());System.out.println("path:                " + url.getPath());System.out.println("port:                " + url.getPort());System.out.println("default port:" + url.getDefaultPort());System.out.println("query:              " + url.getQuery());System.out.println("ref:                  " + url.getRef());}public static void uriTest(String str) throws Exception{URI uri = new URI(str);System.out.println("URI:                  " + uri.toString());System.out.println("scheme             : " + uri.getScheme());System.out.println("SchemeSpecificPart : " + uri.getSchemeSpecificPart());System.out.println("Authority          : " + uri.getAuthority());System.out.println("host               : " + uri.getHost());System.out.println("port               : " + uri.getPort());System.out.println("path               : " + uri.getPath());System.out.println("query              : "  + uri.getQuery());System.out.println("fragment           : " + uri.getFragment());}public static void main(String[] args) throws Exception {String str = "https://blog.csdn.net/qq_37774171/article/details/122539833?spm=1001.2014.3001.5501";System.out.printf("---------------------------------------\n");UriAndUrl.uriTest(str);System.out.printf("---------------------------------------\n");UriAndUrl.urlTest(str);}}

输出结果
在这里插入图片描述

References:

  • https://www.cnblogs.com/diandianquanquan/p/10606938.html
  • https://www.zhihu.com/question/21950864
  • https://www.zhihu.com/question/21950864/answer/158161453
  • https://baike.baidu.com/item/HTTP/243074?fr=aladdin
  • https://www.runoob.com/http/http-tutorial.html

(写博客主要是对自己学习的归纳整理,资料大部分来源于书籍、网络资料和自己的实践,整理不易,但是难免有不足之处,如有错误,请大家评论区批评指正。同时感谢广大博主和广大作者辛苦整理出来的资源和分享的知识。)


http://chatgpt.dhexx.cn/article/HiIF9c0y.shtml

相关文章

LRU缓存机制,你想知道的这里都有

概述 LRU是Least Recently Used的缩写&#xff0c;译为最近最少使用。它的理论基础为 “最近使用的数据会在未来一段时期内仍然被使用&#xff0c;已经很久没有使用的数据大概率在未来很长一段时间仍然不会被使用” 由于该思想非常契合业务场景 &#xff0c;并且可以解决很多实…

LRU简单实现-了解一下

LRU 算法 LRU 是一种作为缓存的算法&#xff0c;像 CPU 缓存&#xff0c;数据库缓存&#xff0c;浏览器缓存。以及在移动端开发时的图片安缓存&#xff0c;采用 LRU 缓存策略的应用很广泛。在面试中也是常常考察的一个点。当然也有其他缓存方法&#xff0c;常见的策略有三种&a…

数据分析:RFM模型

补充&#xff1a; RFM分析方法&#xff1a;如何对用户按价值分类 深入解读和应用RFM分析方法(模型) 深入解读RFM模型-实战应用干货 转载自&#xff1a; 接地气的陈老师|作者 接地气学堂|来源&#xff1a;https://mp.weixin.qq.com/s/00vJPb9xqx4NL5Y5cPDXsw 问他咋做数据分…

数据分析之RFM模型

一.均值 RFM模型算法 从csv文件中读取相应的数据 datapd.read_csv(./dataset.csv,encodingISO-8859-1)#读取2014年的客户信息 data_14data[data[Order-year]2014] data_142.获取相应的列 data_14 data_14[[CustomerID,OrderDate,Sales]] data_14 CustomerID为用户id OrderD…

【数据分析】基于RFM模型的线上零售中的客户细分(二):RFM模型实战

基于RFM模型的线上零售中的客户细分&#xff08;二&#xff09; 摘要&#xff1a;在上一篇博客《基于RFM模型的线上零售中的客户细分&#xff08;一&#xff09;&#xff1a;客户细分》中&#xff0c;我们了解了什么是客户细分&#xff0c;这篇博客将会结合具体的商业实例介绍同…

数据分析 一文搞懂什么是RFM模型

数据分析 | 一文搞懂什么是RFM模型 想知道你在电商平台心里的地位吗&#xff1f;学会RFM分析法&#xff0c;你自然知道 大家好&#xff0c;我是翔宇&#xff01;今天我们来了解做数据分析一定要会的分析方法之一----RFM分析法。 相信大家在前天的双十一一定也多多少少贡献了…

RFM模型原理详解与实操运用

RFM模型原理详解与实操运用 RFM模型原理介绍为什么要使用RFM模型RMF模型原理介绍RFM模型用户细分 RFM模型实例操作背景/数据介绍RFM模型异化构建代码实现 最近在 运营课程中学习了RFM模型&#xff0c;又正正好在 商务智能的课程中学习了使用K-Means聚类分析实现RFM的操作。 …

如何利用RFM分析模型进行数据分析?

RFM模型 RFM主要根据客户活跃程度和平台交易金额贡献所做的分类。 近度&#xff1a;用字母R表示&#xff0c;代表客户最近一次的活跃距离目前的天数。在这部分客户中&#xff0c;有些优质客户值得通过一定的营销手段进行激活。 频度&#xff1a;用字母F表示&#xff0c;代表…

对RFM模型的理解

客户价值可以衡量客户对企业的相对重要性&#xff0c;是企业进行差异化决策的重要标准。 由此&#xff0c;通过客户价值分类可以为企业进行差异化营销策略奠定基础。 RFM模型对客户价值分类时非常简单的一种模型 以下从几大模块说一下个人对RFM模型的理解。 1.RFM模型是什么 …

RFM分析方法

RFM分析方法 RFM分析方法RFM指标介绍RFM指标作用如何使用RFM分析方法如何精细化运营 如何给R、F、M打分-采用数据分组确定分组的范围和标准利用VLOOKUP匹配函数函数 RFM分析方法 RFM指标介绍 R:最近一次消费时间间隔&#xff08;Recency&#xff09; R越小用户价值越高F:消费…

用户行为分析模型——RFM模型

用户行为分析模型——RFM模型 1. RFM模型2. RFM模型分析应用 1. RFM模型 RFM模型根据客户活跃程度和交易金额的贡献&#xff0c;进行客户价值细分的一种方法。 R&#xff08;Recency&#xff09;——最近一次交易时间间隔。基于最近一次交易日期计算的得分&#xff0c;距离当前…

客户价值模型:RFM

文章目录 1.1、RFM 模型引入1.1.1、RFM 模型介绍1.1.1.1、一般情况下RFM模型可以说明下列几个事实&#xff1a;1.1.1.2、对最近一个月内所有用户订单数据进行统计RFM值&#xff1a; 1.1.2、RFM 模型的三个指标&#xff1a;1.1.2.1、R&#xff1a;最近一次消费&#xff08;recen…

RFM分析(Recency,Frequency,Monetary)

通过RFM方法&#xff0c;我们根据用户的属性数据分析&#xff0c;对用户进行了归类。在推送、转化等很多过程中&#xff0c;可以更加精准化&#xff0c;不至于出现用户反感的情景&#xff0c;更重要的是&#xff0c;对产品转化等商业价值也有很大的帮助。 应用背景&#xff1a;…

R语言 RFM分析

目录 一、RFM分析的定义&#xff1a; 二、RFM分析的假设 三、RFM分析的步骤 四、RMF分析实例 4.1 数据准备 4.2 计算R/F/M 4.3 将R、F、M分组打分赋值 4.4 计算RFM综合分值 4.5 客户分类 4.6 完整代码 注&#xff1a;个人学习笔记--谁说菜鸟不会数据分析 R语言篇 一、…

[数据分析] RFM分析方法

美图欣赏2022/06/08 RFM分析方法 作用:对用户分类&#xff0c;识别出有价值的用户&#xff0c;对不同价值的用户使用不同的运营决策&#xff0c;把公司有限的资源发挥到最大的效果(用于用户价值细分&#xff0c;精细化运营) RFM是3个指标的缩写:最近1次消费时间间隔(Recency)…

深入解读RFM模型-实战应用干货

今天想先谈谈传统企业和电商谈的较多的RFM模型&#xff0c;在众多的客户细分模型中&#xff0c;RFM模型是被广泛提到和使用的。 一、RFM模型概述 RFM模型是网点衡量当前用户价值和客户潜在价值的重要工具和手段。RFM是Rencency&#xff08;最近一次消费&#xff09;&#xff…

如何进行有效的RFM模型搭建和分析?

“ RFM分析&#xff0c;是用户精细化运营中比较常见的分析方法了。” 今天和大家分享一篇历史文章&#xff0c;内容做了微调。是数据分析中比较常用的一个分析框架&#xff1a;RFM分析。该模型用的很多&#xff0c;说明有模型自身的优势&#xff1b;但同时也存在很多的问题。今…

概念+实战讲解,一文带你了解RFM模型【kaggle项目实战分享】数据分析

大家早上好&#xff0c;本人姓吴&#xff0c;如果觉得文章写得还行的话也可以叫我吴老师。欢迎大家跟我一起走进数据分析的世界&#xff0c;一起学习&#xff01; 感兴趣的朋友可以关注我或者我的数据分析专栏&#xff0c;里面有许多优质的文章跟大家分享哦。 &#xff08;有需…

三线性插值(三维线性插值)

三线性插值&#xff08;trilinear interpolation&#xff09;主要是用于在一个3D的立方体中&#xff0c;通过给定顶点的数值然后计算立方体中其他点的数值的线性插值方法。 具体推导过程见参考资料1&#xff0c;这里直接给出最终公式&#xff1a; 其中&#xff0c;坐标(x,y,z…

快速三线性插值

转载自https://lianera.github.io/post/2018/fast-trilinear-interpolation/ 快速三线性插值 最近需要对一个体素进行插值&#xff0c;并且应用到一张大图像上。这个本来用三线性插值很容易就实现了&#xff0c;但是体素的尺寸很小&#xff0c;长宽高大概20x15x10的大小&#x…