Windows系统自从vista之后,windows 7、 windows 2008,及windows 2008 R2都有了一个新的功能,就是能够智能的判断网络是否连通,也就是说是否能够访问网站,如下图:
网络连通:
网络不通:
做这个实验时,我只对网络的DNS做了更改,一个正确指向DNS服务器,一个随便设置了一个,其它网络配置没有做一点更改。这就说明,windows是通过DNS来判断网络的连通性。
为了证明这一点,我用扑包工具做了进一步验证,如下图:
对以上图说明:
1、当我把DNS地址设为1.1.1.1(我的网络里没有这个DNS服务器),这时候网络不通,那么,主机每过一段时间,都会向UDP为53的端口发送一个长度为85的数据包,我们知道,UDP 53为DNS的端口,这说明,当网络不通时,主机一直在查找它网卡上设定的DNS服务器。
2、当我改变DNS地址为10.111.1.1(我的网络里有这个DNS服务器)。
3、4、于是就发送一组组播地地址找到网关
5、通过网络广播计算机名称
6、连接到一个IP=207.46.61.90,端口为80的服务器,验证DNS可用,网络连通。
207.46.61.90:80——美国 华盛顿州雷德蒙德市Microsoft公司
还有一个问题,就是这个DNS是不是一定要指向连通internet的DNS服务器呢?指向内部的不和Internet相通的DNS服务器行不行?我做了以下实验,我把本机做为DNS服务器,把它网卡上的DNS指向自己,并把这台主机和Internet断开。
扑包结果:
可以看到,它是通过根提示寻找DNS是否可用。
当我在本地DNS转发器配置正确的DNS后:
扑包结果:
还是连接到一个IP=207.46.61.90,端口为80的服务器,验证DNS可用,网络连通。
207.46.61.90:80——美国 华盛顿州雷德蒙德市Microsoft公司
结论:windows 7 是通过连接Microsoft公司的207.46.61.90:80服务器,来智能验证网络的连通性的。