`

TCP/IP详解学习笔记(8)-DNS域名系统

阅读更多

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

1.DNS系统介绍

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

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

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

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

2.DNS协议

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

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

3.反向查询

正向查询指的是通过域名得到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)查询。

4.其他问题的讨论

4.1.DNS服务器高速缓存

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

4.2.用UDP还是TCP

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

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

相关推荐

    TCP/IP详解卷1-3

    同时,还涵盖了DNS(域名系统)的工作机制,以及SMTP(简单邮件传输协议)、FTP(文件传输协议)和HTTP(超文本传输协议)等应用层协议的实现细节。 卷3:《TCP/IP详解:卷III:TCP事务》 此卷聚焦于TCP协议的高级...

    TCP/IP协议技术详解学习笔记

    - **域名系统(DNS)**:DNS是一个分布式数据库系统,其主要功能是将人类可读的域名转换为计算机可识别的IP地址。 - **RFC(Request for Comments)**:RFC文档是TCP/IP协议族的标准文档,详细定义了各种协议的具体...

    TCPIP详解学习笔记

    TCP/IP详解学习笔记主要涵盖了网络通信的基础概念和TCP/IP协议族的核心内容。TCP/IP协议是为了克服计算机之间因操作系统和表达信息方式的差异而导致的沟通难题而诞生的,它是一个协议族,包含了众多协议,如IP、ICMP...

    TCP-IP卷1、2读书笔记

    《TCP/IP卷1、2读书笔记》是对网络通信领域经典之作——"TCP/IP详解"的深入学习和理解的结晶。TCP/IP(Transmission Control Protocol/Internet Protocol)是互联网的基础,是计算机网络之间进行通信的标准协议集。...

    TCP-IP学习总结笔记.pdf

    DNS(域名管理系统)用于将易于记忆的域名转换为IP地址,常使用端口53。 2. **传输层**:分为TCP(传输控制协议)和UDP(用户数据报协议)。TCP是一种面向连接的、可靠的协议,通过三次握手建立连接,并确保数据的...

    TCP-IP详解1-3卷

    特别是DNS(域名系统),它是互联网上的重要基础设施,负责将人类可读的域名转换为IP地址。 PDF格式的中文版使得这套书更加易于阅读和理解,高清晰度保证了文字和图表的清晰,非影印的特点避免了质量损失,方便读者...

    TCP-IP详解卷一:协议

    通过对《TCP/IP详解卷一:协议》的学习,读者不仅可以掌握TCP/IP的基本原理,还能提升在网络设计、故障诊断和系统优化方面的能力。无论你是网络管理员、程序员还是网络爱好者,这都是一本不可或缺的参考书籍。

    unix大全(涵盖了UNIX学习的方方面面)

    8.SCO TCP/IP网络管理---工具介绍 9.SCO TCP/IP网络管理---信任关系 10.SCO TCP/IP网络管理---FTP的配置 11.SCO TCP/IP网络管理---守护进程inetd 12.SCO TCP/IP网络管理---守护进程(daemon) 13.SCO TCP/IP网络管理-...

    TCP-IP-Illustrated-vol1:《 TCPIP详解卷1:协议》笔记

    《TCP/IP详解卷1:协议》是一本深入探讨TCP/IP协议族的经典著作,由W. Richard Stevens撰写。这本书详尽地介绍了TCP/IP协议的基本概念、工作原理和实现细节,是IT从业者和网络工程师的重要参考资料。笔记内容可能...

    TCPIP详解学习笔记.doc

    "TCPIP详解学习笔记" TCP/IP 协议族是一个协议族的统称,包括了 IP 协议、ICMP 协议、TCP 协议、UDP 协议、DNS 协议等等。TCP/IP 协议族按照层次由上到下,层层包装。最上面的就是应用层了,这里面有 http、ftp ...

    TCPIP详解》学习笔记

    TCP/IP详解的学习笔记涵盖了IP协议的关键概念和技术细节。IP,即网际协议,是互联网通信的基础,具有不可靠和无连接的特点。不可靠意味着IP不保证数据报能成功到达目的地,错误时会丢弃数据包并发送ICMP消息。可靠性...

    Linux学习笔记.txt

    ### Linux学习笔记——基本网络配置详解 #### 一、基本网络配置 在Linux系统中,进行网络配置是一项非常基础但也十分重要的任务。本章节将详细解释几个关键的配置文件及其功能,帮助用户更好地理解并掌握如何对...

    新版Android开发教程+笔记5--模拟器、应用1、2

    - **`-dns-server <server>`**:在模拟系统上使用给定的 DNS 服务。 - **`-cpu-delay <cpudelay>`**:调节 CPU 模拟。 - **`-no-boot-anim`**:禁用动画来快速启动。 - **`-no-window`**:禁用图形化窗口显示。 - **...

    图解HTTP笔记(个人笔记).md

    - 网络的基础架构是TCP/IP协议族,它是现代互联网运行的基础。 - **TCP/IP协议族介绍:** - TCP/IP协议族定义了数据在网络中的传输方式,分为四层:应用层、传输层、网络层和数据链路层。 - **应用层:** - ...

    LwIP协议栈源码详解

    LwIP(Light-Weight IP)是一个开源的TCP/IP协议栈实现,专门针对嵌入式系统进行优化,以减少代码大小和内存占用,同时还能提供完整的TCP/IP协议功能。 文档的主要内容包括对LwIP协议栈核心组件的讲解,涵盖了内存...

    Socket网络编程学习笔记(1)

    DNS(域名系统)是互联网的基础之一,用于将人类可读的主机名映射到机器可识别的IP地址。`System.Net.Dns`类提供了访问DNS服务的静态方法,主要包括: - **`GetHostName()`**:返回当前运行代码的计算机的主机名。 ...

    HCIA复习笔记及HCIP笔记

    在私有网络环境中,通常使用私有IP地址范围(如10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16),这些地址不会在公网中出现,用于节省公有IP资源。 - **公网主机**:公网主机指的是可以直接访问互联网的主机,拥有公网...

Global site tag (gtag.js) - Google Analytics