浅析URL

万维网(World Wide Web)包含三个部分分别是:

WWW=URL(Uniform)+HTTP(HyperText Transfer Protocol)+HTML(HyperText Markup Language)

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

http://www.baidu.com/s?wd=hi&rsv_spt=1#5

协议 —— http://
域名 —— www.baidu.com
路径 —— /s
查询参数 —— ?wd=hi&rsv_spt=1
锚点 —— #5

协议

服务器使用的协议一般有两种:

一种为HTTP(HyperText Transfer Protocol,超文本传输协议)
一种为HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer,超文本传输安全协议)


IP(Internet Protocol)

作用

一、如何定位一台设备(手机、电脑、路由器…)
二、如何封装数据报文,以跟其他设备交流

换句话说,只要你在互联网中,你就至少会有一个独立的IP

IP分为内网和外网

外网IP

如何获取外网的IP(过程)

第一步:从电信租用带宽

第二步:光猫(调制解调器)

作用:拨号上网

第三步:路由器

作用:起到分配的作用

把电脑和手机分别连接由路由器广播出来的无线WIFI

只要路由器通过“光猫”连接上外面(电信)的服务器时,路由器就会有一个「外网IP」,比如「147.17.32.211」就是一个外网IP,这个IP地址就是在互联网中的地址(所有的通过路由器连接设备都是同一个外网IP地址)

但是如果重启路由器,那么很有可能被重新分配一个「外网IP」,换句话说你的路由器没有「固定的外网IP」

拓展:查询自己的外网IP

内网IP

路由器会在家里(区域)创建一个内网,内网中的设备使用时内网IP,一般来说内网IP格式为「http://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 本地

0.0.0.0(不表示任何设备)

域名

域名就是IP的别称

知识:

  • 一个域名可以对应不同的IP
  • 这个叫做均衡负载,防止一台机器扛不住

终端输入ping baidu.com 会生成几个IP地址来对应不同的服务器,这些服务器分别对应各个地区(华中、华南、华北..),进行使用

  • 一个IP可以对应不同域名
  • 这个叫做共享主机

公司太小公用服务器或者一个公司有两个网站,公用一个IP地址

疑问 ️:www.xiedaimala.com与xiedaimala.com是同一个域名吗?

答案:不是同一个域名

拓展:

com(company,公司)是顶级域名
http://xiedaimala.com二级域名(俗称一级域名)
http://www.xiedaimala.com三级域名(俗称二级域名)

他们是父子关系(越长越小)

github.io 把子域名xxx.github.io免费给用户使用 xx.com与www.xx.com可以是同一家公司,也可以不是同一家公司(只是公用父域名) www是非常多余的!

端口

什么是端口

我们知道URL的作用是定位服务器比如定位百度服务器),我们可以通过上面的IP/域名来定位服务器,但是我们定位服务器的根本目的是需要为服务的(不然我们定位服务器干啥!! )
所有现在接下来的事情就是定位服务,而端口就是为了对应不同服务的

端口号

一台服务器(设备)可以提供很多服务,每个服务都有对应号码,这个号码被称为端口号

很多服务

要提供HTTP(超文本传输协议)服务最好使用80端口

要提供HTTPS(超文本传输安全协议)服务最好使用443端口

要提供FTP(文件传输协议)服务最好使用443端口

一共有65535个端口,基本够用

我们怎么知道什么服务对应(提供)什么端口


路径

在一个服务器(设备)上,如何请求不同的页面 通过路径可以做到

例:

https://developer.mozilla.org/zh-CN/docs/Web/HTML

https://developer.mozilla.org/zh-CN/docs/Web/css

查询参数

同一页面,不同内容

https://www.baidu.com/s?wd=hi&pn=10

https://www.baidu.com/s?wd=hello

/s:搜索页面
?wd=:查询参数 word(单词/词语)
wd:word(单词/词语)

锚点

在一个内容上,如何请求不同位置 通过锚点可以做到

举 :

https://develop.mozilla.org/zh-CN/docs/web/HTML#参考书 https://develop.mozilla.org/zh-CN/docs/web/CSS#教程

注意:

锚点看起来有中文,实际不支持中文 #参考书传输到服务器会变成一堆乱码 锚点无法在Network面板看到 因为锚点不会传給服务器

DNS

DNS全称为Domain Name System,域名系统

DNS 的作用就是对域名和IP进行相互对应的

验证下:当我们输入http://baidu.com回车后,域名是如何与IP进行相互对应的?

  • 在Chrome浏览器下输入http://baidu.com后,先经过路由器向外网的(电信/联通提供的DNS服务器)发出询问,询问内容就是http://baidu.com所对应的IP地址
  • 电信/联通提供的DNS服务器收到请求后,就会回答一个IP地址
  • 然后Chrome浏览器把回答的IP地址和以及IP对应的端口(80/443端口)再次通过路由器向对应的服务器发送请求
  • 请求内容:查看http://baidu.com的页面
  • 服务器通过路由器再传回给浏览器(HTML、CSS、JS等)
  • 最终我们就可以看到http://baidu.com的页面了

通过nslookup 命令查看域名下所有提供服务的服务器

语法:nslookup 网站域名

拓展:ping与nslookup区别:

ping:查看域名对应本地区的服务器,更为准确 nslookup:查看域名对应所有提供服务的服务器

curl命令

用 curl 可以发 HTTP 请求

1
2
curl -v http://baidu.com
curl -s -v -- https://www.baidu.com

理解:

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

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

请求内容看一眼

响应内容看一眼

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

真正结束