DNS

Introduce

域名系统(英文:Domain Name System,缩写:DNS)是因特网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

递归 vs 迭代

dns查询

图中cis.poly.edu向dns.poly.edu发出的是递归查询请求,而剩下的三个查询是迭代查询,简单说来,递归查询时每个DNS服务器都以自己的名义向下一个服务器发送DNS请求(如果它不知道查询结果的话),直到得到结果。

迭代查询,DNS服务器的“心态”比递归查询时更好了,如果一个DNS服务器不知道结果,它不会接着问其他的服务器,而是告诉请求者“我这里没有你想要的结果,你可以去xxx那里看看”

example

dns-example

$ nslookup www.baidu.com
Server:     192.168.0.1
Address:    192.168.0.1#53

Non-authoritative answer:
www.baidu.com   canonical name = www.a.shifen.com.
Name:   www.a.shifen.com
Address: 115.239.210.27
Name:   www.a.shifen.com
Address: 115.239.211.112

$ dig +trace www.baidu.com
; <<>> DiG 9.8.3-P1 <<>> +trace www.baidu.com @8.8.8.8
;; global options: +cmd
.           5202    IN  NS  e.root-servers.net.
.           5202    IN  NS  h.root-servers.net.
.           5202    IN  NS  l.root-servers.net.
.           5202    IN  NS  i.root-servers.net.
.           5202    IN  NS  a.root-servers.net.
.           5202    IN  NS  d.root-servers.net.
.           5202    IN  NS  c.root-servers.net.
.           5202    IN  NS  b.root-servers.net.
.           5202    IN  NS  j.root-servers.net.
.           5202    IN  NS  k.root-servers.net.
.           5202    IN  NS  g.root-servers.net.
.           5202    IN  NS  m.root-servers.net.
.           5202    IN  NS  f.root-servers.net.
;; Received 228 bytes from 8.8.8.8#53(8.8.8.8) in 123 ms

com.            172800  IN  NS  a.gtld-servers.net.
com.            172800  IN  NS  d.gtld-servers.net.
com.            172800  IN  NS  j.gtld-servers.net.
com.            172800  IN  NS  g.gtld-servers.net.
com.            172800  IN  NS  l.gtld-servers.net.
com.            172800  IN  NS  h.gtld-servers.net.
com.            172800  IN  NS  m.gtld-servers.net.
com.            172800  IN  NS  f.gtld-servers.net.
com.            172800  IN  NS  i.gtld-servers.net.
com.            172800  IN  NS  k.gtld-servers.net.
com.            172800  IN  NS  b.gtld-servers.net.
com.            172800  IN  NS  c.gtld-servers.net.
com.            172800  IN  NS  e.gtld-servers.net.
;; Received 491 bytes from 202.12.27.33#53(202.12.27.33) in 92 ms

baidu.com.      172800  IN  NS  dns.baidu.com.
baidu.com.      172800  IN  NS  ns2.baidu.com.
baidu.com.      172800  IN  NS  ns3.baidu.com.
baidu.com.      172800  IN  NS  ns4.baidu.com.
baidu.com.      172800  IN  NS  ns7.baidu.com.
;; Received 201 bytes from 192.42.93.30#53(192.42.93.30) in 354 ms