TCP/IP详解 014 DNS域名系统

域名系统(DNS)是一种用于TCP/IP应用程序的分布式数据库,它提供主机名字和IP地址之间的转换及有关电子邮件的选路信息。
这里提到的分布式是指在Internet上的单个站点不能拥有所有的信息。每个站点(如大学中的系、校园、公司或公司中的部门)保留它自己的信息数据库,并运行一个服务器程序供Internet上的其他系统(客户程序)查询。
从应用的角度上看,对DNS的访问是通过一个地址解析器(resolver)来完成的。
Unix主机中,该解析器主要是通过两个库函数gethostbyname和gethostbyaddr来访问的,前者接收主机名字返回IP地址,也就是正向解析,后者接收IP地址来寻找主机名字,也就是反向解析。
解析器通常是应用程序的一部分, 并不是什么操作系统的内核。
在一个应用程序请求TCP打开一个连接或使用UDP发送一个数据报之前,必须将一个主机名转换为一个IP地址。操作系统内核中的TCP/IP协议族对于DNS一点都不知道。

DNS的层次结构

DNS也有层次结构
每个结点(下图的圆圈)有一个至多63个字符长的标识。不区分大小写。以“.”结尾的域名称为绝对域名或完全合格的域名FQDN(Full Qualified Domain Name),例如sun.tuc.noao.edu.。如果一个域名不以点结尾,则认为该域名是不完全的。


image.png

顶级域名被分为三个部分:
1、arpa是一个用作地址到名字转换的特殊域
2、7个3字符长的普通域。有些书也称之为组织域
3、所有2字符长的域均是基于ISO3166中定义的国家代码,这些域被称为国家域或地理域 例如:cn、jp
常见的普通域:


image.png

DNS的一个重要特征是DNS种域名的授权。只有一个机构 即网络信息中心NIC负责分配顶级域和委派其他指定地区域的授权机构。

一个独立管理的DNS子树称为一个区域,一个常见的区域是一个二级域,如noao.edu。许多二级域将它们的区域划分成更小的区域。

一个区域的管理者必须为该区域提供一个主服务器和至少一个从属服务器。主服务器和从属服务器必须是独立冗余的。

主服务器:从磁盘文件中调入该区域的所有信息
从属服务器:从主服务器调入所有信息。
将从属服务器从主服务器调入信息成为区域传送。
对于新主机加入后的处理:

image.png

DNS的一个基本特性是使用超高速缓存。即当一个名字服务器收到有关映射的信息(主机名字到IP地址)时,它会将该信息存放在高速缓存中。这样若以后遇到相同的映射请求,就能直接使用缓存中的结果而无需通过其他服务器查询。

DNS的报文格式

image.png

这个报文由12字节长的首部和4个长度可变的字段组成。
标识字段由客户程序设置并由服务器返回结果。客户程序通过它来确定响应与查询是否匹配。
标志字段:16bit 被划分为若干子字段
image.png

  • QR :1bit字段 ,0表示查询报文,1表示响应报文
  • opcode :4bit 字段,通常值为0(标准查询),其他值为1(反向查询)和2(服务器状态请求)
  • AA:1bit标志,表示“授权回答(authoritative answer)”。该名字服务器是授权于该域的。
  • TC :1bit字段,表示 “可截断的(truncated)” 使用UDP时,它表示当应答的总长度超过512字节时,只返回前512个字节。
  • RD :1bit字段,表示“期望递归(recursion desired)” ,该比特能在一个查询中设置,并在相应中返回。这个标志告诉名字服务器必须处理这个查询,也称为一个递归查询。如果该位为0,且被请求的名字服务器没有一个授权回答,它就返回一个能解答该查询的其他名字服务器列表,这称为迭代查询。
  • RA :1bit字段,表示“可用递归”,如果名字服务器支持递归查询,则在响应中将该比特设置为1.
  • 随后的3bit字段必须为0
  • rcode :4bit的返回码字段。通常的值为0(没有差错)和3(名字差错)。名字差错只有从一个授权名字服务器上返回,它表示在查询中制定的域名不存在。
    随后的4个16bit字段说明最后4个变长字段中包含的条目数,对于查询报文,问题(question)数通常是1,而其他3项则均为0.类似地,对于应答报文,回答数至少是1,剩下两项可以是0或非0.。
