浅析URL

312 阅读4分钟


一、IP

Internet Protocal

主要约定了两件事:

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

只要身处互联网中,就有一个独特的IP

如何获取外网IP??

  • 从电信租用宽带,一年一千多
  • 买了一个路由器,分别用电脑和手机连接路由器广播出来的无线WIFI
  • 只要是路由器连上电信服务器,路由器就会有一个[外网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不表示任何设备

使用ping命令能根据域名查询到ip

ping baidu.com

二、端口

一台机器可以提供多种服务,每种服务对应一个端口号port

ip定位设备,port定位设备服务,缺一不可

一台机器提供不同的服务

  • 要提供HTTP服务最好使用80端口
  • 要提供HTTPS服务最好使用443端口
  • 要提供FTP服务最好使用21端口
  • 一共有65535个端口

端口常用规则

  • 0到1023(2的10次方-1)号端口是留给系统用的
  • 只有拥有管理员权限才能使有这1024个端口
  • http-server默认使用8080端口,可通过http-server -c-1 -p 1234 手动修改端口
  • 若http-server修改为系统端口,则网址上可不用加端口号
  • 一个端口被占用,则只能换端口

三、域名(domain name)

qq.com为域名。对计算机或计算机组的标识。

域名和IP通过DNS相互映射,方便访问互联网。

可在cmder 输入 ping baidu.com 查询百度域名对应的ip

关键点:

  1. 一个域名可以对应多个ip,这叫负载均衡防止一台服务器扛不住,如华南、华北、华中服务器设置。
  2. 一个ip可以对应多个域名,这叫共享主机,穷开发者这么做。

四、DNS——输入网址到看到网页的过程

  • 输入网站www.baidu.com 后,chrome会向电信/联通提供的DNS服务器询问百度对应的ip
  • 电信/联通会回答一个ip
  • chrome会向对应的ip的80/443端口发送请求
  • 请求内容为查看百度首页

为什么是80或443端口呢??

  • 因为服务器默认80提供http服务
  • 默认443提供https服务
  • 开发者工具可看到具体端口,右键inspect、network

注意:

www.xiedaimala.com 和xiedaimala.com不是同一个域名!!

  1. com是顶级域名,代表company
  2. xiedaimala.com是二级域名(俗称一级域名)
  3. www.xiedaimala.com是三级域名(俗称二级)
  4. gihub.io把子域名xxx.github.is免费给你使用,但是没什么必然联系,可以不为同一个公司的

使用nslookup可以查询DNS记录,查询域名解析是否正常

nslookup baidu.com

URL构成

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

以http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name为例

  • http为协议
  • www.aspxfans.com为域名
  • 8080为端口号,以:开头
  • /news/index.asp为虚拟路径,代表请求不同的页面
  • boardID=5&ID=24618&page=1 为查询参数,以?开头,可以做到同一页面不同内容
  • name为锚点,以#开头,可以快速定位该页面的内容

注意:

  1. 锚点看起来支持中文,其实复制粘贴后会不支持,转为其他码
  2. 锚点无法在Network面板看到,因为锚点不会传递给服务器(只是定位而已)