什么是URL?
首先我们先想想,为什么需要URL?
在李爵士发明的WWW里,WWW是由URL+HTTP+HTML组成的。
URL学名统一资源定位符,应该是这样子的一串东西:www.baidu.com/s?wd=hellow…
实际上,一个URL是由好几个部分组成的,我们拆分一下
【①https】://【②www.baidu.com】【③/s?】【④wd=hellow&rsv_spt=1】【⑤#5】
- 协议
- 域名
- 路径
- 查询参数
- 锚点
我们平时浏览一个网页,需要使用浏览器,然后通过URL来获取网页的所有信息并展示出来。
HTTP协议
-
全称:HyperText Transfer Protocol
-
译作:超文本传输协议
-
作用: 约定一个发送请求和接受相应的协议
域名
-
域名是什么?qq.com
-
域名就是对IP的别称
-
baidu.com 对应什么IP ping baidu.com
-
qq.com 对应什么IP ping qq.com
-
知识点
- 一个域名可以对应不同IP
- 这个叫做均衡负载,防止一台机器扛不住
- 一个IP可以对应不同域名
- 这个叫做共享主机,穷开发者会这么做
IP
Internet Protocal
主要约定了两件事:
- 如何定位一台设备
- 如何封装数据报文,以跟其他设备交流,具体内容我们不关心
只要你在互联网中,你就有至少一个独特的IP
- IP分为内网和外网
- 外网:电信DNS服务器,电信其他用户(百度,腾讯等)
- 分界线:路由器
- 内网:玩电脑的你,玩手机的你
外网IP
- 从电信租用带宽(并且拥有了猫,猫负责转换成路由器能理解的信号)
- 你买了一个路由器,然后用电脑和手机分别连接路由器广播出来的无线wifi
- 只要路由器脸上电信的服务器,那么路由器就会有一个【外网IP】,比如【14.17.32.211】就是一个外网IP。这就是你在互联网中的地址。
- 但是如果你重启路由器,那么你很有【可能】被重新分配一个【外网IP】,也就是说你的路由器没有【固定的外网IP】
- 但是有个问题,你的路由器的外网IP如果是14.17.32.211,那么你的搜集和电脑的IP又是什么呢?答案是【内网IP】
内网IP
- 路由器会在你家里创建一个内网,内网中的设备使用内网IP,一般来说这个IP的格式都是 192.168.xxx.xxx。
- 一般路由会给自己分配一个好记的内网IP,如192.168.1.1
- 然后路由会给每一个内网中的设备分配一个不同的内网IP,如电脑是192.168.1.2,手机是192.168.1.3,以此类推。
路由器的功能
- 现在路由器有两个IP,一个外网IP和一个内网IP
- 内网中的设备可以互相访问,但是不能直接访问外网
- 内网设备想要访问外网,就必须经过路由器中转
- 外网中的设备诶互相访问,但是无法访问你的内网
- 外网设备想要把内容送到内网,也必须通过路由器
- 也就是说内网和外网就像两个隔绝的空间,无法互通,唯一的联通点就是路由器
- 所以路由器有时候也被叫做【网关】
几个特殊的IP
分别是
- 127.0.0.1 表示自己(规定死的)
- localhost 通过hosts 指定为自己(可以自己改)
- 0.0.0.0 不表示任何设备
有了IP和域名,就能通过DNS联系起来
DNS
全称
Domain Name System,
译作:域名系统or域名解析系统
- 当你输入baidu.com的时候
过程
- 你的Chrome浏览器会向电信/联通提供的DNS服务器询问baidu.com对应什么IP
- 电信/联通会会打一个IP(具体过程很复杂,不研究)
- 然后Chrome才会想对应IP的80/443端口发送请求
- 请求内容是查看baidu.com的首页
PS:自己查:在cmder里nslookup + 域名
为什么是80或443端口
- 服务器默认用80提供http服务
- 服务器默认用443提供https服务
- 你可以在开发者工具里看到具体的端口
题外话
- WWW
www.xxx.com和xxx.com不是同一个域名
- 他们是什么关系
- com 是顶级域名
- baidu.com 是二级域名(俗称一级域名)
- www.xxx.com是三级域名(俗称二级)
- 他们是父子关系
- github.io 把子域名 xxx.github.io免费给你使用
- 所以你应该知道www.xxx.com和xxx.com可以不是同一家公司,也可以是。
- www是多余的吗,是的,非常多余
根据不同域名选择不同的服务器,服务器选好了,如何请求不同的页面呢?
-
路径可以做到
- https:xxx.com/123/456
- https:xxx.com/123/987
-
工具
- 使用Chrome开发者工具Network面板看看区别
同一个页面,不同内容?
- 查询参数可以做到
www.baidu.com/s?wd=hi
www.baidu.com/s?wd=hello
也就是说同一个页面但是查询的内容不同
同一个内容,不同位置?
- 锚点可以做到
developer.mozilla.org/zh-CN/docs/…
developer.mozilla.org/zh-CN/docs/…
- 注意
- 锚点看起来有中文,实际不支持中文
- #参考书会变成#%E5%8F%82%E8%80%83%E4%B9%A6
- 锚点是无法在Network面板看到的
- 因为锚点不会传给服务器
总结
- 上网看网页,就是使用浏览器这个客户端,输入URL来达到访问某个网页的目的。
- 当然这个过程背后的部分就包含了http协议,IP,DNS这些知识,对于一般用户来说不需要关心
- 一个URL包括了协议,域名,路径,查询参数,锚点
- 比较重要的是我们常用的http,https协议,以及我们平时接触最多的域名这两个知识点