浅析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://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 | curl -v http://baidu.com |
理解:
url 会被 curl 工具重写,先请求 DNS 获得 IP
先进行 TCP 连接,TCP 连接成功后,开始发送 HTTP 请求
请求内容看一眼
响应内容看一眼
响应结束后,关闭 TCP 连接(看不出来)
真正结束