43URL是什么

什么是IP

Internet Protocal

主要约定了两件事:

  1. 如何定位一台设备
  2. 如何封装数据报文,以跟其他设备交流
    具体内容我们不关心

只要在互联网中,就有至少一个独特的IP

IP分为内网和外网

如何获取外网IP

  • 从电信租用带宽
  • 买了一个路由器,然后用电脑和手机分别连接路由器 广播出来的无线WIFI。
  • 只要路由器连上电信的服务器,那么路由器就会有一个 「外网IP」,比如「14.17.32.211」就是一个外网IP。也就是在互联网中的地址。所有连这个路由器的设备都是这个外网IP,手机和电脑,用内网IP区分。
  • 如果重启路由器,那么很有「可能」被重新分 配一个「外网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不表示任何设备

端口

  • 一台机器可以提供很多服务
  • 每个服务一个号码,这个号码就叫端口号port

端口 port

一台机器可以提供不同服务

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

我怎么知道应该用什么端口

维基百科一个一个列出来了

端口使用规则

  • 0到1023 (2的10次方减1)号端口是留给系统使用的
  • 你只有拥有了管理员权限后,才能使用这1024个端口
  • 其他端口可以给普通用户使用
  • 比如http-server默认使用8080端口
  • —个端口如果被占用,就换一个端口

IP和端口缺一不可
记住这句话,你之后一定会产生疑惑的

域名是什么

  • 域名就是对IP的别称

baidu.com对应什么IP

  • windows -> 运行 -> cmd -> ping baidu.com

知识点

  • —个域名可以对应不同IP
    • 这个叫做均衡负载,防止一台机器扛不住
  • —个IP可以对应不同域名
    • 这个叫做共享主机,穷开发者会这么做

域名和IP是怎么对应起来的

  • 通过DNS Domain Name System

当输入 xiedaimala.com

过程

  • Chrome浏览器会向电信or联通提供的DNS服务器 询问xiedaimala.com 对应什么IP

  • 电信or联通会回答一个IP (具体过程很复杂,不研究)

    • nslookup baidu.com 域名寻找
  • 然后Chrome才会想对应IP的80/443端口发送请求

  • 请求内容是查看xiedaimala.com的首页

为什么是80或443端口

  • 服务器默认用80提供http服务
  • 服务器默认用443提供https服务
  • 你可以在开发者工具里看到具体的端口

题外话

WWW

  • www. xiedaimala.com 和 xiedaimala.com
  • 是同一个域名吗?
    • 不是

他们是什么关系

  • com是顶级域名
  • xiedaimala.com是二级域名(俗称一级域名) www.xiedaimala.com是三级域名(俗称二级)
  • 他们是父子关系
  • github.io把子域名xxx.github.io免费给你使用
  • 所以www.xiedaimala.com和xiedaimala.com可以不是同一家公司,也可以是
  • WWW是多余的吗?
    • 是的,非常多余。

如何请求不同的页面

同一个页面,不同内容

  • 查询参数可以做到
    • www.baidu.com/s?wd=hi
    • www.baidu.com/s?wd=hello

同一个内容,不同位置

注意

  • 锚点看起来有中文,实际不支持中文
  • #参考书会变成#%E5%8F%82%E8%80%83%E4%B9%A6
  • 锚点是无法在Network面板看到的
  • 因为锚点不会传给服务器

URL

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

URL举例

https://www.baidu.com/s?wd=hello&rsv_spt=1#5

  • https 协议

  • www.baidu.com 域名

  • /s 路径

  • wd=hello&rsv_spt=1 查询参数

  • #5 锚点

HTTP (协议)

HyperText Transfer Protocol

基于TCP和IP两个协议

curl命令

  • 用 Git Bash可以使用curl命令

  • 用curl可以发HTTP请求

  • 理解以下概念

    • url会被curl工具重写,先请求DNS获得IP

    • 先进行TCP连接,TCP连接成功后,开始发送HTTP 请求

    • 请求内容看一眼

    • 响应内容看一眼

    • 响应结束后,关闭TCP连接(看不出来)

    • 真正结束

HTTP规定

请求的格式是什么,

>GET / HTTP/1.1
>Host: baidu.com
>User-Agent: curl/7.67.0
>Accept: */*

响应的格式是什么

< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
< Connection: keep-alive
< Content-Length: 2443
< Content-Type: text/html
< Date: Sun, 29 Mar 2020 02:30:38 GMT
< Etag: "58860402-98b"
< Last-Modified: Mon, 23 Jan 2017 13:24:18 GMT
< Pragma: no-cache
< Server: bfe/1.0.8.18
< Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/

「资料来源:饥人谷」

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注