URL的组成部分
URL的组成:协议+域名或IP+端口号+路径+查询字符串+锚点
协议
主要有HTTP协议和HTTPS协议,HTTP协议默认使用端口号80, HTTPS协议默认使用端口号443
HTTP协议是基于TCP和IP两个协议来传递数据的
HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包,HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换资料的隐私与完整性。就是安全的HTTP
域名/IP
IP
IP主要约定了两件事:
- 如何定位一台设备
- 如何封装数据报文,以跟其他设备交流
ip地址是用来定位互联网世界中的一台设备,每个上网的设备都有自己独立的IP地址,只要你在互联网中,你就有至少一个独特的IP
IP分为内网和外网
路由器的功能
- 现在路由器有两个IP,一个内网IP和一个外网IP
- 内网中的设备可以互相访问,但不能直接访问外网,若想访问外网,就必须经过路由器中转
- 外网设备想要把内容送到内网,也必须通过路由器
- 内网和外网就像两个隔绝的空间,无法互通,唯一的联通点就是路由器。所以路由器有时候也叫网关
可以用Ping命令查看域名的IP地址
如上图,域名taobao.com对应的IP地址是140.205.220.96
还可以用nslookup查看域名的ip地址:
有一些特殊的IP地址
- 127.0.0.1 表示自己。
- 默认127.0.0.1 的域名是localhost
- localhost通过hosts指定为自己
- 可以在HOSTS文件里更改本地127.0.0.1 的域名
- 192.168.XXX.XXX 表示内网
域名
域名就是IP的别称
- 一个域名可以对应多个IP, 这叫负载均衡,防止一台机器无法同时为大量用户提供服务
- 不同地区ping taobao.com会看到不同的ip地址
- 一个IP也可以对应多个域名,这叫主机共享
关于域名的其他知识
www.baidu.com 和 baidu.com是不同的域名
- .com是顶级域名
- baidu.com是二级域名(俗称一级域名)
- www.baidu.com 是三级域名(俗称二级域名)
- 所以www.baidu.com 是 baidu.com的子域名
- 例如,github.io是github的域名, userid.github.io是每个用户的域名
域名和IP怎么对应起来?DNS!
当你输入www.baidu.com
- chrome浏览器会向电信/联通提供的DNS服务器询问www.baidu.com对应什么IP
- 然后电信/联通会回复一个IP
- 然后chrome浏览器会向对应IP地址的80/ 443端口发送请求
- 服务器默认用80端口提供HTTP服务
- 服务器默认用443端口提供HTTPS服务
- 请求内容是查看www.baidu.com的首页
端口 port
一台服务器可以提供很多服务,每个服务有不同的号码,这个号码就是端口。类似于,在麦当劳点餐,有咖啡窗口、快餐窗口、甜品站窗口,只能在咖啡窗口点咖啡、甜品站窗口点甜品。
- 80端口: HTTP服务
- 443端口: HTTPS服务
- 21端口: FTP服务
端口的使用规则
- 0-1023号端口是系统用的,我们一般使用1024之后的端口
- 比如http-server默认使用8080端口
- 可以通过-p参数指定不同端口,例如:这样就可以指定使用1234端口 / * hs . -c-1 -p 1234 * /
- 一共有65535个端口
- 一个端口被占用,你就只能换一个端口
路径
如何请求同一服务器上不同网页?
用路径即可
路径是没有必要有后缀的
developer.mozilla.org/zh-CN/docs/…
developer.mozilla.org/zh-CN/docs/…
查询参数
同一内容,不同位置?
用锚点即可
developer.mozilla.org/zh-CN/docs/…教程
锚点不支持中文,会把中文进行编码
注意
锚点不会经过服务器,因为是本地内容
所以服务器不会阅读井号 # 之后的内容,不可以拿这个传参数!
curl使用示例
curl -v www.baidu.com
整个过程:
- 向DNS查询域名对应的IP地址
- 建立TCP连接,TCP连接建立好之后,开始发送HTTP请求
- 下图中以大于号开始的
- 从 > GET / HTTP/1.1到 > Accept: */*是请求头
- 之后服务器会发送回来一个响应
- 分为响应头和响应体
- 响应体就是HTML页面
- 以下内容是响应头
- 响应结束后,关闭TCP连接
- HTTP请求结束