浅析 URL

252 阅读3分钟

1. URL 的概念

URL(Uniform Resource Locator),统一资源定位符,俗称网页地址或简称网址,是因特网上标准的资源的地址(Address),如同在网络上的门牌。最初是由蒂姆·伯纳斯-李发明用来作为万维网的地址,现在它已经被万维网联盟编制为因特网标准RFC 1738。

URL 的完整格式

协议 :// 域名或IP地址 : 端口号 / 路径 / ?查询参数 # 锚点

  • 协议:用来传输客户端和服务器端交互信息
  • IP:用于定位设备,同时封装数据报文,以跟其他设备交流
  • 域名:是对 IP 的别称
  • 端口号:用来定位设备的服务
  • 路径:定位资源文件,请求不同的页面
  • 查询参数:把信息传递给服务器的一种方式,可以实现请求同一个页面的不同内容
  • 锚点:实现内容不同位置的定位

URL完整格式

2. IP(Internal Protocol)

IP 约定了两件事,如何定位一台设备,以及如何封装数据报文,从而跟其他设备交流。只要在互联网中就至少有一个独特的 IP。 我们可以通过 ip138.com 查询自己的外网 IP 地址

路由器有两个 IP,外网 IP(电信运营商分配) 和内网 IP(路由器自己分配)。路由器会在家里创建一个内网,内网中的设备使用内网 IP,一般这个格式是 192.168.xxx.xxx。内网中设备可以互相访问,但不能直接访问外网,必须通过路由器中转。外网中的设备也可以互相访问,但无法访问你的内网,也必须通过路由器中转。因为都要通过路由器中转,所以路由器有时也被称为“网关”。

特殊的 IP

  • 127.0.0.1:表示自己
  • localhost 通过 hosts 指定为自己

Mac/Linux 中 hosts 文件位于 /etc/hosts。
通过设置 hosts 可让任何字符串变成对应的 IP。
0.0.0.0 不表示任何设备。

3. 端口

端口用来定位设备的服务,一台设备共有 65535 个端口(基本够用)。0 ~ 1023(2^10 - 1)号端口是留给系统用的,只有拥有管理员权限后才能用这 1024 个端口。其他端口可给普通用户使用。

  • HTTP 服务默认 80 端口
  • HTTPS 服务默认 443 端口
  • FTP 服务默认 21 端口

4. 域名

域名是对 IP 的别称。域名可以绑定多个 IP。比如百度有多个服务器,如果用户在华北,就访问华北的服务器 IP。用户是华中的,就访问华中的服务器 IP。这被称为负载均衡,可以防止一台机器扛不住。一个 IP 也可以对应不同的域名,这叫做共享主机。

可以通过 ping 命令查看访问的域名的 IP。

ping命令

4.1 DNS(Domain Name System)

把域名和 IP 联系起来的系统称为 DNS(域名系统)。可以通过 nslookup 命令查询要访问的域名的 IP 详细信息。

nslookup

我们平时访问域名会主要经历以下过程:

  1. Chrome 会向电信运营商提供的 DNS 服务器询问域名(如 www.baidu.com)对应什么 IP
  2. 运营商回答一个 IP
  3. Chrome 向对应 IP 的 80/443 端口发送请求
  4. 请求内容是查看域名首页

4.2 www.baidu.com 和 baidu.com 是同一个域名吗?

不是同一个域名。

  • com 是顶级域名,baidu.com 是二级域名(俗称一级域名),www.baidu.com 是三级域名(俗称二级域名)
  • 他们之间是父子关系。例如 github.io 将子域名 xxx.github.io 免费给用户使用
  • xxx.com 和 www.xxx.com 可以是同一家公司,也可以不是