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

      最后更新:2022-01-19 17:20:43 手机定位技术交流文章

      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 标准格式

      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类

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

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

      Java中对URI和URL的操作

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

      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

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

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/16857.html

          热门文章

          文章分类