定义:是一种用于TCP/IP应用程序的分布式数据库。(分布式数据库:指利用高速计算机网络将物理上分散的多个数据存储单元连接起来组成一个逻辑上统一的数据库。分布式数据库的基本思想是将原来集中式数据库中的数据分散存储到多个通过网络连接的数据存储节点上,以提高存储性和并发访问性。)

从应用的角度上看,对DNS的访问是通过一个地址解析器来完成,在Unix主机中,该解析器主要是通过两个库函数gethostbyname和gethostbyaddr来访问的,在编译应用程序时与应用程序连接在一起。详情可以参考《Unix环境高级编程》16.3-Socket一章。

顶级域名分为3部分:

1)  arpa是一个用作地址到名字转换的特殊域

2)  7个3字符长的普通域(也叫组织域),包括:com、edu、gov、int、mil、net、org

3)  2字符长的域属于国家代码(也叫国家域或地理域)

关于高速缓存:

一个名字服务器不应该向一个根名字服务器发出期望递归的查询。因为期望递归查询要求服务器必须处理这个查询,而根名字服务器一般会返回一个能解答该查询的其他名字服务器列表,这称为迭代查询。如果强行把这个RD(期望递归)标志位置1,会严重影响性能。下面这张图是借用百度的一张,浅显易懂的说明了域名的解析过程:

DNS同时占用UDP和TCP的53端口,是为数不多的单个应用协议同时使用两种传输协议的例子。首先我们要明确,在绝大多数的情况下,我们都是把DNS报文封装在UDP的数据报中,那么什么时候它才使用TCP的封装呢?

一个名字服务器负责一个或多个区域,一个区域的管理者必须为该区域提供主、辅名字服务器,且必须是独立且冗余的,主名字服务器从磁盘文件中调入该区域的所有信息,而辅名字服务器定时(通常每隔3小时)向主名字服务器询问是否有新数据到来,如有新数据,则会执行一次区域传送,这个区域传送将使用TCP,因为传送的数据量比较大。即,当名字解析器发出查询请求,并且当响应的长度超过512字节时,udp方式无法完成,它的最大长度被规定为512字节,所以名字解析器采用TCP来重发原来的查询请求,它将允许返回的响应超过512字节。既然TCP能将用户的数据流分为一些报文段(segment),它就能用多个报文段来传送任意长度的用户数据。

由此可以看出,由于DNS主要使用UDP,无论是名字服务器还是名字解析器都必须自己处理超时和重传,并且,DNS的查询和响应通常要经过广域网,所以,会存在一定的分组丢失率和往返时间的不确定性,这样对于DNS客户程序,一个好的重传和超时程序就显得更为重要。

