TCP-IP详解卷1-14:DNS(Domain Name System):域名系统

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能将用户的数据流分为一些报文段,它就能用多个报文段来传送任意长度的用户数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值