1、DNS是一个分布式数据库系统用来提供主机名和IP地址之间的映射,之所以称为分布式原因的原因是因特网上没有一台主机知道这类映射的全部信息,当然也不可能做到,因为数据量实在太大了

2、应用程序通过一个叫resolver的程序(也可以认为是DNS的客户端)调用DNS服务,通常在UNIX系统下由gethostbyname(由主机名得到IP地址)和gethostbyaddr(由IP地址得到主机名)这两个库函数实现

3、不是每个name server都知道如何和其他所有的name sever通信的,但它们都必须知道如何和root name server通信。例如当它们不知道请求的主机名www.baidu.com的IP地址时,首先需要和root name server进行通信,取得顶级域名服务器com的IP地址,然后进一步和它进行通信,由此不断地递归查找,知道找到目标主机名的IP地址为止

4、DNS报文格式如上图所示,其中identification字段用来唯一标识一个报文。flags字段是该报文的标志位,其中几个重要的字段为:1)QA:当QA为0时为询问报文,QA=1时为响应报文,2)AA字段的意思为“autoritative answer”,即返回的IP地址的确是在该服务器的域名管理范围内的,而不是从其他途径获得的,3)RD,“recursion desired”,如果该字段没被置位,并且被访问的域名服务器没有authoritative answer,那么该服务器就会返回一串其他其他域名服务器的信息用于域名解析,4)RA,"recursion available",置位,表示服务器支持递归查询,通常除了根域名服务器以外的服务器都支持。最后numbers of questions代表问题的数量,问题的具体内容在扩展的questions字段,对于answers等其他三个字段的意义也是类似的

5、DNS报文中的questions字段的格式如上图所示,其中query name为询问的主机名。重点需要关注的是question type字段,因为询问得到的回答就是和它相对应的。它分为好几种类型,最常见的为 1)A,表示询问query name对应的IP地址。2)PTR,表示询问IP地址对应的主机名,最后的query class字段一般设为1,表示IP地址

6、至于最后的answers,authority,additional information字段的格式是一样的,如上图所示,其中domain name为要查找的域名,type与之前的question type相对应,time-to-live字段表示的是该信息能在客户端缓存中保存的时间,一般为2天。最后的两个字段分别表示结果的长度和具体内容。例如对于A类型的查找,那么长度字段就为4,数据就是查询的域名对应的IP地址

7、Caching:为了减少重复的DNS查询带来的网络带宽的消耗,通常会将第一次查询得到的结果放在name server的缓存中,而不是resolver中,因为resolver是与具体应用绑定的。

8、TCP or UDP:通常DNS的询问和应答都是通过UDP传输的,但是UDP的数据报长度往往小于512个字节,当应答报文的长度大于512时,报文就会被截断。此时就需要改用TCP进行传输,因为TCP可以用报文段进行分次传输的,并没有对数据有长度上的限制

