浅析 URL
URL的组成
- 协议+域名或IP+端口号+路径+查询字符串+锚点
协议
协议(protocol)。我们一般使用的都是HTTP协议和HTTPS协议。协议是为了使数据在网络上从源到达目的,网络通信的参与方必须遵循相同的规则。
域名和IP
IP
IP(Internet Protocol)是网络协议,主要约定了两件事:
- 如何定位一台设备
- 如何封装数据报文,以跟其他设备交流
域名
域名是对IP的别称。
- 顶级域名,比如com
- 二级域名(俗称一级域名),比如baidu.com
- 三级域名(俗称二级域名),比如www.baidu.com
可以通过ping一下域名来获得对应的IP,例如ping baidu.com
- 一个域名可以对应不同的IP(均衡负载,防止一台机器扛不住)
- 一个IP也可以对应不同的域名(共享主机)
域名和IP通过DNS对应起来
当你要访问一个网站是,浏览器就会先向电信的DNS服务器询问这个域名对应的IP,浏览器在根据IP的对应的80/443端口发送请求,所请求的内容就是你要访问的网站的页面。可以在浏览器的开发者工具的Network面板参看网络访问的全过程。
nslookup域名解析命令
nslookup的基本功能就是解析默认DNS服务器,直接输入nslookup即可。例如nslookup baidu.com
curl命令
可以使用curl命令来找到询问DNS服务对应的IP,例如curl -v www.baidu.com 他的访问过程是这样的:
- URL会被curl重写,先请求DNS获得IP
- 进行TCP链接,成功后发送HTTP请求
- 发送请求内容,获得响应内容
- 响应结束,关闭TCP
- 真正结束
端口号
一台机器可以提供很多服务,每个服务一个号码,这个号码就是端口号port。
- 提供HTTP服务最好用80端口
- 提供HTTPS服务最好用443端口
- 提供FTP服务最好用21端口
- 一共有65535个端口
规则
- 0-1023是留给系统使用的,如果要使用需要有管理员权限,但是不建议使用。
- 其他的都是可以给普通用户使用的。
- 一个端口被占用需要更换另一个端口。
路径
使用路径可以实现请求不同的页面
例如:
- developer.mozilla.org/zh-CN/docs/… 其中/zh-CN/docs/Web/HTML就是路径,说明你请求的是中文文档中的web内容中的HTML内容。
查询字符串
查询字符串可以做到同一个页面,不同内容。例如搜索页面: www.baidu.com/s?wd=协议 其中/s是路径,后面的?wd=协议 就是查询参数。
锚点
锚点可以做到同一个内容,不同位置。
例如
- developer.mozilla.org/zh-CN/docs/… #号后面的参考书就是锚点。他可以帮我们快速定位到页面的某个位置
注意
- 锚点看起来是有中文的,但是实际上是不支持中文的,如果复制URL之后,就会把中文显示一串字符串
- 锚点是无法在Network面板看到的,因为锚点不会传到服务器,#和锚点都会被浏览器阻拦。