程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

擦亮“猫”和“鹿”的眼睛(原来小猫的眼睛可以这么亮)

balukai 2025-04-01 15:48:57 文章精选 7 ℃


一、漫不经心的存在——DNS

在给电脑设置IP地址的时候,要配置IP地址、子网掩码、默认网关,这些理所当然被认为是必须的,因为在互联网的世界里,IP地址就是用来标记电脑的互联网地址,有了地址才可以和别人通信。

同时,还需要设置2个DNS服务器,如果不设置,基本上99%以上的网站也上不了,这玩意与网速息息相关,但一般人都不care。

二、我们是怎么把消息发给对方的?

无论是上网还是发微信,手机/电脑都是把数据打包,然后把对方的IP地址填入数据包的头部,运营商的网络根据数据包头部的这个IP地址,不停地一站转一站,最后送达配置这个IP地址的设备上。IP地址就像生活中的住址,快递公司根据住址信息,帮你把快递准确无误地送达目标。

三、IP地址没有规律,太难记!

IPv4地址由32位2进制数字组成,一般表示为4段点分十进制,人们每次上网的时候,都要准确无误地输入这一串长长的数字。互联网上的网站千千万万个,这如何能记得住呢?更可怕的是,地球上IPv4地址不够用了,人们开始使用IPv6地址,IPv6地址由128位2进制数字组成,长度是IPv4的4倍,一般表示为8段点分十六进制,人们开始抓狂了......

四、DNS应运而生

懒惰是人类社会发展的源动力,人们不愿意记忆这些毫无规律的数字,于是发明了DNS。DNS系统是一个存储了所有计算机名称与IP地址之间对应关系的分布式数据库,从此,人们上网无需记住IP地址,只需要记住具有代表意义的名称即可,比如百度:www.baidu.com。但其带来的代价是,每一次上网,计算机都要去问一下DNS,拿到对应的IP地址后才能访问网站。

五、DNS查询流程(以百度为例)

电脑/手机等终端在上网时,向网卡中设置的DNS服务器(一般称之为Local DNS,本省运营商搭建的)发起域名解析请求(递归查询) 。DNS是一个分布式数据库,一开始Local DNS也不知道www.baidu.com的IP地址是多少,所以它也是根据域名结构一级一级去查询(迭代查询),最后由百度公司的权威DNS服务器返回www.baidu.com的IP地址给运营商的Local DNS服务器,运营商的Local DNS服务器再把结果返回给用户,用户根据这个IP地址进行上网了。用户上网时域名解析和访问网站的10个步骤如下图:

六、DNS设置被恶意篡改的后果

终端(电脑、手机、PAD等)DNS设置被一些软件或者病毒恶意篡改,可能出现的后果非常严重:你访问的网站在DNS域名解析的时候被恶意DNS服务器解析成假冒网站的IP地址,从而导致你去访问钓鱼网站或者带病毒的网站。这个危害非常巨大,一定要小心!

七、DNS设置不合理的后果

(一)第一个后果:

终端DNS设置不合理(比如设置成一些公众DNS,如8.8.8.8等),可能会导致网速变慢很多。第一个后果是:用户在解析域名的时候,从发起解析请求到DNS服务器返回结果给用户的时延会变大。举个例子,北京移动的用户访问百度的时候,要先进行域名解析:

(1)如果DNS设置成北京移动的DNS,这时候DNS服务器和用户很近,用户从发起解析请求到DNS服务器返回结果<30毫秒。

(2)如果DNS设置成公众DNS 8.8.8.8,这时候DNS服务器和用户很远,用户从发起解析请求到DNS服务器返回结果>60毫秒。

(二)第二个后果:

现在很多大型网站都建设了很多个节点,这些节点遍布三大运营商的IDC机房。你要访问的某个网站内容,可能在移动、电信、联通的机房里都有,不仅如此,在同一个运营商内部,可能多个省都有。很显然,用户当然是到同一个运营商内部的本省IDC机房(或最近的省)去获取资源,是最快的。举个例子,北京移动的用户访问百度的时候:

(1)如果DNS设置成北京移动的DNS,则DNS会把百度域名解析到北京移动站点1.1.1.1,这时候服务器和用户很近,而且没有跨网,打开网页<1秒。(人的感知:网速快如闪电)

(2)如果DNS设置成公众DNS 8.8.8.8,则DNS可能会把百度域名解析到广东电信站点2.2.2.2,这时候服务器和用户很远,而且要跨网,打开网页>3秒。(人的感知:网速慢如蜗牛)

八、家庭宽带的DNS设置情况一(默认,多数)

