URL包含几个部分
- 协议
- 域名或IP
- 端口号
- 路径
- 查询参数
- 锚点
1. 协议
协议(protocol)。我们一般使用的都是HTTP协议和HTTPS协议。协议是为了使数据在网络上从源到达目的,网络通信的参与方必须遵循相同的规则。
HTTP与HTTPS的区别:
HTTP是Hyper Text Transfer Protocol(超文本传输协议)
HTTPS是Hyper Text Transfer Protocol over SecureSocket Layer(超文本传输安全协议)
HTTP协议和HTTPS协议之间的区别是:传输信息安全性不同、连接方式不同、端口不同、证书申请方式不同。
一、传输信息安全性不同:
- HTTP协议是超文本传输协议,信息传递是明文传输的,如果攻击者截取了浏览器和服务器之间的传输报文,就可以直接获取其中的信息,从而篡改、删减报文,达到其目的。
- HTTPS协议是超文本传输安全协议,是具有安全性的加密ssl加密传输协议。为浏览器和服务器之间的通信加密,确保数据传输的安全。
二、连接方式不同。
- HTTP协议:HTTP连接很简单,就是无状态。
- HTTPS协议:是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。
三、端口不同
- HTTP协议:80端口。
- HTTPS协议:443端口。
四、证书申请方式不同:
- HTTP协议:免费申请
- HTTPS协议:需要使用CA证书,一般都需要交费,免费的很少。
2.1 IP
IP就是网络协议。 它的作用就是:
- 如何定位一台设备
- 如何封装数据报文,以跟其他设备交流
2.2 域名
域名就是IP的别称。域名分为:
- 顶级域名,比如com;
- 二级域名(俗称一级域名),比如baidu.com;
- 三级域名(俗称二级域名),比如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可以看到整个访问过程是:
- URL被curl命令重写,先请求DNS,获得IP
- 进行TCP连接
- 成功之后,发送HTTP请求
- 服务器响应
- 响应结束,关闭TCP连接
- 真正结束
3. 端口号
端口是什么?——一台机器可以提供很多服务,每个服务一个号码,这个号码就是端口号port。 常用的,比如:
- HTTP——80端口
- HTTPS——443端口
- FTP——21端口 现在一共有65535个端口,基本能满足需求。其他服务对应的是什么端口号,可以查维基百科。
端口号的规则:
- 0-1023是留给系统使用的,如果要使用需要有管理员权限,但是不建议使用。
- 其他的都是可以给普通用户使用的,可以随便时候。我们一般使用http-server的时候就是试用版的8080端口。
- 一旦一个端口被占用就无法使用了,只能更换一个端口。
- 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) 改变#号之后的内容就会看到不同的位置。
注意点:
- 锚点看起来是有中文的,但是实际上是不支持中文的,如果复制URL之后,就会把中文显示一串字符串,就是上面例子中括号里面的。
- 锚点是无法在Network面板看到的,因为锚点不会传到服务器,#和锚点都会被浏览器阻拦。
总结一下
URL:统一资源定位符,英文为:Uniform Resource Locator。由协议、域名或IP、端口号、路径、查询参数、锚点构成。