DNS查询报文中的问题部分
image.png

image.png
image.png

每个问题有一个查询类型,而每个响应(也称为一个资源记录)也有一个类型,查询类型是类型的一个超集(superset),如图:


image.png

A 期望获得查询名的IP地址(正向解析)
PTR 指针记录(反向解析)

查询类通常是1,指互联网地址

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

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

image.png

域名是记录中资源数据对应的名字。它的格式和前面介绍的查询名字段格式相同。
类型说明RR的类型码,它的值和前面介绍的查询类型值是一样的,类通常为1,指Internet数据
生存时间是客户程序保留该资源记录的秒数,资源记录通常的生存时间值为2天,
资源数据长度说明资源数据的流量。该数据的格式依赖于类型字段的值。对于类型1(A记录)资源数据是4字节的IP地址。

指针查询

指针查询方式:即给定一个IP地址,返回与该地址对应的域名

image.png

我们可以从图中看出,当一个组织加入Internet,并获得DNS域名空间的授权,如noao.edu 则它们也获得了对应IP地址的in-addr.arpa域名空间的授权。在noao.edu这个例子中,它是网络号为140.252的B类网络。在DNS树中结点in-addr.arpa的下一级必须是该IP地址的第一字节(例中为140),再下一级为该IP地址的下一个字节(252),依此类推。但应牢记的是DNS名字是由DNS树的底部逐步向上书写的,这意味着对于IP地址为140.252.13.33的sun主机,它的DNS名字为33.13.252.140.in-addr.arpa。
必须写出4字节的IP地址,因为授权的代表是基于网络号:A类地址是第一字节,B类地址是第一、二字节,C类地址则是第一、二、三字节。IP地址的第一字节一定位于in-addr的下一级,但FQDN却是自树底往上书写的。如果FQDN由顶往下书写,则这个IP地址的DNS名字将是arpa.in-addr.140.252.13.33 而它对应的域名将是edu.noao.tuc.sun
如果DNS树中没有独立的分支来处理这种地址—名字的转换,将无法进行这种反向转换,除非从树根开始依次尝试每个顶级域。

资源记录

A 一个A记录定义了一个IP地址,它存储32bit的二进制数
PTR 指针记录用于指针查询,IP地址被看作是in-addr.arpa域下的一个域名(标识符串)
CNMAE 这表示“规范名字(canonical name)”。它用来标识一个域名(标识符串),而有规范名字的域名通常被称为别名(alias)。
HINFO 表示主机信息:包括说明主机CPU和操作系统的两个字符串。并非所有的站点均提供它们系统的HINFO记录,并且提供的信息也可能不是最新的。
MX 邮件交换记录

高速缓存

为了减少Internet上DNS的通信量,所有的名字服务器均使用高速缓存。
在标准的Unix实现中,高速缓存是由名字服务器而不是由名字解析器维护的。
因为名字解析器作为每个应用的一部分,应用不可能总处于工作状态,所以将高速缓存放在只要系统处于工作状态就能起作用的程序中。

用UDP还是TCP

1、需要分片时 当名字解析器发出一个查询请求,并且返回响应中的TC(删减标志)比特被设置为1时,它就意味着响应的长度超过了512个字节,而仅返回前512个字节。
2、当从属服务器启动时,需要进行区域传送

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,042评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 89,996评论 2 384
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,674评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,340评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,404评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,749评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,902评论 3 405
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,662评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,110评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,451评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,577评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,258评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,848评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,726评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,952评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,271评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,452评论 2 348

推荐阅读更多精彩内容