在前两周我因为网速慢的原因手动修改了DNS服务器地址,刚开始确实感觉到数据加载变快了,但是过了段时间网速又变慢了,甚至直接输入ip地址也出现了请求超时的现象。
我拿校园网举例,因为校园网无法正常弹出用户登录界面,所以我一般都是手动输入ip地址,前几天还能正常访问,但是今天就莫名其妙访问超时,于是看了好几篇文章搞清楚了原因。
前些天能正常访问的原因是因为ip地址的访问记录没有被刷新,也就是距离上一次访问没有超过TTL(指的是dns解析记录的缓存时间,对于一些常用的网站,如果每访问一次就要进行一次地址解析就很不方便,因此对于dns里没有记录的IP地址,dns会提供cache 高速缓存器 来缓存解析记录,这样再次访问时会很快速)
不同浏览器的缓存时间不同 IE的ttl是30min。应该不是这个原因。
该过程简单来说就是,当用户通过域名访问某网站时,如果能在浏览器缓存里找到,则直接返回该网站ip,如果没有,会到本地缓存,本地DNS服务器中查找,到本地服务器时,DNS会将该请求先交给CDN,CDN会解析出发送请求的源IP,然后返回一个离主机物理位置近的服务器的IP地址,由该服务器进行地址解析响应请求,若该服务器没找到则会一直向上传。我感觉CDN像是司机,给主机提供最短最优路径,让请求快速被响应,从而提高了网络速度。
但CDN这样做的前提是我们使用的DNS服务器地址是运营商提供的(一般我们使用的DNS地址是运营商提供的),若我们手动修改DNS服务器地址为固定的情况下,CDN会错误判断主机的物理位置,从而返回的目的IP是距离主机很远的服务器的地址,此时访问速度自然就慢了下来。
对于用ip地址也不能正常访问的原因:一个ip地址可能对应多个web站点,那校园网举例,有时候连接校园网时不会弹出认证界面,所以我会在浏览器直接输入1.1.1.1到认证页面,但有一次响应的不是认证页面,是一个软件的官网,这也就应证了一个IP地址对应多个站点。当用1.1.1.1访问时,
路由器不知道将请求发送给哪台服务器,因此无法用ip访问。