URL 包含哪几部分
统一资源定位符 英语:Uniform Resource Locator,缩写:URL;
URL包含协议、域名或IP、路径、查询参数、锚点几个部分
协议
- 对于前端而言,暂时只有HTTP和HTTPS两种协议,HTTPS默认端口443
- HTTP是一个客户端(用户)和服务端(网站)之间请求和应答的标准
IP
网际协议(英语:Internet Protocol,缩写:IP;也称互联网协议)是用于分组交换数据网络的一种协议。
IP主要约定了两件事:
- 现在路由器有两个IP,一个内网IP和一个内网IP
- 内网中的设备可以互相访问,但是不能直接访问外网
- 如果内网设备想要访问外网,就必须经过路由器中转
- 外网中的设备可以互相访问,但是无法访问你的内网
- 内网和外网就像两个隔绝的空间,无法互通,唯一的联通就是路由器
-
几个特殊的IP
127.0.0.1表示自己
- 0.0.0.0不表示任何设备
-
hosts 文件
在 Windows 系统中,hosts 位于 C:\Windows\System32\drivers\etc\hosts 。在 macOS / Linux系统中,hosts 位于 /etc/hosts
- 可以看到 localhost 就是指定127.0.0.1
- hosts 一般需要用管理员权限才能编辑
- hosts 文件中以 # 开头的表示注释
- hosts 中可以添加一行 127.0.0.1 XXX,让 XXX成为 127.0.0.1 的别称
- 在浏览器中输入XXX:8080/index.html ,即可打开本地的index.html文件
端口
一台机器可以提供很多服务,每个服务一个号码,这个号码就叫端口号port 不同的服务对应不同的端口
一台机器可以提供不同的服务
- HTTP服务最好使用80端口
- HTTPS服务最好使用443端口
- FTP服务最好使用21端口
-
规则
0到1023(2的10次方减1)号端口是留给系统使用的
- 你只有拥有了管理员权限后,才能使用这1024个端口
- 其他端口可以给普通用户使用
- 比如http-server默认使用8080端口
-
IP和端口缺一不可
IP是定位一个设备的,端口是定位一个设备的服务的,有了IP和端口就可以定位一个设备提供的服务。
域名
域名是对IP的别称
一个域名可以对应不同的IP,叫做负载均衡,防止一台机器扛不住
-
域名和IP是通过DNS对应起来的
当你输入XXXXXX.com时会经历什么
过程
浏览器会向电信/联通提供的DNS服务器询问XXXXXX.com对应什么IP
- 电信/联通会回答一个IP
- 然后浏览器才会想对应IP的80/443端口发送请求
- 请求内容是查看XXXXXX.com的首页
为什么是80或443端口
- 服务器默认用80提供http服务
- 服务器默认用443提供https服务
- 可以在开发者工具里看到具体的端口
注意
www.XXXXXX.com和XXXXXX.com不是同一个域名
- com是顶级域名,XXXXXX.com是二级域名(俗称一级域名),www.XXXXXX.com是三级域名(俗称二级域名)
- 他们是父子关系
- github.io把子域名xxx.github.io免费给用户使用,所以www.XXXXXX.com和XXXXXX.com可以不是同一家公司也可以是
- www是多余的
路径
在同一个服务器上面使用不同的路径就可以得到不同的页面 注意路径没有必要有后缀
使用Chrome开发者工具Network面板可以看到区别,他们的区别主要在
同一个页面不同的内容
- 在同一个页面想要查看不同的参数,就用查询参数做到
- www.baidu.com/s?wd=hi
-
同一个内容,不同的位置
锚点可以做到
- https://developer.mozilla.org/zh-CN/docs/Web/CSS#参考书
- https://developer.mozilla.org/zh-CN/docs/Web/CSS#教程
注意
curl命令
用curl可以发HTTP请求
- curl -v http:baidu.com
- curl -s -v —https://www.baidu.com
部分请求内容和响应内容
向百度发的五行内容
GET / HTTP/1.1 获取根路径,协议是HTTP/1.1
> Host: baidu.com 刚刚有讲过一个IP可能对应多个域名,所以要告诉你,访问这个IP的时候你访问的是什么域名
> User-Agent: curl/7.65.3 用curl/7.65.3访问的
> Accept: / 期待返回什么内容,/表示返回什么内容都可以
> 空白的>表示结束了
百度返回的内容
www.baidu.com被弃用了,只用www.baidu.com
需要理解的概念
- url会被curl工具重写,先请求DNS获得IP
- 先进行TCP连接,TCP连接成功后,开始发送HTTP请求
- 看一眼请求内容、响应内容
- 相应结束后,关闭TCP连接(看不出来)
- TCP结束了才是真正结束
HTTP就是规定请求格式、以及响应格式的一个文件