DNS是计算机域名系统 (Domain Name System)
- 域名系统采用类似目录树的等级结构。
域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。
- 域名服务器为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发服务器。
域名解析是将域名映射为IP地址的过程。
- DNS是应用层协议,client端(一般指浏览器)构建DNS查询请求,依次被传输层,网络层,数据链路层等封装传送到达DNS服务器端,最终client端接收到DNS响应消息
- DNS主要基于UDP运输层协议
- 一次UDP名字服务器交换可以短到两个包:一个查询包、一个响应包。一次TCP交换则至少包含9个包:三次握手初始化TCP会话、一个查询包、一个响应包以及四次分手的包交换。
考虑到效率原因,TCP连接的开销大得,故采用UDP作为DNS的运输层协议,这也将导致只有13个根域名服务器的结果。
- 一次UDP名字服务器交换可以短到两个包:一个查询包、一个响应包。一次TCP交换则至少包含9个包:三次握手初始化TCP会话、一个查询包、一个响应包以及四次分手的包交换。
小插曲,为什么只有13台根域名解析服务器?
- 因为要UDP报文中包含所有的根服务器信息
- 所以现在只能放13条地址在一个包里,也就是416字节,
- 在IPV4下一个单独的包,解析后只能有512字节用来描述这些跟域名服务器。一个UDP数据包(512bit)必须包括所用跟服务的主机名和IP 。一个完整的IP 包括8 * 4 个字节 也就是 32 个。(11111111.11111111.11111111.11111111)
- 那么IP占用是32 * 13 = 416 。十三台服务器的主机 是 A 到 M (13)其中每个字母占 7 个长度 ( A 表示 为 1000001)(M 表示为 1001101)总共长度为 7 * 13 = 91 。IP+主机名 = 507 所以一个UDP数据包只能放 13 个 这就是根服务器 目前只能有 13个而且主机名只是 A到M 命名的原因
- 假设是14个 IP + 主机名 = 14 * 32 + 7 * 14 = 546。都已经超过UDP的报文长度了
- 讲了一大堆理论的东西,真正的原因还是因为互联网这东西是美国兴起的,自然占据了主动权,所以目前中国没有根域名服务器!但是在2000年初,国家有了很多关于国家安全的措施。特此2018国庆,预祝我们祖国越来越昌盛!
- 关于为什么中国没有根域名服务器的解析
如有错误希望指正
域名的分层结构
DNS 查询的顺序
- 是否是本机
- 是否是缓存
- HOSTS文件查询
- DNS服务器查询
下面来个生动形象的例子
黑色粗线,表示域名的分层结构!
箭头表示访问的顺序