浅析URL

202 阅读4分钟

URL组成

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

URL.png

端口号一般不用写出来
我们先不讲协议

IP(Internet Protocol)

IP地址是人们在Internet上为了区分数以亿计的主机而给每台主机分配的一个专门的地址,通过IP地址就可以访问到每一台主机。 主要约定了两件事:

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

IP分为内网和外网

内外网.jpg

外网IP

怎么获取一个外网IP?

  1. 租用带宽
  2. 用电脑,手机等分别连接路由器广播出的WIFI
  3. 只要路由器连上了电信的服务器,那么路由器就会有一个"外网IP",如[14.17.32.211],这就是用户在互联网中的地址
    • 注意:重启路由器可能会被重新分配一个新的外网地址,一般来说普通用户的路由器没有"固定的外网IP"

内网IP

  • 路由器会在所及区域创建一个内网,内网中的设备使用"内网IP"
    • 一般来说内网IP的格式都是 192.168.xxx.xxx
  • 路由器会给每一个内网中的设备分配一个不同的内网IP

路由器的作用

路由器中有两个IP,一个外网IP和一个内网IP

  • 内网中的设备可以相互访问,但不能直接访问外网
  • 内网中的设备需要经过路由器中转才能访问外网
  • 外网中的设备可以相互访问,但不能直接访问内网
  • 外网设备要把内容送到内网,也必须经过路由器

也就是说内外网是相互隔绝的,它们之间唯一的联通点就是路由器 所以路由器也有别名叫做"网关"

几个特殊IP

  • 127.0.0.1 表示本机
  • localhost(默认域名)通过hosts指向了127.0.0.1,故其也表示本机
    • 可以在hosts改变localhost名称
  • 0.0.0.0 不表示任何设备

端口

一台机器可以提供很多服务,每一个服务有一个号码,这个号码就是端口号(port)

比喻

把我们的机器比作麦当劳,它有两个窗口,一号窗口卖快餐,二号卖甜品,我们只能在对应的窗口买对应的商品。

几个常见的端口号

  • HTTP服务:80端口
  • HTTPS服务:443端口
  • FTP服务:21端口

一共有65535个端口,具体服务可以到维基百科查询

端口使用规则

  • 0到1023号端口是给系统使用的
    • 只有拥有管理员权限之后,才能使用这些端口
  • 其他端口是用户可以自由使用的
    • 如http-sever默认使用8080端口
    • 如想要更改可以在命令行输入:
    • hs . -c-1 -p 2333 更改为2333端口
  • 一个端口如果被占用,只能使用其他端口

IP定位设备,IP定位服务,IP和端口缺一不可

域名

域名是对IP的别称

我们可以通过 ping 与 nslookup 操作来查看域名的IP

ping qq.com

ping.png

nslookup qq.com

nslookup.png

域名相关知识点

  • 一个域名可以对应不同IP
    • 这叫做均衡负载,防止一台机器顶不住
  • 一个IP可以对应不同域名
    • 这叫做共享主机,贫穷人士大家一起凑钱买一个IP

域名和IP如何对应? -> DNS

过程

  1. 输入qq.com
  2. 浏览器会向电信/联通提供的DNS服务器询问qq.com的对应IP是什么
  3. 电信/联通会返回一个IP
  4. 浏览器会向对应IP的80/443端口发送请求
  5. 请求内容便是查看qq.com的首页

补充

www.qq.com 与 qq.com 不是同一个域名

  • com是顶级域名
  • qq.com是二级域名(俗称一级域名)
  • www.qq.com 是三级域名(俗称二级域名)
  • 它们之间是父子关系
  • www是多余的

路径

如何请求不同页面? 用路径,如:

developer.mozilla.org/zh-CN/docs/…
developer.mozilla.org/zh-CN/docs/…

查询参数

同一个页面,访问不同内容 用查询参数,如:
www.baidu.com/s?wd=dog
www.baidu.com/s?wd=cat

锚点

同一篇内容,访问不同位置 用锚点,如:
developer.mozilla.org/zh-CN/docs/…

注意

  • 锚点不支持中文
  • 中文会被自动转换成一堆字符
  • 锚点不会在Network面板上被看到
  • 锚点是本地内容,不会传给服务器,服务器不会阅读 # 号之后的内容
    • 切记:不要用锚点穿参数

curl命令

用curl可以发HTTP请求 curl -v http://qq.com

大致步骤:

  1. url会被curl工具重写,先请求DNS获取IP
  2. 进行TCP连接,TCP连接成功后,开始发送HTTP请求
    curl1.png
  3. 请求内容
    curl2.png
  4. 服务器响应的内容
    curl3.png
  5. 响应结束,关闭TCP连接(看不出来)
  6. 过程结束