《浅析URL》

298 阅读5分钟

URL包含几个部分

  1. 协议
  2. 域名或IP
  3. 端口号
  4. 路径
  5. 查询参数
  6. 锚点

1. 协议

协议(protocol)。我们一般使用的都是HTTP协议和HTTPS协议。协议是为了使数据在网络上从源到达目的,网络通信的参与方必须遵循相同的规则。

HTTP与HTTPS的区别:

HTTP是Hyper Text Transfer Protocol(超文本传输协议)

HTTPS是Hyper Text Transfer Protocol over SecureSocket Layer(超文本传输安全协议)

HTTP协议和HTTPS协议之间的区别是:传输信息安全性不同、连接方式不同、端口不同、证书申请方式不同。

一、传输信息安全性不同:

  1. HTTP协议是超文本传输协议,信息传递是明文传输的,如果攻击者截取了浏览器和服务器之间的传输报文,就可以直接获取其中的信息,从而篡改、删减报文,达到其目的。
  2. HTTPS协议是超文本传输安全协议,是具有安全性的加密ssl加密传输协议。为浏览器和服务器之间的通信加密,确保数据传输的安全。

二、连接方式不同。

  1. HTTP协议:HTTP连接很简单,就是无状态。
  2. HTTPS协议:是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。

三、端口不同

  1. HTTP协议:80端口。
  2. HTTPS协议:443端口。

四、证书申请方式不同:

  1. HTTP协议:免费申请
  2. HTTPS协议:需要使用CA证书,一般都需要交费,免费的很少。

2.1 IP

IP就是网络协议。 它的作用就是:

  • 如何定位一台设备
  • 如何封装数据报文,以跟其他设备交流

2.2 域名

域名就是IP的别称。域名分为:

  1. 顶级域名,比如com;
  2. 二级域名(俗称一级域名),比如baidu.com;
  3. 三级域名(俗称二级域名),比如www.baidu.com

如何知道一个域名的IP呢?最简单的方法就是ping一下。例如:在cmd里面ping一下baidu.com 就会得到baidu.com的IP。

一个域名可以对应不同的IP。这个叫做负载均衡,是一种服务器优化的技术,为了防止访问的人数过多,服务器承受不住。

一个IP也可以对应有不同的域名。这叫做共享主机,一般都是比较穷一点的开发者会使用。

2.2.1 DNS

域名与IP之间是靠DNS来连接的。当你充钱买了电信的服务是,电信会送一个DNS服务器的地址,当你要访问一个网站是,浏览器就会先向电信的DNS服务器询问这个域名对应的IP,浏览器在根据IP的对应的80/443端口发送请求,所请求的内容就是你要访问的网站的页面。可以在浏览器的开发者工具的Network面板参看网络访问的全过程。

2.2.2 curl命令

除了使用浏览器参看访问的全过程之外,还可以使用curl命令来找到询问DNS服务对应的IP。使用curl -v www.baidu.com 也可以看到全过程,而且更加清楚。使用curl可以看到整个访问过程是:

  1. URL被curl命令重写,先请求DNS,获得IP
  2. 进行TCP连接
  3. 成功之后,发送HTTP请求
  4. 服务器响应
  5. 响应结束,关闭TCP连接
  6. 真正结束

3. 端口号

端口是什么?——一台机器可以提供很多服务,每个服务一个号码,这个号码就是端口号port。 常用的,比如:

  1. HTTP——80端口
  2. HTTPS——443端口
  3. FTP——21端口 现在一共有65535个端口,基本能满足需求。其他服务对应的是什么端口号,可以查维基百科。

端口号的规则:

  1. 0-1023是留给系统使用的,如果要使用需要有管理员权限,但是不建议使用。
  2. 其他的都是可以给普通用户使用的,可以随便时候。我们一般使用http-server的时候就是试用版的8080端口。
  3. 一旦一个端口被占用就无法使用了,只能更换一个端口。
  4. IP和端口是缺一不可的。

4. 路径

路径的作用:如果你要请求不同的页面,就可以使用路径来实现。举个栗子:developer.mozilla.org/zh-CN/docs/… 其中/zh-CN/docs/Web/HTML就是路径,说明你请求的是中文文档中的web内容中的HTML内容。

developer.mozilla.org/zh-CN/docs/… 改一下,将HTML改为CSS,就会转到CSS的内容了。

使用路径就可以实现请求不同的页面。

5. 查询参数

查询参数的作用:实现同一个页面,不同的内容;例如搜索页面: www.baidu.com/s?wd=协议 搜索“协议” /s是路径,后面的?wd=协议 就是查询参数。

www.baidu.com/s?wd=IP 改变一下查询参数,就能出现不同的页面。

6. 锚点

锚点的作用:实现同一个内容的不同位置。例如在MDN的CSS页面内容中,想看教程或者参考书:

developer.mozilla.org/zh-CN/docs/… (%E6%95%99%E7%A8%8B) #号后面的教程就是锚点。

developer.mozilla.org/zh-CN/docs/… (%E5%8F%82%E8%80%83%E4%B9%A6) 改变#号之后的内容就会看到不同的位置。

注意点:

  1. 锚点看起来是有中文的,但是实际上是不支持中文的,如果复制URL之后,就会把中文显示一串字符串,就是上面例子中括号里面的。
  2. 锚点是无法在Network面板看到的,因为锚点不会传到服务器,#和锚点都会被浏览器阻拦。

总结一下

URL:统一资源定位符,英文为:Uniform Resource Locator。由协议、域名或IP、端口号、路径、查询参数、锚点构成。