《TCP/IP详解 卷一》读书笔记-----DNS的更多相关文章

  1. 《TCP/IP详解》读书笔记

    本书以UNIX为背景,紧贴实际介绍了数据链层.网络层.运输层   一.整体概念   1.各层协议的关系,只讨论四层 各层常见的协议:   网络层协议:IP协议.ICMP协议.ARP协议.RARP协议. ...

  2. TCP/IP详解 卷一学习笔记(转载)

    https://blog.csdn.net/cpcpcp123/article/details/51259498

  3. 『TCP/IP详解——卷一:协议』读书笔记——10

    2013-08-22 22:57:17 3.8 ifconfig命令 这个命令在Linux系统下可以通过下面的指令阅读说明文档: ifconfig 由于书中作者用的系统比较早的某Unix系统,所以我的 ...

  4. 『TCP/IP详解——卷一:协议』读书笔记——01

    从今日起开始认真研读TCP/IP详解这本经典制作,一是巩固我薄弱的计算机网络知识,二来提高我的假期的时间利用率.将心得与思考记录下来,防止白看-哦耶 2013-08-14 18:47:06 第一章 概 ...

  5. 【TCP/IP详解 卷一:协议】第二章:链路层

    2.1 引言 链路层的三个目的: (1)为IP模块发送和接收IP数据报. (2)为ARP模块发送ARP请求和接收ARP应答.地址解析协议:ARP. (3)为RARP模块发送RARP请求和接收RARP应 ...

  6. 《TCP/IP详解卷一:协议》 概述

    分层           TCP/IP协议族是一组不同层次上的多个协议的组合.TCP/IP通常被认为是一个四层次协议系统.   链路层(数据链路层或网络接口层):通常包括操作系统中的设备驱动程序和计算 ...

  7. 『TCP/IP详解——卷一:协议』读书笔记——02

    2013-08-16 20:07:11 1.3 TCP/IP的分层 这是一个很好的图,要多看!!图上有些细节会在今后的笔记中提到,看不懂不必深究. IP是网络层上的主要协议,同时被TCP和UDP(这两 ...

  8. 『TCP/IP详解——卷一:协议』读书笔记——11

    2013-08-23 20:00:18 第4章 ARP:地址解析协议 4.1 引言 ARP(Address Resolution Protocol,地址解析协议)是获取物理地址的一个TCP/IP协议. ...

  9. 『TCP/IP详解——卷一:协议』读书笔记——18

    2013-08-27 15:44:52 第7章 Ping程序 7.1 引言 “ping”这个名字来源于声纳定为操作.Ping程序由Mike Muuss编写,目的是为了测试另一台主机是否可达.该程序发送 ...

  10. 『TCP/IP详解——卷一:协议』读书笔记——14

    2013-08-25 11:32:06 第5章 RARP:逆地址解析协议 5.1 引言 具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址.但是无盘机,如X终端或无盘工作站,则需要采用其 ...

随机推荐

  1. html 隐藏滚动条

    1. html 标签加属性 <html lang="en" class="no-ie" style="overflow:hidden;" ...

  2. 【Effective Java】4、覆盖equals时请遵守通用约定

    package cn.xf.cp.ch02.item8.transitivity; public class Point { private final int x; private final in ...

  3. RAID选项

    RAID:Redundant Array Independent Disk(独立磁盘构成的具有冗余能力的阵列) 最常见的为RAID类型为:0,1,5和10:3和6很少见,但在某些环境中仍然有用. RA ...

  4. ABAP->内表数据下载到CSV格式(原创转载请注明)

    需求:将alv上面的数据计算到内表中区,然后通过自定义按钮进行下载到csv格式中 附加:现在基本不用csv导出了,但是有些变态需求强行要求,也只好研究出来了,excel与txt导出很简单,那就不多说了 ...

  5. ES6--class基本使用

    类定义 ES6完整学习阮老师的ECMAScript6入门. 技术一般水平有限,有什么错的地方,望大家指正. 以前我们使用ES5标准定义一个构造函数的过程如下: function Person(name ...

  6. VCenter克隆虚拟机报错msg.snapshot.error-QUIESCINGERROR

    参考文献: http://www.mrtechjunkie.com/error-occurred-taking-snapshot-msg-snapshot-error-quiescingerror/ ...

  7. Android项目实战(九):CustomShapeImageView 自定义形状的ImageView

    一个两年前出来的第三方类库,具有不限于圆形ImageView的多种形状ImageView,项目开发必备 github下载地址:https://github.com/MostafaGazar/Custo ...

  8. IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)

    目录 IP协议首部格式地址解析协议 ARP逆向地址解析协议 RARP网际控制报文协议 ICMP网际组管理协议IGMP IP 数据报首部 IP数据报首部格式: 最高位在左边,记为0 bit:最低位在右边 ...

  9. App开发流程之通用宏定义及头文件

    工欲善其事,必先利其器. 在正式实现各种炫酷的功能和UI前,做好准备工作是提高后续开发效率的必经之路. 所以,这个系列,我不是在各种堆技术,更关注的是“兵马动”之前的“粮草行”,有些繁琐,但当清晰理出 ...

  10. 【读书笔记】iOS-简单的数据驱动程序

    一,效果图. 二,,工程文件如下图所示: 三,DataModel.h #import <Foundation/Foundation.h>   @interface DataModel : ...