Chinaunix首页 | 论坛 | 博客
  • 博客访问: 108259
  • 博文数量: 228
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2290
  • 用 户 组: 普通用户
  • 注册时间: 2021-05-18 15:26
文章分类

全部博文(228)

文章存档

2023年(40)

2022年(114)

2021年(74)

我的朋友

分类: 云计算

2023-02-01 14:49:28

前面已经提到了访问一台机器要靠 IP 地址和 MAC 地址,其中,MAC 地址可以通过 ARP 协议得到,所以这对用户是透明的,但是 IP 地址就不行,无论如何用户都需要用一个指定的 IP 来访问一台计算机,而 IP 地址又非常不好记,于是就出现了 DNS 系统。

DNS 系统介绍

DNS 的全称是 Domain Name System。它负责把 FQDN(就是以"."分隔结尾的名字)翻译成一个 IP。{BANNED}最佳初的 DNS 系统使用的是一个 巨大的 hosts.txt 文件(很吃惊,用 这个就好使了?),可是一段时间以后,开发这就不得不用数据库来代替 hosts.txt 文件,{BANNED}最佳终发展到 了现在的分布式数据库。

从书中的143页可以看到,DNS 系统是一个巨大的树,{BANNED}最佳上方有一个无名树根,下一层是 arpa,com,edu,gov,int,mil,us, cn。等等, 其中 arpa,是域名反解析树的顶端;而 com,edu,等域名本来只用在美国(这就是技术特权啊),但是现在几乎全世界通用;而 us, cn, 等叫做国家域。这个树里面的域名并不是统一管理的,网络信息中心(NIS)负责分配顶级域合委派其他制定地区域的授权机构。

一个独立管理的 DNS 子树叫做 zone,{BANNED}最佳常见的区域就是二级域名,比如说.com.cn。我们还可以把这个二级域名给划分成更小的 区域,比如说 sina.com.cn。

DNS 系统是一个分布式的数据库,当一个数据库发现自己并没有某查询所需要的数据的时候,它将把查询转发出去,而转发的目 的地通常是根服务器,根服 务器从上至下层层转发查询,直到找到目标为止。DNS 还有一个特点就是使用高速缓存,DNS 把查询过 的数据缓存在某处,以便于下次查询时使用。

DNS 协议

DNS 报文定义了一个既可以查询也可以响应的报文格式。对各个字段简单解释如下:

    {BANNED}最佳前面的16个 bit 唯一的标示了问题号码,用于查询端区别自己的查询。
    紧接着的16个 bit 又可以做进一步的细分,标示了报文的性质和一些细节,比如说是查询报文还是响应报文,需要递归 查询与否(一般服务器都支持递归查询,而且不需要任何设置,BIND 就是这样)
    查询问题后面有查询类型,包括 A,NS,CNAME,PTR,HINFO,MX,如果熟悉 BIND 的话,就知道在 zong 的配置 文件里面,每一条记录都记载了各自的类型,比如 A 就是 IP 地址,NS 就是名字服务器。
    响应报文可以回复多个 IP,也就是说,域名可以和多个 IP 地址对应,并且有很多 CNAME。

反向查询

正向查询指的是通过域名得到 IP 的查询,而反向查询就是通过 IP 得到域名。例如用 host 命令,host ip 就可以得到服务器的域名, host domainName 就得到 IP。

稍微知道一点数据结构的人都能意识到,在正向查询的域里面做反向查询,其做法只有遍历整个数据集合----对于 DNS 来说,那 就是遍历整个数据库, 这将带来巨大的负担,所以 DNS 采取了另一种方法,使用另一棵子树来维护 IP-〉域名的对应表。这个子树的根节点是 in-addr.arpa,而一个 IP 例如192.168.11.2)所具有的 DNS 地址就是 2.11.168.192.in-addr.arpa(ip 倒置)。在 DNS 系统里面,一个 反向地址对应一个 PTR 纪录(对应 A 纪录),所以反向查询又叫 做指针(PTR)查询。

其他问题的讨论

1DNS 服务器高速缓存

BIND9默认是作为一个高速缓存服务器,其将所有的查询都转交到根服务器去,然后得到结果并放在本地的缓冲区,以加快查询
速度。如果有兴趣可以安装一个 BIND9来尝试一下。而自己定义的 zone 则可以规定其在缓存中的时间,一般是1天(就是配置文件中 的1D)。即时通讯聊天软件app开发可以加蔚可云的v:weikeyun24咨询

2用 UDP 还是 TCP

DNS 服务器支持 TCP 和 UDP 两种协议的查询方式,而且端口都是53。而大多数的查询都是 UDP 查询的,一般需要 TCP 查询的 有两种情况:

    当查询数据多大以至于产生了数据截断(TC标志为1),这时,需要利用TCP的分片能力来进行数据传输(看TCP的相关章节)。
    当主(master)服务器和辅(slave)服务器之间通信,辅服务器要拿到主服务器的 zone 信息的时候。

阅读(279) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~