浅析URL

211 阅读3分钟

URL = 协议+域名或IP+端口号+路径+查询字符串+锚点

注:本文不具体讨论计算机网络部分的细节,网络相关均为简化描述。

IP

IP是Internet Protocol(网际互连协议)的缩写。主要解决两件事:

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

IP的获取

IP分为内网IP与公网IP。

公网IP的获取

  1. 从电信租用宽带
  2. 使用路由器连接电信服务器,路由器便获得一个公网IP
  3. 重启路由器后,公网IP可能发生改变,因为可能并没有申请到固定的公网IP
  4. 可直接百度搜索IP获取自己的公网IP

内网IP的获取

  1. 路由器与接入路由器的网络的设备形成一个内网,内网中的设备使用内网IP,一般为192.168.xxx.xxx。
  2. 一般路由器会给自己分配一个比较特别的内网IP,如192.168.1.1
  3. 路由器会给每个内网设备分配一个内网IP。

路由器与内外网

此时路由器有两个IP,一个公网IP和一个内网IP。内网中的设备使用内网IP相互访问,访问外网时需要通过路由器中转,而外网中的设备通过公网IP相互访问,访问内网时需要通过路由器中转。路由器有时也被叫做网关。

几个特殊的IP

127.0.0.1为回送地址,指本地机
localhost通过hosts指定为自己
0.0.0.0不表示任何设备

端口port

一台机器可以通过端口提供不同服务,如:

  • HTTP服务一般使用80端口
  • HTTPS服务一般使用443端口
  • FTP服务一般使用21端口

IP对应不同机器,而端口对应机器上的不同服务。

一共有65535个端口,其中0到1023号端口为系统使用的,需要管理员权限才能使用,普通用户可使用其他端口,如http-server使用8080端口。

域名

baidu.com、qq.com这些就是域名,其中com为顶级域名,org、cn等也是顶级域名,baidu.com为二级域名(俗称一级域名),www.baidu.com为三级域名(俗称二级域名),是否有www前缀对应的是不同的域名

域名与IP的关系

可以在cmd中使用ping 域名的方式查看对应的IP。 两者存在映射关系,但不一定是一一对应,还存在以下情况:

  1. 一对多:负载均衡,大公司常用,减轻服务器压力
  2. 多对一:共享主机,即多个域名映射至同一个IP,合用服务器以减低资费。

域名与IP映射的实现

通过DNS(Domain Name System,域名系统)。 过程:

  1. 浏览器向运营商提供的DNS服务器询问baidu.com对应的IP
  2. DNS服务器应答
  3. 浏览器向该IP的80(HTTP)/443(HTTPS)端口发送请求 可使用nslookup命令来查看域名查询过程

路径

域名后接'/'表示根目录,’/1.html'表示根目录下的1.hmtl文件,其他以此类推。

查询参数

以使用get方式进行请求举例:

锚点

developer.mozilla.org/zh-CN/docs/… 链接通过#指定锚点,锚点与HTML有关。以上链接打开后页面会自动调整至id='参考书'的元素处。

trap

  1. url本身不支持中文
  2. 浏览器并不会发送锚点信息给服务器