引言

域名系统( D N S)是一种用于 T C P/ I P应用程序的分布式数据库,它提供主机名字和 I P地址之间的转换及有关电子邮件的选路信息。

域名系统内两部分组成:名字服务器和解析器。其中,名字服务器是指DNS服务器,缓存域名和IP地址的映射关系;名字解析器,指的是DNS服务所提供的一组API,可供其他应用程序调用,通过这些调用来实现域名和IP地址的相互转换。

DNS协议是应用层协议,其实现并未在系统内核中。

DNS基础

右边实现由域名到IP地址的转换。

左边实现由IP地址到域名的转换。

即域名服务器有两台,主备。主服务器从本地文件读入域名配置信息,而备份服务器定期向主服务器读取域名配置信息。这也是为什么配置DNS服务器时需要配置两个IP地址(cmd下ipconfig /all命令可查看)。

每个名字服务器必须知道如何同根的名字服务器联系。 1 9 9 3年4月时有8个根名字服务器,所有的主名字服务器都必须知道根服务器的 I P地址(这些 I P地址在主名字服务器的配置文件中,主服务器必须知道根服务器的 I P地址,而不是它们的域名)。根服务器则知道所有二级域中的每个授权名字服务器的名字和位置。

DNS的报文格式

这个报文由1 2字节长的首部和4个长度可变的字段组成。

标识字段由客户程序设置并由服务器返回结果。客户程序通过它来确定响应与查询是否

匹配。

16 bit的标志字段被划分为若干子字段,如下:

从最左位开始依次介绍各子字段:

• QR 是1 bit字段: 0表示查询报文, 1表示响应报文。

• o p c o d e是一个4 bit字段:通常值为0(标准查询),其他值为1(反向查询)和2(服务器状态请求)。

• A A是1 bit标志,表示“授权回答(authoritative answer)”。该名字服务器是授权于该域

的。

• T C是1 bit字段,表示“可截断的 (t r u n c a t e d )”。使用U D P时,它表示当应答的总长度超过5 1 2字节时,只返回前5 1 2个字节。

• R D是1 bit字段表示“期望递归(recursiondesired)”。该比特能在一个查询中设置,并

在响应中返回。这个标志告诉名字服务器必须处理这个查询,也称为一个递归查询。如

果该位为 0,且被请求的名字服务器没有一个授权回答,它就返回一个能解答该查询的

其他名字服务器列表,这称为迭代查询。在后面的例子中,我们将看到这两种类型查询

的例子。

• R A是1 bit字段,表示“可用递归”。如果名字服务器支持递归查询,则在响应中将该比

特设置为 1。在后面的例子中可看到大多数名字服务器都提供递归查询,除了某些根服

务器。

• 随后的3 bit字段必须为0。

• r c o d e是一个4 bit的返回码字段。通常的值为0(没有差错)和 3(名字差错)。名字差错只有从一个授权名字服务器上返回,它表示在查询中制定的域名不存在。

随后的 4个16 bit 字段说明最后 4个变长字段中包含的条目数。对于查询报文,问题( q u e s t i o n )数通常是 1,而其他3项则均为0。类似地,对于应答报文,回答数至少是 1,剩下的两项可以是0或非0。

DNS查询报文中的问题部分

查询名是要查找的名字,它是一个或多个标识符的序列。每个标识符以首字节的计数值

来说明随后标识符的字节长度,每个名字以最后字节为 0结束,长度为0的标识符是根标识符。

计数字节的值必须是 0 ~6 3的数,因为标识符的最大长度仅为 6 3。

查询名(即域名)取值方法如下:

每个问题有一个查询类型,而每个响应(也称一个资源记录,我们下面将谈到)也有一个类型。大约有 2 0个不同的类型值,下面仅列出几个:

最常用的查询类型是 A类型,表示期望获得查询名的I P地址。一个P T R查询则请求获得一个I P地址对应的域名。这是一个指针查询,我们将在 1 4 . 5节介绍。其他的查询类型将在 1 4 . 6节介绍。

