URL组成
URL=协议+域名或IP+端口号+路径+查询字符串+锚点
端口号一般不用写出来
我们先不讲协议
IP(Internet Protocol)
IP地址是人们在Internet上为了区分数以亿计的主机而给每台主机分配的一个专门的地址,通过IP地址就可以访问到每一台主机。 主要约定了两件事:
- 如何定位一台设备
- 如何封装数据报文,以便跟其他设备交流
IP分为内网和外网
外网IP
怎么获取一个外网IP?
- 租用带宽
- 用电脑,手机等分别连接路由器广播出的WIFI
- 只要路由器连上了电信的服务器,那么路由器就会有一个"外网IP",如[14.17.32.211],这就是用户在互联网中的地址
- 注意:重启路由器可能会被重新分配一个新的外网地址,一般来说普通用户的路由器没有"固定的外网IP"
内网IP
- 路由器会在所及区域创建一个内网,内网中的设备使用"内网IP"
- 一般来说内网IP的格式都是 192.168.xxx.xxx
- 路由器会给每一个内网中的设备分配一个不同的内网IP
路由器的作用
路由器中有两个IP,一个外网IP和一个内网IP
- 内网中的设备可以相互访问,但不能直接访问外网
- 内网中的设备需要经过路由器中转才能访问外网
- 外网中的设备可以相互访问,但不能直接访问内网
- 外网设备要把内容送到内网,也必须经过路由器
也就是说内外网是相互隔绝的,它们之间唯一的联通点就是路由器 所以路由器也有别名叫做"网关"
几个特殊IP
- 127.0.0.1 表示本机
- localhost(默认域名)通过hosts指向了127.0.0.1,故其也表示本机
- 可以在hosts改变localhost名称
- 0.0.0.0 不表示任何设备
端口
一台机器可以提供很多服务,每一个服务有一个号码,这个号码就是端口号(port)
比喻
把我们的机器比作麦当劳,它有两个窗口,一号窗口卖快餐,二号卖甜品,我们只能在对应的窗口买对应的商品。
几个常见的端口号
- HTTP服务:80端口
- HTTPS服务:443端口
- FTP服务:21端口
一共有65535个端口,具体服务可以到维基百科查询
端口使用规则
- 0到1023号端口是给系统使用的
- 只有拥有管理员权限之后,才能使用这些端口
- 其他端口是用户可以自由使用的
- 如http-sever默认使用8080端口
- 如想要更改可以在命令行输入:
hs . -c-1 -p 2333更改为2333端口
- 一个端口如果被占用,只能使用其他端口
IP定位设备,IP定位服务,IP和端口缺一不可
域名
域名是对IP的别称
我们可以通过 ping 与 nslookup 操作来查看域名的IP
ping qq.com
nslookup qq.com
域名相关知识点
- 一个域名可以对应不同IP
- 这叫做均衡负载,防止一台机器顶不住
- 一个IP可以对应不同域名
- 这叫做共享主机,贫穷人士大家一起凑钱买一个IP
域名和IP如何对应? -> DNS
过程
- 输入qq.com
- 浏览器会向电信/联通提供的DNS服务器询问qq.com的对应IP是什么
- 电信/联通会返回一个IP
- 浏览器会向对应IP的80/443端口发送请求
- 请求内容便是查看qq.com的首页
补充
www.qq.com 与 qq.com 不是同一个域名
- com是顶级域名
- qq.com是二级域名(俗称一级域名)
- www.qq.com 是三级域名(俗称二级域名)
- 它们之间是父子关系
- www是多余的
路径
如何请求不同页面? 用路径,如:
developer.mozilla.org/zh-CN/docs/…
developer.mozilla.org/zh-CN/docs/…
查询参数
同一个页面,访问不同内容
用查询参数,如:
www.baidu.com/s?wd=dog
www.baidu.com/s?wd=cat
锚点
同一篇内容,访问不同位置
用锚点,如:
developer.mozilla.org/zh-CN/docs/…
注意
- 锚点不支持中文
- 中文会被自动转换成一堆字符
- 锚点不会在Network面板上被看到
- 锚点是本地内容,不会传给服务器,服务器不会阅读 # 号之后的内容
- 切记:不要用锚点穿参数
curl命令
用curl可以发HTTP请求
curl -v http://qq.com
大致步骤:
- url会被curl工具重写,先请求DNS获取IP
- 进行TCP连接,TCP连接成功后,开始发送HTTP请求
- 请求内容
- 服务器响应的内容
- 响应结束,关闭TCP连接(看不出来)
- 过程结束