学校的网速是电信的千兆网络,所以一般来说网速很快,但是最近常有师兄和同门同学感觉网速很慢,又碰到论坛的朋友设置DNS时候的问题
在这个背景下产生了彻底研究DNS的兴趣。
按照1->2->3的顺序逐步理清思路,解决问题。
1.清空浏览器的缓存(注意不是cookies),缓存是个好东西,它可以提高访问某个网址的速度(不用重复请求相同的数据)
但是有时候缓存里的内容太多,反而影响浏览器的相应速度。
关于缓存的原理可以参考这篇博文http://www.cnblogs.com/skynet/archive/2012/11/28/2792503.html
测试清空缓存后,访问网页的速度仍然没有起色。
2.排除网速问题
由于下载具体的资源时候网速还是很快的所以排除网速问题。所以我往DNS的角度去考虑。
3.DNS原理和设置
3.1DNS基本原理
DNS 是域名系统 (Domain Name System) 的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
简单的说,DNS上存的是一张大表,每次输入一个网址,就到这张大表去查一下对应的ip地址,然后访问具体的ip,返回给用户。
所以查找到这张表的速度越快,访问的速度也会越快(当然直接输入ip地址访问是另一码事)。
访问网址的简单流程:
输入网址——》查询DNS服务器得到ip——》访问ip返回具体页面
3.2查询本地DNS
(1)在windows上查看DNS最快捷的方式是打开命令行工具输入ipconfig /all
一般来说本地连接和无线网络连接的信息是我们需要关心的。
图1:本地网络DNS使用情况实例
我本地的有线网络的DNS是我手动指派的,无线网络的是自动获取的。
(2)当然也可以打开本地连接-属性查询,不赘述。
3.3设置DNS之手动篇
手动配置DNS最重要是DNS源的选择。一般都用工具找到最快响应的DNS服务器作为自己的DNS。
DNS工具推荐DNSBenchmark,我有线网络的DNS的218.2.135.1就是根据测试结果修改的,这是中国电信的DNS,至于8.8.8.8是Google公司提供的,感觉访问英文网页会快些。
随着地理距离和网络拓扑结构的变化都可能影响实际DNS响应速度。所以实际测试快,才是真的快!
在这个软件的TabularData选项卡下还可以看到具体的测试参数,这个软件的Sort Fastest First是把3种参数加权后进行的排名,以 218. 2.135. 1为例:
218. 2.135. 1 | Min | Avg | Max |Std.Dev|Reliab%|
----------------+-------+-------+-------+-------+-------+
- Cached Name | 0.001 | 0.002 | 0.002 | 0.000 | 100.0 |
- Uncached Name | 0.010 | 0.156 | 0.423 | 0.127 | 100.0 |
- DotCom Lookup | 0.034 | 0.294 | 0.837 | 0.140 | 98.0 |
---<-------->---+-------+-------+-------+-------+-------+
a.center-dns.jsinfo.net
CHINANET-BACKBONE No.31,Jin-rong Street
DNSBenchmark下载:https://www.grc.com/dns/benchmark.htm
具体使用可以参考 http://www.techbang.com/posts/13552-choose-the-right-dns-n-times-faster
3.4设置DNS之自动篇
公司等等大型局域网里,自动获取IP和DNS方法很难实行。一般都需要自己填写IP和DNS。
但一般在路由器的局域网里,可以自动获取IP和DNS。
3.5设置DNS之程序篇
windows下的设置IP和DNS可以通过简单的cmd命令完成,但是每次输入太麻烦了,整个程序呗!
关键代码示例:
//设置静态IP 网关和子网掩码
netsh interface IP set address "本地连接" static 10.10.216.123 255.255.255.0 gateway=10.10.216.20
//设置DNS地址
netsh interface IP set dns "本地连接" static addr=202.119.230.8
//设置备用DNS地址
netsh interface IP add dns "本地连接" addr=8.8.8.8
//设置DHCP自动分配IP
netsh interface IP set address "本地连接" source=dhcp
//设置DHCP自动分配DNS
netsh interface IP set dns "本地连接" source=dhcp
一个完整的实例,我在学校的不同地点工作使用不同的IP,并且连路由器时候自动获取就可以了。
因此上述代码进行了不同的修改,并且加上了简单的用户输入读取功能。
可以将以下代码复制到记事本,根据实际情况对ip和dns信息做些修改,然后直接另存为“设置IP和DNS.bat”名字即可。
@echo ####################################
@echo # Config IP Tool #
@echo ####################################
@echo.
@echo off
title 设置IP.bat
color 0A
:menu
@echo 输入 1 设置本地IP地址为图科楼IP
@echo 输入 2 设置本地IP地址为学二IP
@echo 输入 3 设置本地IP地址为科技楼IP
@echo 输入 4 自动获取ip
set /p input=请输入操作数:
if "%input%" == "1" goto LibraryIP
if "%input%" == "2" goto StudentDormIP
if "%input%" == "3" goto ScienceBdIP
if "%input%" == "4" goto AutoAllocateIP
@echo 输入有误
@echo.
goto menu
:LibraryIP
netsh interface IP set address "本地连接" static 10.10.201.112 255.255.255.0 gateway=10.10.201.20
@echo 设置IP成功
netsh interface IP set dns "本地连接" static addr=202.119.230.8
@echo 设置主DNS成功
netsh interface IP add dns "本地连接" addr=218.2.135.1
@echo 设置备用DNS成功
goto end
:StudentDormIP
netsh interface IP set address "本地连接" static 10.10.216.123 255.255.255.0 gateway=10.10.216.20
@echo 设置IP成功
netsh interface IP set dns "本地连接" static addr=202.119.230.8
@echo 设置主DNS成功
netsh interface IP add dns "本地连接" addr=8.8.8.8
@echo 设置备用DNS成功
goto end
:ScienceBdIP
netsh interface IP set address "本地连接" static 10.10.144.112 255.255.255.0 gateway=10.10.144.20
@echo 设置IP成功
netsh interface IP set dns "本地连接" static addr=218.2.135.1
@echo 设置主DNS成功
netsh interface IP add dns "本地连接" addr=8.8.8.8
@echo 设置备用DNS成功
goto end
:AutoAllocateIP
@echo setting ip address of dhcp
netsh interface IP set address "本地连接" source=dhcp
netsh interface IP set dns "本地连接" source=dhcp
@echo ip has been set successfully
:end
@echo 设置完成
pause
@echo Exiting...
-------------------------------------
最后补充一些DNS和IP方面的知识:
第一个是DNS服务器的问题:
windows平台和linux平台均可搭建DNS服务器。搭建的时候有选项,设置DNS服务器的类型,三选一:
DNS主服务器,这是主要的服务器,它在内存和磁盘上都保持有整个数据库的拷贝。如果系统崩溃,该数据库能重载到内存中。
DNS辅服务器,起辅助的作用,它获得一份来自主DNS服务器的数据库备份。当主服务器作修改时,辅服务器也要求作相应修改。
DNS缓存服务器,用来存储网络上用户需要的网页和内容的网络服务器。
以上在百度上找的,比较准确。
第二是关于ip租约的问题:
就像租房子按月租,使用一个ip地址会有租约问题,就是到一个时间要续租。
一般这个过程都是自动完成的,如果在DHCP的时候需要手动重新获取(Releasing and Renewing a DHCP Lease),可以用:
ipconfig /release 释放DHCP获取的地址信息。
ipconfig /renew 重新获得DHCP分配的地址信息。
第三个是DHCP服务的问题
只有在DHCP服务开启的时候,才可以得到自动分配的ip和dns。一般系统中是默认开启DHCP服务的,
如果要停止使用命令:net stop dhcp;如果重新开启使用命令:net start dhcp。