查询类通常是1,指互联网地址(某些站点也支持其他非 I P地址)。

DNS响应报文中的资源记录部分

D N S报文中最后的三个字段,回答字段、授权字段和附加信息字段,均采用一种称为资源记录R R( Resource Record)的相同格式。

域名是记录中资源数据对应的名字。它的格式和前面介绍的查询名字段格式(图 1 4 - 6)相同。

类型说明 R R的类型码。它的值和前面介绍的查询类型值是一样的。类通常为 1,指I n t e r n e t数据。

生存时间字段是客户程序保留该资源记录的秒数。资源记录通常的生存时间值为 2天。

资源数据长度说明资源数据的数量。该数据的格式依赖于类型字段的值。对于类型 1( A记录)资源数据是4字节的I P地址。

注意:针对以上查询问题报文格式和资源记录报文格式中的域名部分,当存在重复值时,人使用压缩方式,即使用引用指向一个域名。

压缩方法很简单,当一个域名中的标识符是压缩的,它的单计数字节(范围由 0~6 3)中
的最高两位将被设置为 11。这表示它是一个 16 bit指针而不再是8 bit的计数字节。即当单计数字节的高两位为11时,即被设置为压缩。这时,域名将通过指针值来确定。wireshark抓包结果中,有很多是经过压缩的域名,可以将结果调整为二进整显示进行查看。

查询报文格式和资源记录报文格式中的类型取值

A 一个A记录定义了一个I P地址,它存储32 bit的二进制数。

P T R 指针记录用于指针查询。 I P地址被看作是 i n -a d d r . a r p a域下的一个域名(标识符串)。

C N A M E 这表示“规范名字 (canonicalname)”。它用来表示一个域名(标识符串),而有规范名字的域名通常被称为别名 ( a l i a s )。某些F T P服务器使用它向其他的系统提供一个易于记忆的别名。

例如, g a t e d服务器( 1 0 . 3节提到)可通过匿名F T P从g a t e d . c o r n e l l . e d u获得,但这里并没有叫做g a t e d的系统,这仅是为其他系统提供的别名。其他系统的规范名为g a t e d . c o r n e l l . e d u。

sun % host -t cname gated.cornell.edu

gated.cornell.edu CNAMCOMET.CIT.CORNELL.EDU

这里使用的-t选项来指明它是特定的查询类型。

H I N F O 表示主机信息:包括说明主机 C P U和操作系统的两个字符串。并非所有的站点均提供它们系统的 H I N F O记录,并且提供的信息也可能不是最新的。

sun % host -t hinfo sun

sun.tuc.noao.edu HINFO Sun-4/25 Sun4.1.3

抓包分析

以下是telnet中请求www.baidu.com,DNS请求过程。

请求:

应答:

注意,这里采用从telnet中访问www.baidu.com,而没有使用浏览器,这是因为使用浏览器会在下载完www.baidu.com的首页源码后,发出更多的请求,会干扰这里的学习和分析。

