域名服务器解析过程及原理

钛金网络(www.tjmsn.com

 

第一步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器。
. Z! |2 y4 Y( U- J3 ~3 t/ H6 z
0 e/ ^& ^- s! K" R$ P$ X5 `  ]8 K  a
第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回。;
( `+ X: S5 u, z+ S/ z* j5 b) K
第三步:如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址。y4 }. U& ^: P}/ u
第四步:本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址。/ n) G! p/ _

  W' M- w, k7 m/ v% t; g0 T
第五步:重复第四步,直到找到正确的纪录。& A4 r" p( U% u* n3 ]( R
 L) [
第六步:本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。
. p( {+ s2 Y$ R. |

 p8 {
让我们举一个例子来详细说明解析域名的过程.假设我们的客户机如果想要访问站点:www.9125.info,客户本地的域名服务器是dns.company.com,一个根域名服务器是NS.INTER.NET,所要访问的网站的域名服务器是ns1.lovewebhost.com,域名解析的过程如下所示:
; ]% y- u9 V: {# V8 o
1 x" V$ l- `; r2 D1 v. L( K5 j6 n(1)
客户机发出请求解析域名www.9125.info的报文, e% M/ h' W2 Y$ z* L! V
/ E; M; x7 I  ~+ ]3 x
(2)
本地的域名服务器收到请求后, 查询本地缓存, 假设没有该纪录, 则本地域名服务器dns.company.com则向根域名服务器NS.INTER.NET发出请求解析域名www.9125.info
6 M. S2 x1 N/ g' U5 V* s( ]5 S! X& {/ {& d! ~! d% w
(3)
根域名服务器NS.INTER.NET收到请求后查询本地记录得到如下结果:9125.info NS ns1.lovewebhost.com(表示9125.info域中的域名服务器为:ns1.lovewebhost.com, 同时给出ns1.lovewebhost.com的地址,并将结果返回给域名服务器dns.company.com
& j9 ~/ p1 \% ]7 s# T& }/ O1 P/ |# [8 w# v! T" Z
(4)
域名服务器dns.company.com 收到回应后,再向ns1.lovewebhost.com发出请求解析域名。www.9125.info的报文。: z

: ~8 w. s/ R( T1 ~0 l9 a/ v# b(5)
域名服务器ns1.lovewebhost.com 收到请求后,开始查询本地的记录,找到如下一条记录www.9125.info,  A 1.1.1.1(表示9125.info域中域名服务器ns1.lovewebhost.comIP地址为:1.1.1.1,并将结果返回给客户本地域名服务器dns.company.com% a% q! O; , |

5 `' C; x- P- ^1 ^5 N9 m. j(6)
客户本地域名服务器将返回的结果保存到本地缓存,同时将结果返回给客户机。
1 x5 o& z  ]( y4 J/ k( S/ V% n9 C% {1 X4 _1 N  y
这样就完成了一次域名解析过程。

 

为了帮助理解,我画了一张图,并把空间、域名的一些关联也画了进去。
$ a5 b: Y3 w! n; x
. f, _3 H. b) [$ C+ d' ~2 H

DNS.jpg (75.71 KB)

2008-4-23 22:30


# `- `( p% p/ r4 [  G- c2 @* n$ n$ F
理解域名服务器解析非常的关键,这可以帮助我们解决很多问题,比如: x

域名9125.info由服务器解析到服务器,并关闭服务器9125.info帐户 D1 j/ ~) }2 p1 t( k
A
是上海电信用户,几小时内访问过域名9125.info/ J# G7 K& ]- o! s
B
是上海电信用户,未访问9125.info
. m) F) c3 L5 EC
是上海网通用户,未访问9125.info
6 C/ ?* v% x1 V2 d8 XD
是北京网通用户,几小时内访问过域名9125.info
7 W/ R$ G. r* }# Q' b% a
结果只有B能访问9125.info是什么原因?
( m/ B. b7 b! C$ |6 W- Y5 D; Q2 @A
D都因为几小时内访问过,所以他们使用的当地域名服务器缓存中保存的都是解析到服务器
的数据,而服务器已经被关闭,所以无法访问。
6 F- p' x  y+ w6 ?) ZB
虽然自己没有访问过9125.info,但是使用同域名服务器的顾客A访问过9125.info,所以缓存中保存的也是解析到服务器
的数据,所以无法访问。
8 c2 x9 t/ j* kC
使用的域名服务器上的顾客没有访问过9125.info,所以上海网通的域名服务器会向美国的根域名服务器发出请求,...,然后得到的是修改后解析到服务器
的数据,所以该顾客可以访问。
) `$ P) N+ U5 D# ^' d" z4 G9 i" U, k) J. @& U* S9 y& y9 h2 ]# t! o
A
BD顾客什么时候能访问网站? k

! G) u! h6 _# V+ i% ?1.
取决于域名商服务器向根域名服务器发送信息频率,如果你修改了,而服务器没有发送,那也是白搭,国外一些域名商通常都是即时发送的。国内不是清楚,但从原理上来看这是前提。
8 c" \. M8 ^' g9 J
6 G/ E. p: E5 |* g) s" X0 b2.
域名商服务即时发送的前提下,取决于TTL的设置,TTL全称Time-To-Live表示域名解析记录在DNS服务器中的存留时间(有些域名商不允许修改而采用某定值),比如设置3600,就是有效时间3600秒也是1小时,1小时后当地域名服务器会重新向根服务器发送请求,TTL是一把双刃剑如果设置的过短,影响网站的打开速度;如果设置的过大,搬空间时,就会造成有些顾客访问到的是旧服务器,而有些顾客访问到的是新服务器,但搬空间毕竟是少数,这里我建议大家设置成86400,也就是24小时,如果需要搬空间就提前修改TTL可以把值设置的小一点,等解析好之后再修改回来。
" s3 B' B1 S) t( J" v
2 e1 w0 Y) t! t6 y
我们知道在使用默认ISP域名服务器的前提下,域名解析的生效时间是由TTL决定的。从理论上说,如果我们换掉计算机使用的默认域名服务器,使用一个新的未打开过这个域名的域名服务器,那么我们就可以打开网站。opendns.com使这个理论变成了现实。大家可以用208.67.222.222208.67.220.220这两个免费的域名服务器替换到自己默认的域名服务器。(操作方法见这里)当然opendns的妙用还不仅在这里,你甚至可以在巨大的opendns缓存中删除域名的记录,http://www.opendns.com/support/cache/,从而忽略TTL的设置