DNS--域名系统 随笔的更多相关文章

  1. DNS 域名系统 (Domain Name System)

      DNS 域名系统 (Domain Name System) 许多应用层软件经常直接使用域名系统 DNS (Domain Name System),但计算机的用户只是间接而不是直接使用域名系统. 因 ...

  2. DNS 域名系统的简介

    一.DNS域名系统简介 1.网络中为了区别各个主机,必须为每台主机分配一个唯一的地址, 这个地址即称为“IP 地址.但这些数字难以记忆, 所以采用“域名” 的方式来取代这些数字. 2.当某台主机要与其 ...

  3. 【RL-TCPnet网络教程】第27章 DNS域名系统基础知识

    第27章      DNS域名系统基础知识 本章节为大家讲解DNS(Domain Name System,域名系统),通过前面章节对TCP和UDP的学习,需要大家对DNS也有个基础的认识. (本章的知 ...

  4. DNS 域名系统与邮件服务器

    目录 DNS 域名系统 定义 域名分类 解析流程 DNS分类 资源记录 格式 资源记录类型 用bind搭建一台DNS服务器 安装bind 创建自己的zone文件 在主配置文件中,增加自己的zone 检 ...

  5. python 网络编程(五)---DNS域名系统

    1.域名系统定义 DNS计算机域名系统由域名服务器和域名解析器组成.通常输入的是网址就是一个域名. 2.域名查询 查询方式包括: 1)正向查询:由域名查找对应的IP(如:www.baidu.com—& ...

  6. TCP/IP详解 卷一(第十四章 DNS:域名系统)

    域名系统(DNS Domain Name System)是一种用于TCP/IP应用程序的分布式数据库,它提供主机名字和IP地址之间的转换及有关电子邮件的选路信息. 从应用角度上看,对DNS的访问时通过 ...

  7. DNS域名系统

    1. 什么是DNS? DNS是域名系统的缩写,DNS通过将域名与实际的Web服务器连接来帮助引导Internet上的流量.从本质上讲,它需要一个人性化的请求 – 像simcf.cc这样的域名 – 并将 ...

  8. TCP/IP详解学习笔记(8)-DNS域名系统

    前面已经提到了访问一台机器要靠IP地址和MAC地址,其中,MAC地址可以通过ARP协议得到,所以这对用户是透明的,但是IP地址就不行,无论如何用户都需要用一个指定的IP来访问一台计算机,而IP地址又非 ...

  9. DNS:域名系统

    概述: DNS的作用在于将域名转换为对应的IP地址. DNS名字空间和UNIX文件系统相似,也是树形结构.以"."结尾的域名称为FQDN(Full Qualified Domain ...

  10. DNS域名系统,简述工作原理

    DNS工作原理: 当DNS客户端需要在程序中使用名称时,它会查询DNS服务器来解析该名称.客户端发送的每条查询信息包括三条信息:指定的DNS域名,指定的查询类型,DNS域名的指定类别.基于UDP服务, ...

随机推荐

  1. web前端生成图片之探索踩坑

    前段时间,产品和运营整了个非常变态的需求,要求将一个活动页面输出为图片,然后用户进行分享 开始以为是用户自己手动截图分享,没想到后来不是,细思极恐,感叹需求之变态. 从网上找了N个方案,最后确定使用  ...

  2. rownum详解

    对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,且rownum不能以任何表的名称作为前缀. ...

  3. tcp/ip RFC

     http://www.ietf.org/rfc.htmlhttp://www.rfc-editor.org

  4. ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'

    原因:找不到mysql.sock文件 解决方法: 1 找到mysql.sock文件位置 echo "show variables" | mysql | grep "soc ...

  5. 数据挖掘-MovieLens数据集_电影推荐_亲和性分析_Aprioro算法

    #!/usr/bin/env python2 # -*- coding: utf-8 -*- """ Created on Tue Feb  7 14:38:33 201 ...

  6. 2016.6.20 eclipse中maven的配置

    前期准备: 安装maven,配置maven的环境变量,并且通过mvn -v验证安装成功.   网上的教程说,需要在线或者离线安装maven integration for eclipse插件. 但是我 ...

  7. 【dubbo】服务提供者运行的三种方式

    [dubbo]服务提供者运行的三种方式 学习了:https://blog.csdn.net/yxwb1253587469/article/details/78712451 1,使用容器: 2,使用自建 ...

  8. C++ 关于类与对象在虚函数表上唯一性问题 浅析

    [摘要] 非常多教材上都有介绍到虚指针.虚函数与虚函数表.有的说类对象共享一个虚函数表,有的说,一个类对象拥有一个虚函数表.还有的说,不管用户声明了多少个类对象,可是,这个VTABLE虚函数表仅仅有一 ...

  9. 谈 API 的撰写 - 总览

    背景 之前团队主要的工作就是做一套 REST API.我接手这个工作时发现那些API写的比较业余,没有考虑几个基础的HTTP/1.1 RFC(2616,7232,5988等等)的实现,于是我花了些时间 ...

  10. mysql rpm安装,以及修改charset

    http://my.oschina.net/u/1156660/blog/343154?fromerr=tmDGGiDL 修改charset: http://stackoverflow.com/que ...