浅析URL
浅析URL
昨天先一口气把小后端搭起来了,用的阿里云服务器,然后node.js配的一个很简单的http响应。因为这部分之前已经比较了解了就先放了一下,现在总结一下。
URL(Uniform Resource Locator):统一资源定位服务
URL的组成
- URL = 协议 + 域名 + 路径 + 查询参数 + 锚点 + (端口:默认 http80/https443)
- 以本文的url为例
- 协议:http://
- 域名:yangyixuan.icu
- 路径:/posts/浅析url/
- 查询参数:唔这个我们还没有
- 锚点:#url的组成
- 端口:80,因为我们是http协议,所以默认80,可以在浏览器检查器里的request看到这个参数,应该是ip:80,如39.107.252.247:8888/,因为我的服务器没有备案,用80可能会被封,所以这里用了8888
- 其中需要注意锚点不支持中文,且功能只是定位,只和浏览器有关,不会发给服务器!!!
URL的作用
之前的介绍万维网WWW时提到:
1990左右李爵士发明:为了上网冲浪,让每个人输入网址(URL),看到网页(HTML),看不见的就是HTTP 所以URL名字中已经很清楚,就是为了帮助我们定位网址和内容,但同样是网址,有的我们很容易记住,如https://www.baidu.com/s?wd=hi,而有的像上面提到的39.107.252.247:8888/hearts,则很难记住,其实可以发现,主要的差别就在域名的部分。说到域名就要提到DNS了。
域名 与 DNS
DNS(Domain Name System):域名系统,其实它的作用就是一张大表,帮我们记住不好记的域名。IP地址是互联网定位的基石,有了IP地址,我们就能够找到服务器,然后服务器再为我们返回我们需要的网页或数据,而DNS就为我们提供将url中的域名,转换为IP地址的服务。
用一个简单的例子看看DNS
nslookup baidu.com
在终端输入这行命令你会看到
Server: 2408:8000:1010:2::8
Address: 2408:8000:1010:2::8#53
Non-authoritative answer:
Name: baidu.com
Address: 220.181.38.148
Name: baidu.com
Address: 39.156.69.79
啊哈,底下的两个Address就是IP地址,这下我们就知道如何向百度发送请求了。我们ping一下试试
ping baidu.com
可以看到,我们自动选择了一个IP,去尝试连接,并且成功。
PING baidu.com (220.181.38.148): 56 data bytes
64 bytes from 220.181.38.148: icmp_seq=0 ttl=50 time=7.258 ms
64 bytes from 220.181.38.148: icmp_seq=1 ttl=50 time=7.340 ms
64 bytes from 220.181.38.148: icmp_seq=2 ttl=50 time=13.424 ms
域名
最后,域名之间的区别是什么呢? www.baidu.com 和 baidu.com 一样吗?
其实 .com是顶级域名,baidu.com是二级域名,www.baidu.com是三级域名,这也是DNS服务的方式——逐级解析。
我们先得到问解析.com的服务器(一般是网络运营商的服务器)baidu.com的ip存在哪儿,然后再到那里去问,最后得到www.baidu.com的ip地址,与该网站进行通信。
而这个过程又分为,递归式和迭代式,递归式,就像找个人问问题,他知道xxx会,就向xxx去学,学会了告诉你。而迭代式呢,还是你找他问问题,他说xxx会,让你自己找他去。这里面的具体细节我就不太了解了。