浅析 URL

URL 的组成部分

URL ( Uniform Resource Locator  统一资源定位符 )协议+域名或IP+端口号+路径+查询字符串+锚点组成

HTTPS 默认使用443端口,所以 www.baidu.com 等同于 www.baidu.com:443

协议 ( Portocal ):主要有 HTTP 协议和 HTTPS 协议,HTTP 基于 TCP + IP 两个协议

域名 ( Domain Name ):域名是对 IP 的别称,一个域名可以对应不同的 IP , 这个叫做均衡负载,防止一台机器扛不住;一个 IP 可以对应不同域名,这个叫做共享主机,穷开发者会这么做

使用 Ping 找到域名对应的 IP

ping baidu.com

正在 Ping baidu.com [39.156.69.79] 具有 32 字节的数据:
来自 39.156.69.79 的回复: 字节=32 时间=27ms TTL=49
来自 39.156.69.79 的回复: 字节=32 时间=27ms TTL=49
来自 39.156.69.79 的回复: 字节=32 时间=26ms TTL=49
来自 39.156.69.79 的回复: 字节=32 时间=26ms TTL=49

39.156.69.79 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 26ms,最长 = 27ms,平均 = 26ms

IP (Internet Protocal) 主要约定了两件事:1.如何定位一台设备  2.如何封装设备报文,以跟其他设备交流。

IP 分为内网和外网,路由器连上电信服务器,会有两个 IP ,一个 [ 外网IP ] ,比如               [ 14.17.32.211 ] ,如果重连路由器,可能会被重新分配一个 [ 外网 IP ] ;一个 [ 内网IP ] ,一般来说这个 IP 格式是 [ 192.168.xxx.xxx ] 。

  • 内网中的设备可以互相访问,但是不能直接访问外网
  • 内网设备想要访问外网,就必须经过路由器中转
  • 外网中的设备可以互相访问,但是无法访问你的内网
  • 外网设备想要把内容送到内网,必须通过路由器
  • 内网和外网就像两个隔绝的空间,无法互通,唯一的联通点就是路由器,所以路由器有时候也被叫做 [ 网关 ]
  • IP 最大是255

几个特殊的 IP

  • 127.0.0.1表示本机
  • 默认127.0.0.1的域名是localhost
  • 可以在HOSTS文件里可以更改本地127.0.01 的域名
  • 0.0.0.0 不表示任何设备

科普

  • www.xxx.com 和 xxx.com 不是同一域名
  • com 是顶级域名
  • xxx.com 是二级域名(俗称一级域名)
  • www.xxx.com 是三级域名(俗称二级域名)
  • 他们之间是父子关系,可以是同一家公司,也可以不是
  • www 是多余的

端口 ( Port ):TCP/IP 协议中传输层的概念,用于区分同一台主机中的不同应用。IP 和端口缺一不可

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

  • 80端口:HTTP服务
  • 443端口: HTTPS服务
  • 21端口: FTP服务

端口的使用规则

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

路径 ( PATH ):请求同一路径上的不同网页

  • 路径是没有必要有后缀的
  • 可以使用 Chrome 开发者工具 Network 面板查看区别

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

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

查寻参数 ( Query Parameter ):请求同一个页面得到不同的内容

s(百度的搜索页面)

?wd=hi(查询参数)

&pn=10 (每页10个结果,当 &pn=10 时,查看第10个结果之后的内容)

http://www.baidu.com/s?wd=hi

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

锚点 ( anchor ):同一个页面在不同的位置

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

https://developer.mozilla.org/zh-CN/docs/Web/css #参考书
https://developer.mozilla.org/zh-CN/docs/Web/Css #教程

DNS ( Domain Name System ):将域名和 IP 地址对应起来

过程

  • 浏览器像电信/联通提供的 DNS 服务器询问网站对应什么 IP
  • 电信/联通会回答一个 IP
nslookup baidu.com

服务器:  phicomm.me
Address:  192.168.2.1

非权威应答:
名称:    baidu.com
Addresses:  220.181.38.148
          39.156.69.79
  • 浏览器会像对应 IP 的80/443端口发送请求
  • 请求内容是查看网站的首页

curl 命令

用 curl 可以发 HTTP 请求

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

整个过程

 curl -v http://baidu.com
*   Trying 220.181.38.148:80...
* TCP_NODELAY set
* Connected to baidu.com (220.181.38.148) port 80 (#0)
> GET / HTTP/1.1
> Host: baidu.com
> User-Agent: curl/7.65.3
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Server: Apache
< Date: Tue, 22 Jun 2021 12:57:50 GMT
< Content-Type: text/html
< Content-Length: 81
< Connection: keep-alive
< Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT
< ETag: "51-47cf7e6ee8400"
< Accept-Ranges: bytes
<
<html>
<meta http-equiv="refresh" content="0;url=http://www.baidu.com/">
</html>
* Connection #0 to host baidu.com left intact
  • 先请求 DNS 获得 IP
  • 进行 TCP 连接
  • TCP 连接成功后,开始发送 HTTP 请求
  • 请求内容看一眼
  • 响应内容看一眼
  • 响应结束后,关闭TCP连接( 看不出来 )
  • 真正结束

HTTP ( HyperText Transfer Protocol) 就是规定请求的格式是什么,响应的格式是什么

*本文为鲲游北冥的原创文章,著作权归本人和饥人谷所有,转载务必注明来源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值