大多数用户家里的电脑/手机/PAD等终端的DNS是配置为自动获取,这代表其从路由器自动获取,路由器通过DHCP协议把IP地址和DNS地址分配给终端。这时候路由器一般是把自己的LAN口地址作为DNS服务器地址分配给客户端,路由器作为一层代理,给终端进行DNS应答。如果路由器使用DHCP方式接入光猫,那光猫也是把自己的LAN口地址作为DNS服务器地址分配给路由器,光猫作为另一层代理,给路由器进行DNS应答。

家庭宽带的DNS设置情况和家庭组网模式有关,具体组网模式的介绍可参考本人另外一篇文章——《大“猫“小”鹿”or 小”猫”大”鹿”》。

在这种情况下,电脑/手机/PAD等终端的每一次DNS域名解析时分为三步:

第一步:终端向路由器 192.168.0.1(即路由器的LAN口地址,也是路由器DHCP设置中的网关IP)发起DNS解析请求

第二步:路由器向光猫192.168.1.1(即光猫的LAN口地址,也是光猫DHCP设置中的网关IP 发起DNS解析请求

第三步:光猫向运营商DNS服务器218.85.15.16(此IP地址为举例,每个省都不一样)发起DNS解析请求

运营商DNS服务器在应答的时候,也是三步,与上述类似。

在这种情况下,如果你购买的是一些比较小众(便宜)的路由器,电脑/手机/PAD等终端的DNS域名解析还可能碰到一些其它的情况:

第一步:终端向路由器 192.168.0.1(即路由器的LAN口地址,也是路由器DHCP设置中的网关IP)发起DNS解析请求

第二步:路由器不向光猫发起DNS解析请求,而是向内置的公众DNS服务器(如谷歌DNS 8.8.8.8)发起DNS解析请求

这个时候可能出现上述“DNS设置不合理的后果(二)”中的情况,导致网站解析出来的IP不是最优,然后用户访问就慢了很多。

九、家庭宽带的DNS设置情况二(少数)

在这种情况下,电脑/手机/PAD等终端的每一次DNS域名解析只有一步:

终端向运营商DNS服务器218.85.15.16(此IP地址为举例,每个省都不一样)发起DNS解析请求。运营商DNS服务器在应答的时候,也是直接回复给终端。

在这种情况下,每一次域名的解析时延从大于20ms变成小于10ms,而且,因为少了中间设备可能存在的干扰,运营商DNS服务器直接把最优的网站IP地址回复给终端,终端访问网站的速度变快了许多。

十、如何让自己家里的电脑/手机/PAD等终端的DNS都是直接使用运营商DNS服务器呢?

第一步:查光猫,看一下自家网络的运营商DNS服务器IP地址是多少。查看光猫背面粘贴条上的信息,使用电脑登录上面的管理页面,查看光猫上的网络侧信息,在网络侧信息中会有DNS1和DNS2的信息,这个就是运营商local DNS服务器的IP地址;

第二部:配置路由器,查看路由器背面粘条上的信息,使用电脑登录上面的管理页面,在管理页面上找到“DHCP服务”的配置菜单项,将这里的DNS 服务器配置为第一步中查看到的IP地址。

设置成功后的验证:

十一、非常坑爹的路由器(雷,一定要避)

有一些非常坑爹的小众(便宜)的路由器,电脑/手机/PAD等终端的DNS就算设置成运营商的DNS服务器,它还是会对DNS请求报文基于“UDP +port 53”进行劫持,而且不去咨询运营商的DNS服务器去获取解析结果,而是向8.8.8.8等公众DNS及一些第三方小DNS发起域名解析请求,导致网站解析出来的IP不是最优,然后用户访问就慢了很多,甚至访问钓鱼网站。

总结:

1、互联网是基于TCP/IP协议的,所以每台终端都有一个IP地址,IP地址就像门牌号,网络设备就是通过识别IP地址进行转发的 。

2、IP地址不好记,没有规律,所以人们更愿意使用有意义有规律的名称,即域名。

3、网络设备看不懂域名,所以需要有个设备和协议,把域名解析成IP地址,这就是DNS系统和DNS协议,很显然,DNS极其重要。

4、DNS解析对网速的影响有2个方面,第一方面,完成解析这个事情本身的时延,是大还是小?第二方面,解析出来的IP,是不是最合理的,距离用户最近的?其中,第二方面影响的权重要比第一方面大很多。

5、所以,光猫和路由器上的DNS设置非常重要,强烈推荐把DNS设置为用户所接入的运营商省份的DNS服务器地址,可以避免很多不理想的情况,能够有效提高网速,并提升网络稳定性。

6、路由器的质量非常重要,一定要选购大品牌质量好的路由器。有约xx%的路由器,能够对目的地指向它的DNS请求,比较任性地进行解析,导致网络变差。在这里面,还有一小部分的路由器,更为过分,对目的地不是指向它的DNS请求,也劫持了,然后任性地进行解析,导致网络变差。

最近发表
标签列表