TCP-IP详解卷1-14:DNS(Domain Name System):域名系统
一:介绍
DNS 是域名系统的缩写,它是由解析器和域名服务器组成的。
1: 域名服务器
域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。
其中域名必须对应一个IP地址,而IP地址不一定有域名。域名系统采用类似目录树的等级结构。
域名服务器为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发服务器。
2: 域名解析:将域名映射为IP地址的过程
在Internet上域名与IP地址之间是一对一(或者多对一)的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,
域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。
3: 域名系统
域名系统(DNS)是一种用于TCP/IP应用程序的分布式数据库,它提供主机名字和IP地址之间的转换及有关电子邮件的选路信息。
这里提到的分布式是指在Internet上的单个站点不能拥有所有的信息。
二:域名分类
1: 顶级域名可分为三个部分
A: arpa是一个用作地址到名字转换的特殊域。
B: 7个3字符长的普通域。有些书也将这些域称为组织域。
com:商用组织
edu:教育机构
gov:其他美国政府部门
int: 国际组织
mil:美国军事网点
net:网络
org:其他组织
C: 所有2字符长的域均是基于ISO3166中定义的国家代码,这些域被称为国家域,或地理域。
三:主辅服务器
1: 主名字服务器从磁盘文件中调入该区域的所有信息,而辅名字服务器则从主服务器调入所有信息
2: 当一个新主机加入一个区域时,区域管理者将适当的信息(最少包括名字和IP地址)加入到运行在主名字服务器上的一个磁盘文件中,然后通知主名字服务器重新调入它的配置文件。
辅名字服务器定时(通常是每隔3小时)向主名字服务器询问是否有新数据。如果有新数据,则通过区域传送方式获得新数据。
3: 当一个名字服务器没有请求的信息时,它将如何处理?
它必须与其他的名字服务器联系。(这正是D N S的分布特性)。
然而,并不是每个名字服务器都知道如何同其他名字服务器联系。
相反,每个名字服务器必须知道如何同根的名字服务器联系。
四:DSN报文格式
格式:标识(2B)+标志(2B)+问题数(2B)+资源记录数(2B)+授权资源记录数(2B)+额外资源记录数(2B)+查询问题+回答(资源记录数可变)+授权(资源记录数可变)+额外信息(资源记录数可变)
1: 标识字段由客户程序设置并由服务器返回结果。客户程序通过它来确定响应与查询是否匹配。
2: 2B字节的标志字段:QR(1bit)+opcode(4bit)+AA(1bit)+TC(1bit)+RD(1bit)+RA(1bit)+(zero3BIT)+rcode(4bit)
A: QR是1 bit字段:0表示查询报文,1表示响应报文。
B: opcode是一个4 bit字段:通常值为0(标准查询),其他值为1(反向查询)和2(服务器状态请求)。
C: AA是1 bit标志,表示“授权回答(authoritative answer)”。该名字服务器是授权于该域的。
D: T C是1 bit字段,表示“可截断的( truncated )”。使用U D P时,它表示当应答的总长度超过512字节时,只返回前512个字节。
E: R D是1 bit字段表示“期望递归( recursion desired)”。该比特能在一个查询中设置,并在响应中返回。
这个标志告诉名字服务器必须处理这个查询,也称为一个递归查询。如该位为0,且被请求的名字服务器没有一个授权回答,它就返回一个能解答该查询的其他名字服务器列表,这称为迭代查询。
F: RA是1 bit字段,表示“可用递归”。如果名字服务器支持递归查询,则在响应中将该比特设置为1。
在后面的例子中可看到大多数名字服务器都提供递归查询,除了某些根服务器。
G: 随后的3 bit字段必须为0。
H: rcode是一个4 bit的返回码字段。通常的值为0(没有差错)和3(名字差错)。
名字差错只有从一个授权名字服务器上返回,它表示在查询中制定的域名不存在。
3: 随后的4个16 bit 字段说明最后4个变长字段中包含的条目数。
对于查询报文,问题(question )数通常是1,而其他3项则均为0。
类似地,对于应答报文,回答数至少是1,剩下的两项可以是0或非0。
4: 查询问题:查询名+查询类型+查询类
A: 查询名:如gemini.tuc.noao.ed。每项最大长度为63
表示为:6gemini3tuc4noao3ed
B: 查询类型:大概有20个,不过绝大部分都过时,
A: 1: IP地址(获取查询名字的IP地址)
NS: 2: 名字服务器
CNAME: 5: 规范名称
PTR: 12: 指针记录(获取IP地址对应的域名)
HINPO: 13: 主机信息
MX: 15:邮件交换记录
C: 查询类
5: 最后三个字段格式相同(RR):域名+类型+类+生存时间+资源数据长度+资源数据
A:域名是记录中资源数据对应的名字。
B:类型说明R R的类型码。它的值和前面介绍的查询类型值是一样的。类通常为1,指Internet数据。
D:生存时间字段是客户程序保留该资源记录的秒数。资源记录通常的生存时间值为2天。
E:资源数据长度说明资源数据的数量。该数据的格式依赖于类型字段的值。对于类型1(A记录)资源数据是4字节的I P地址。
五:用UDP还是TCP(DNS主要使用UDP)
1: 注意到DNS名字服务器使用的熟知端口号无论对UDP还是TCP都是5 3。这意味着DNS均支持UDP和TCP访问,但我们使用tcpdump观察的所有例子都是采用UDP。
2: 当一个域的辅助名字服务器在启动时,将从该域的主名字服务器执行区域传送。
我们也说过辅助服务器将定时(通常是3小时)向主服务器进行查询以便了解主服务器数据是否发生变动。如果有变动,将执行一次区域传送。
区域传送将使用TCP,因为这里传送的数据远比一个查询或响应多得多。
3: 当名字解析器发出一个查询请求,并且返回响应中的TC(删减标志)比特被设置为1时,它就意味着响应的长度超过了512个字节,而仅返回前512个字节。
在遇到这种情况时,名字解析器通常使用TCP重发原来的查询请求,它将允许返回的响应超过512个字节。
既然TCP能将用户的数据流分为一些报文段,它就能用多个报文段来传送任意长度的用户数据。
TCP-IP详解卷1-14:DNS(Domain Name System):域名系统
最新推荐文章于 2024-04-17 22:14:12 发布