TCP/IP详解卷1:第十四章 DNS 域名系统相关推荐

  1. 概说《TCP/IP详解 卷2》第2章 mbuf:存储器缓存

    原文链接:mp.weixin.qq.com/s/NtGknV0MH- 本文要点 mbuf简介 mbuf数据结构 简单mbuf宏和函数 m_get函数 MGET宏 m_retry函数 常用mbuf宏和函 ...

  2. 《TCP/IP详解 卷1:协议》第4章 ARP:地址解析协议

    4.1 引言 本章我们要讨论的问题是只对TCP/IP协议簇有意义的IP地址.数据链路如以太网或令牌环网都有自己的寻址机制(常常为48 bit地址),这是使用数据链路的任何网络层都必须遵从的.一个网络如 ...

  3. 《TCP/IP详解卷1:协议》第6章 ICMP:Internet控制报文协议-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

  4. 《TCP/IP详解卷1:协议》第3章 IP:网际协议(2)-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

  5. TCP/IP详解卷1 - wireshark抓包分析

    TCP/IP详解卷1 - 系列文 TCP/IP详解卷1 - 思维导图(1) TCP/IP详解卷1 - wireshark抓包分析 引言 在初学TCP/IP协议时,会觉得协议是一种很抽象的东西,通过wi ...

  6. 《TCP/IP详解卷1:协议》读书笔记

    <TCP/IP详解卷1:协议>读书笔记 - QingLiXueShi - 博客园 https://www.cnblogs.com/mengwang024/p/4425834.html &l ...

  7. 《TCP/IP详解卷1》学习小结(一)------链接层

    开始学习<TCP/IP详解卷1>这本著作,每一章都要写一篇学习小结.        一.  总述 链接层位于整个网络协议suite的最低一层,与硬件关系密切,比如以太网,token rin ...

  8. TCP/IP详解卷2之插口层

    TCP/IP详解卷2之插口层篇 插口层概述 主要功能 splnet处理 socket结构 系统调用 进程.描述符和插口 socket系统调用 socreate函数 getsock和sockargs函数 ...

  9. 《TCP/IP详解卷1:协议》第5章 RARP:逆地址解析协议---读书笔记

    <TCP/IP详解卷1:协议>第5章 RARP:逆地址解析协议---读书笔记 1.引言 具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址.但是无盘机,如X终端或无盘工作站, ...

  10. 《TCP IP 详解卷1:协议》阅读笔记 - 第十章

    阅读须知:笔记为阅读<TCP IP 详解卷1:协议>后摘抄的一些知识点,其间也有加入一些根据英文原版的自己翻译和结合网上知识后的理解,所以有些段落之间并不能够串联上或者知识点与书上略有差别 ...

最新文章

  1. laravel修改storage目录和bootstrap目录
  2. linux查看目录访问权限,Linux文件访问权限
  3. Android开发之shape自定义ProgressBar进度条样式
  4. 学习C# - Hello,World!
  5. wordpress+lnmp出现 404 Not Found nginx
  6. 广度优先搜索——好奇怪的游戏(洛谷 P1747)
  7. 18. web robot
  8. 利用javascript验证各种格式
  9. Android应用模块之间通信模式
  10. 通过ip如何免费反查域名?
  11. ssl证书过期怎么解决?
  12. 精尽 Netty 原理与源码专栏( 已经完成 61+ 篇,预计总共 70+ 篇 )
  13. torchsummary 中input size 异常的问题
  14. 丅rust是什么意思_rust是什么意思_rust的翻译_音标_读音_用法_例句_爱词霸在线词典...
  15. 下载安装Tomcat
  16. 欧洲杯:葡萄牙连送乌龙球,遭德国4-2大逆转,下一场葡萄牙对战法国会有怎样的结局呢?
  17. 网络工程师——网络隔离与入侵检测
  18. springboot+jsp健身房教练课程预约管理系统
  19. 阿里云服务器远程连接及账户密码登录
  20. 安卓APP安装到手机报解析包出错

热门文章

  1. 多元函数的向量表示_多元高斯分布完全解析
  2. 使用STM32Cube MX为STM32 CAN总线快速配置上手教程_HAL库_CAN协议_STM32_附波特率计算工具
  3. 【Yocto学习入门】01 - Yocto简介
  4. JavaScript闭包研究
  5. Android:基于OpenCV实现身份证识别(C++)——移植图像算法
  6. 四超多强 一文看懂中国CV独角兽格局
  7. 刚开发的游戏《天黑请闭眼》
  8. 第六章 政策方案的规划与抉择
  9. 【IKAnalyzer中文分词器详解-(1)分词逻辑】
  10. 数析三剑客 numpy pandas matplotlib 基础操作