浅析URL

169 阅读4分钟

URL是什么?

  • URL是指 协议 + 域名或IP + 端口号 + 路径 + 查询字符串 + 锚点。
    • 举例:url举例.pngHTTPS默认端口443

IP——Internet Protocal

  • 主要约定了两件事:
    • 如何定位一台设备。
    • 如何封装数据报文,以跟其他设备交流。
  • IP分为内网和外网
    • 外网IP
      • 如何获取外网IP,例如选择电信租用带宽,你想使用,需要一个路由器进行转换,此时,路由器连上电信的服务器,那么路由器就会有一个【外网IP】,比如【14.17.32.211】就是一个外网IP,这就是你在互联网中的地址。但是重启路由器的话,路由器很有可能会被重新分配一个外网IP,也就是说路由器没有一个【固定的外网IP】。
    • 内网IP
      1. 在路由器有了外网IP后,路由器会在你家里创建一个内网,内网中的设备使用内网IP,一般内网IP的格式都是192.168.xxx.xxx。
      2. 一般路由器会给自己分配一个记好的内网IP,如192.168.1.1
      3. 路由会分配给每一个内网中的设备一个不同的内网IP,如电脑是192.168.1.2,手机是192.168.1.3,一次类推。
    • 路由器的功能
      • 路由器有两个IP,一个外网IP和一个内网IP
      • 内网中的设备可以互相访问,但是不能直接访问外网
      • 内网设备想要访问外网,就必须经过路由器中转
      • 外网中的设备可以互相访问,但是无法访问你的内网
      • 外网设备想要把内容送到内网,也必须通过路由器
      • 也就是说,内网和外网就像两个隔绝的空间,无法互通,唯一的联通点就是路由器
      • 所以路由器有时候也被叫做【网关】
    • 几个特殊的IP
      • 127.0.0.1表示自己
      • localhost通过hosts指定为自己
      • 0.0.0.0不表示任何设备

端口 port

  • 一台机器可以提供很多服务,每个服务一个号码,这个号码就叫端口号port
    • 比如,有两个不同作用的窗口服务点,必须要到相对应的窗口才能办理业务,不然会被拒绝,可能还会挨骂。
    • 一台机器可以提供不同的服务(详细使用什么端口可查询TCP/UDP端口列表 - 维基百科,自由的百科全书 (wikipedia.org)
      • 要提供HTTP服务最好使用80端口
      • 要提供hTTPS服务最好使用443端口
      • 要提供FTP服务最好使用21端口
      • 一共有65535个端口,基本够用
    • 端口使用规则
      • 0-1023(2的10次方减1)号端口是留给系统使用的,你只有拥有了管理员权限后,才能使用这1024个端口。
      • 其他端口可以给普通用户使用,比如http-server默认使用8080端口
      • 一个端口如果被占用,你就只能换一个端口 记住【IP和端口缺一不可】

域名

  • 域名就是对IP的别称
    • baidu.com对应IP————ping baidu.com,qq.com对应IP————ping qq.com
    • 一个域名可以对应不同IP,这个叫做均衡负载,防止一台机器扛不住;一个IP可以对应不同域名,这叫做共享主机,穷开发者会这么做

DNS————域名和IP就是通过DNS对应起来的

  • 过程
    • 当你输入一个网址后,你的浏览器会向电信/联通提供的DNS服务器询问网址对应什么IP,电信/联通会回答一个IP,然后浏览器会向对应IP的80/443端口发送请求,请求内容时查看网址的首页。
    • 为什么是80或443端口,因为服务器默认用80提供http服务,用443提供https服务,可以在开发者工具里看到具体的端口
  • 补充
    • 【com】是顶级域名,【baidu.com】是二级域名(俗称一级域名),【www.baidu.com】 是三级域名(俗称二级),后两者是父子关系。github.io把子域名xxx.github.io免费给你使用,所以www.baidu.com 和baidu.com可以不是同一家公司,也可以是。www是多余的。

通过url访问页面

HTTP(协议)————基于TCP和IP两个协议

  • 可以用curl命令发HTTP请求
    • curl -v baidu.com
    • curl -s -v -- www.baidu.com
    • 实现过程
      • url会被curl工具重写,先请求DNS获得IP,先进行TCP连接,TCP连接成功后,开始发送HTTP请求,之后会得到响应,响应结束后,关闭TCP连接(看不出来),真正结束。