小工具:
CDN
【CDN】(Content Delivery Network,内容分发网络) is a geographically distributed network of proxy servers(代理服务器) and their data centers(数据中心) .
划分网页内容,可以大致分为静态内容(比如点赞、投币的图标)和动态内容(比如热搜、点赞数)。注意即使是静态内容也不是一直保存在CDN里面,源服务器发送文件给CDN的时候就可以利用HTTP头部的cache-control,这个头部可以设置文件的缓存形式,这样CDN就知道哪些资源可以保存,哪些不能,哪些要保存多久等等。
分发内容:CDN肯定是没有网站源内容的,因此源服务器就会把静态内容提前备份给CDN,也叫push,这样在世界各地用户需要访问网页的时候,就近的CDN服务器就会把静态内容提供给用户,不需要每次都劳烦源服务器了,这就是上图的第一种情况。如果源服务器没有把静态内容提前备份给CDN,那当用户访问网页的时候CDN就得去问源服务器索取相应的静态内容,也叫pull,源服务器还可以让CDN进行备份,CDN得到内容以后再提供给用户,因为有了备份,其它同时做出请求的用户也可以马上拿到内容了。
动态内容是根据每个用户或者每个时间段来改变的,源服务器很难做到提前预测每个用户的动态内容,然后提前给到CDN,如果等用户索取动态内容,CDN再问源服务器索取,这样CDN提供不了多少加速服务,也就没有存在的意义了。但确实有CDN可以提供动态内容服务,比方说时间,让源服务器用这些CDN的接口,而不是源服务器自己的代码,用户可以直接从CDN上获取时间而不是从源服务器获取。
安全性和可靠性:CDN的布局相当于无形中给源服务器增加了一道墙,因为用户不再直接访问源服务器了,而是通过CDN来沟通,这样就不用担心恶意的DDos攻击。用了任播的通信方式以后,服务器对外都拥有同样一个IP地址,如果这个IP地址收到了用户的请求以后,请求就会由距离用户最近的服务器来响应,同样的道理,不管你的攻击来得多猛烈,利用任播的技术把流量转移到另外没超载的服务器就可以缓解了,当然还是有影响的。不难看出, 负载均衡和任播之间还是有着紧密联系的。此外CDN还会采用TLS/SSL证书来给网站提供保护。
加速降费:CDN加速器,除了前面说到因为距离变近以后加载速度变快以外,当然还是不的的,加速还可以有很多方法,因为网络的请求无非就是在各种文件上,那CDN就会帮你把文件进行最小化或者压缩文档,比如删掉代码里的空格(为了方便程序员阅读和维护的空格,但是不影响运行)。另外CDN自身肯定是要优化自己的硬件和软件的,如果自己的硬件都比源服务器差那这生意就没法做了。CDN也可以减少费用,数据流动的距离变短了,相当于汽车开的距离变短,消耗的油肯定变少了。
DNS
DNS域名解析过程的底层原理就是图书馆的运营管理方法,理解了图书馆就相当于理解了域名解析过程的底层原理。图书馆给每一本书都设定了位置,根据位置来进行管理,注意不是根据书名来进行管理。我们互联网的每一台主机都是由IP地址来标识位置的
比如在Whats My DNS中输入qingfengmingyue.tech,选择DNS记录类型-A,即可以搜到全球不同的地方访问该网站所对应的 IPv4 地址,不同地方地址是不同的。将这些IP地址输入到IPv4地址查询,即可发现背后的运营商都是阿里云。
【Ping】(Packet Internet Groper,因特网包探索器)命令:Ping是Windows和Linux系统下的一个网络测试命令,它属于一个通信协议,是TCP/IP协议的一部分。平常我们利用ping命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障,还可以实现DNS解析。
- ping一台服务器(ping IP)没有收到回复,可能意味着我们的计算机和服务器之间没有网络连通性,这可能是由于几个不同的原因。比如如果收到消息-请求超时,那么这可能意味着服务器被关闭或者服务器正在运行但是正在使用防火墙阻止所有ping请求。
- ping一台服务器,如果并非所有的数据包都回复给我,比如我发送4个数据包,但是只收到2个数据包,这被称为分组丟失,其可能的原因有网络堵塞、硬件故障(网卡,调制解调器等)。
- ping 127.0.0.1 可以用来测试本机,127.0.0.1是回送地址,指本地机,不能被某个主机单独使用,因此使用这个地址并不能测试与其它主机是否能够连接,而是检测自己主机的基础网络配置是否正常,也就是检查本机的TCP/IP是否正确安装,即使你没有联网也是可以ping这个地址的。
什么是内网、外网、网关,子网掩码。
参考资料:
(1) DNS 查询原理详解-阮一峰