浅析URL
IP
ip 主要约定了两件事:如何定位一台设备?如何封装数据报文,以跟其他设备交流?
只要我们处在互联网中我们就至少有一个独特的 IP
内网与外网 IP
当我们通过家里的路由器进行上网时,实际上网络返回的请求是先到路由器,路由器再转发给我们的设备,路由器就充当我们与外界网络交互的工具。路由器分配给我们设备的 IP 就是内网 IP,一般来说这个 IP 格式都是 192.168.xxx.xxx
。内网中的设备都可以相互访问。而外网 IP 就是电信/联通之类的运营商给你分配的 IP,只要路由器连上网就会有一个外网 IP。这个外网 IP 不是固定的,当我们重启路由器和光猫,得到的 IP 很有可能就会不一样
几个特殊的 IP
- 127.0.0.1 表示自己
- localhost 通过 hosts 指定为自己
- 可以通过修改 hosts 文件将自己定义的名称指定为
自己
,例如:可以将 zzf 指定为自己
- 可以通过修改 hosts 文件将自己定义的名称指定为
- 0.0.0.0 不表示任何设备
端口 port
我们已经知道一台机器的 IP,但是还不能访问它,我们还需要端口。
一台机器可以提供多种服务,并且每个服务都对应一个号码,这个号码就是我们所说的端口。
一个简单的比喻
麦当劳提供两个窗口,一号快餐,二号咖啡。当我们去一号窗口点咖啡,会被拒绝,让你去二号点咖啡。去咖啡窗口点快餐也是一样。
一台机器可以提供多种服务
- HTTP 服务默认 80 端口
- HTTPS 服务默认 443 端口
- FTP 服务默认 21 端口
- 一共有 65535 个端口
要只要应该用什么端口,可以去维基百科搜索,他会告诉你每个端口该做什么。
规则
- 0~1023 端口是留给系统使用的
- 只有拥有管理员权限才能使用这预留个系统的端口
- 其他端口可以给普通用户使用
更多端口的详细信息,可以访问链接
域名
知道 IP 和端口之后,可以正确的享受相应的 服务
了。但是,我们每次都通过 IP 和端口去访问很麻烦,毕竟IP 这串数字太难记了。因此,域名诞生了,域名就是对 IP 的别称。
我们访问百度的 IP,就不用找它的 IP了,可以直接使用 baidu.com 来替代。我们也可以使用 ping badu.com
命令,根据域名获取到它对应的 IP。
知识点
- 一个域名可以对应不同的 IP,这样是负载均衡,防止一台机器扛不住
- 一个 IP 也可以对应不同的域名,这个叫做共享主机,穷开发者才会这样做
DNS
域名和 IP 的关系是如何绑定起来的呢?这个就要靠 DNS 了,它相当于过去的电话本,你要找「张三」的手机号码,就需要找到「张三」这个人,手机号码也同时找到了。
我们默认使用的 DNS 就是电信/联通之类的运营商为我们提供的,我们也可以自己修改 DNS。
过程:当我们使用浏览器访问 baidu.com
,DNS 会返回它对应的 IP,然后浏览器向对应的 IP 的 80/443 端口发送请求,然后返回百度首页的内容。
获取网页内容规则
- 我们可以通过改变访问地址路径做到,获取不同的内容,假设有该
zzf.com
域名zzf.com/docs
获取文档内容zzf.com/images
获取图片内容
- 根据修改参数可以达到,同一页面不同内容
www.baidu.com/s?wd=hi
www.baidu.com/s?wd=hello
- 可以使用锚点做到,同一内容不同位置
zzf.com#教程
,定位到该页面的「教程」位置zzf.com#参考书
,定位到该页面的「参考书」位置
注意事项:虽然锚点是在请求地址中的,但是锚点不会传给服务器。
curl 命令
curl -v http://baidu.com
输出通信的整个过程,包括获取 IP,建立 tcp 连接,发送请求,响应内容,关闭 tcp 链接,结束访问。
更详细的使用规则可以访问链接