简述URL

在说 URL 之前,我们得需要先知道什么是 URI(Uniform Resource Identifier),统一资源标志符。URI 简单地说就是如何把一个资源唯一地标识出来

假如我们要标识出某一个人,可以通过名字的方式(假设每个人的名字都不一样),也能通过身份证的方式,那么这里的名字、身份证号码等是直接匹配到的,称为 URN(Uniform Resource Name)。

除了直接匹配的方法,我们还能够通过一系列规则来标识出一个人,比如——地址://中国/浙江省/杭州市/西湖区/某某街道/某某号/张三;或者——族谱://爷爷张三/爸爸李四/儿子王五,这些规则,就是 URL(Uniform Resource Locator),统一资源定位器。

而 URL、URN 都属于 URI。

回到我们的网络世界,URL 就是我们口头上的网址,通过一系列规则,能够唯一匹配到相应的资源。接来下就简单地说一说这些规则,说一说为什么一串字符能够在全世界的因特网范围内,唯一地匹配到唯一的资源。

首先,URL 包含以下几个部分,其中有五个是基本元素

  • 1、传输协议。(如http:、https:)
  • 2、层级URL标记符号。(固定为 "//" )
  • 访问资源需要的凭证信息。(可省略)
  • 3、服务器。(域名或IP地址)
  • 4、端口号。(以数字方式表示)
  • 5、路径。(以"/"字符区别路径中的每一个目录名称)
  • 查询。(GET模式的窗体参数,以"?"字符为起点,每个参数以"&"隔开,再以"="分开参数名称与数据)
  • 片段。(以“#”字符为起点)

URL 的标准格式为:
协议类型:[//服务器地址[:端口号]][/资源层级UNIX文件路径]文件名[?查询][#片段ID]
URL 的完整格式为:
协议类型:[//[访问资源需要的凭证信息@]服务器地址[:端口号]][/资源层级UNIX文件路径]文件名[?查询][#片段ID]

比如以下这几个 URL :
https://www.baidu.com/s?ie=UTF8&wd=HTTP
http://192.168.0.1:8080/test/index.html

第一部分是传输协议,如http:、https:,还有ftp:、file: 等等
第二部分是标记符号 "//"
第三部分是服务器,以 IP 地址或域名表示,其实域名就是通过 DNS 解析到相应的主机 IP 上去的,以实现用域名表示 IP ,比如192.168.0.1不好记且麻烦,但是mu-mu.cn就很好记。
第四部分是端口,默认 http 的端口为80,https的端口为443,别的则要自己手动添加。
第五部分是路径,即资源的在服务器上的位置,用 "/" 隔开。

除了以上的五个基本元素,还有三个可额外添加以实现别的功能。

1、访问资源需要的凭证信息:这个会在 ftp 中见到,如:ftp://username:@host.com 表示用户名为username,密码为空。

2、查询:这个在 GET 请求中会出现,GET 请求的数据就是在 URL 中发送的,通过 "?" 分割 URL 和数据,通过 "=" 表示数据的键值对,通过 "&" 连接多个数据,
如:https://www.baidu.com/s?ie=UTF8&wd=HTTP

3、片段:片段是通过 "#" 符号来实现的,#(Hash)代表网页中的一个位置。其右面的字符,就是该位置的标识符。
比如:http://www.example.com/index.html#print,就代表网页index.html的print位置。浏览器读取这个URL后,会自动将print位置滚动至可视区域。
为网页位置指定标识符,有两个方法。一是使用锚点,比如<a name="print"></a>,二是使用id属性,比如<div id="print" >。
用过 React 中的 HashRouter 的话应该对 # 并不陌生了。

以上就是 URL 的简单组成了,当然浏览器通过用户输入的 URL 到返回给我们资源这个过程是十分复杂的,涉及到多个协议、OSI七层模型、TCP/IP五层模型(又称四层)、三次握手、四次挥手等等内容,以后有机会再讲吧!

另外,如果你有兴趣,或者是有问题想要与我探讨,欢迎来访问我的博客:https:mu-mu.cn/blog

猜你喜欢

转载自blog.csdn.net/weixin_43844995/article/details/107694138
URL