zoukankan      html  css  js  c++  java
  • Network | DNS

    DNS作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。DNS 使用TCP和UDP端口53。全球范围有386个“根域名服务器”,分成13组,分别编号为A至M)。

    域名解析Address Resolution

    以查询 zh.wikipedia.org 为例:

    客户端发送查询报文"query zh.wikipedia.org"至DNS服务器,DNS服务器首先检查自身缓存,如果存在记录则直接返回结果。
    如果记录老化或不存在,则

    1. DNS服务器向根域名服务器root name server发送查询报文"query zh.wikipedia.org",根域名服务器返回 .org 域的权威域名服务器地址,这一级首先会返回的是顶级域名的权威域名服务器。
    2. DNS服务器向 .org 域的权威域名服务器authoritative name server发送查询报文"query zh.wikipedia.org",得到 .wikipedia.org 域的权威域名服务器地址。
    3. DNS服务器向 .wikipedia.org 域的权威域名服务器发送查询报文"query zh.wikipedia.org",得到主机 zh 的A记录,存入自身缓存并返回给客户端。

    从客户机到本地DNS服务器之间是递归查询,而本地DNS与其他DNS服务器之间是迭代查询;

    域名解析器DNS resolvers

    The client-side of the DNS is called a DNS resolver. It is responsible for initiating and sequencing the queries that ultimately lead to a full resolution (translation) of the resource sought, e.g., translation of a domain name into an IP address.


    A DNS query may be either a non-recursive query or a recursive query:

    • A non-recursive query is one in which the DNS server provides a record for a domain for which it is authoritative itself, or it provides a partial result without querying other servers.
    • A recursive query is one for which the DNS server will fully answer the query (or give an error) by querying other name servers as needed. DNS servers are not required to support recursive queries.

    The resolver, or another DNS server acting recursively on behalf of the resolver, negotiates use of recursive service using bits in the query headers.
    Resolving usually entails iterating through several name servers to find the needed information. 

    记录类型

    1. 主机记录(A记录):RFC 1035定义,A记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上。
    2. 别名记录(CNAME记录): RFC 1035定义,CNAME记录用于将某个别名指向到某个A记录上,这样就不需要再为某个新名字另外创建一条新的A记录。
    3. IPv6主机语录(AAAA记录): RFC 3596定义,与A记录对应,用于将特定的主机名映射到一个主机的IPv6地址。
    4. 服务位置记录(SRV记录): RFC 2782定义,用于定义提供特定服务的服务器的位置,如主机(hostname),端口(port number)等。
    5. NAPTR记录: RFC 3403定义,它提供了正则表达式方式去映射一个域名。NAPTR记录非常著名的一个应用是用于ENUM查询。

    域名污染DNS spoofing

    一般来说,在互联网上一般都有可信赖的域名服务器,但为减低网络上的流量压力,一般的域名都会把外部的域名服务器资料暂存起来,待下次有其他机器要求解析域名时,可以立即提供服务。一旦有关网域的局域域名服务器的缓存受到污染,就会把网域内的电脑导引往错误的服务器或服务器的网址。一部连上了互联网的电脑都会使用互联网服务供应商提供的域名服务器。这个服务器一般只会服务供应商的客户,通常都会将部分客户曾经请求过的域名暂存起来,这种服务器被称为非权威服务器,其应答称非权威应答。缓存污染攻击就是针对这一种服务器,以影响服务器的用户或下游服务。

    在中国大陆,对所有经过防火长城Great Firewall的在UDP的53端口上的域名查询进行IDS入侵检测,一经发现与黑名单关键词相匹配的域名查询请求,会马上伪装成目标域名的解析服务器返回虚假的查询结果。由于通常的域名查询没有任何认证机制,而且域名查询通常基于无连接不可靠的UDP协议,查询者只能接受最先到达的格式正确结果,并丢弃之后的结果。

    • 对于不了解相关知识的网民来说,由于系统默认使用的ISP提供的域名查询服务器查询国外的权威服务器时即被防火长城污染,进而使其缓存受到污染,因此默认情况下查询ISP的服务器就会获得虚假IP地址;而用户直接查询境外域名查询服务器(比如 Google Public DNS)时有可能会直接被防火长城污染,从而在没有任何防范机制的情况下仍然不能获得目标网站正确的IP地址。
    • 由于受限于TCP连接的可靠性,防火长城理论上未对TCP协议下的域名查询进行污染,故现在能通过强制使用TCP协议查询真实的IP地址。而现实的情况是,防火长城对于真实的IP地址也可能会采取其它的手段进行封锁,或者对查询行为使用连接重置的方法进行拦截,故能否真正访问可能还需要其它翻墙的手段。

    2014年1月21日下午三点半,中国互联网顶级域名解析不正常,出错网站解析到的网址是65.49.2.178,这个IP位于美国北卡罗来纳州的Dynamic Internet Technology,即ziyoumeng的开发公司。

  • 相关阅读:
    python自定义排序
    flex 布局
    display: table-cell; 元素上下左右居中,子元素无宽高
    transform 方法 上下左右元素居中 子元素无宽高
    flex 方法上下左右居中 子元素无宽高
    兼容-02
    兼容
    jS辨别访问浏览器判断是android还是ios系统
    选项卡
    返回顶部
  • 原文地址:https://www.cnblogs.com/linyx/p/3749067.html
Copyright © 2011-2022 走看看