网络编程知识(11)--DNS

来源:互联网 发布:计算机专业不想编程 编辑:程序博客网 时间:2024/06/08 16:30

本文转载自: http://www.cnblogs.com/xumenger/p/4508258.html

DNS

简介

DNS是域名解析协议

在互联网中通过IP 地址来进行通信。但是IP 地址的表示形式是数字,很难进行记忆(比如116.213.120.232),所以为每个 IP取一个人类更易记忆的域名形式(比如www.google.com),而通过DNS 来把解析域名成为 IP(将方便人理解的命名格式解析成计算机能够理解的格式,也可以将IP 翻译成域名)

hosts文件

在Windows中,在C:\Windows\System32\drives\etc\下有一个 hosts 文件这里面配置的是静态的IP和域名的配置(一个IP对应一个域名),如果你的计算机想要访问互联网上的域名时,会首先解析hosts 文件,看看这里面有没有配置相应的域名的IP,如果有就直接使用这里的,如果没有则通过DNS 在网络上获取,所以hosts 的优先级高,也存在一个隐患,假如你不小心在hosts 里面配置错了,而你又没有检查出来就可能导致你配置错误的域名一直无法打开。

那为什么从hosts 转而使用DNS:

一方面是因为现在域名的数量实在是太多了(如果都放在hosts中,那么该文件可能达到几十个GB),那么名称解析效能下降

因为hosts 是在用户的机器上的,如果我的IP地址或者域名更改了,那么需要更改所有用户的hosts 文件,所以主机维护相当困难

所以虽然当前还是可以使用hosts,但是已经成为了一种非主流的选择,主要是用来进行实验使用

DNS服务的作用

将域名解析为IP 地址

客户端向DNS服务器(DNS服务器有自己的IP地址)发送域名查询请求

DNS服务器告知客户机Web服务器的IP 地址

客户机与Web 服务器通信

DNS查询过程(这是很重要的了解DNS原理的一个过程)

通过分级管理可以有效的管理全球上亿的域名信息(类似于在公司中,CEO只管理各个部门的经理;各个部门的经理只管理自己部门中的各个组长;各个组长只管理自己组的组员。至少这是一种比较有效的管理方式)

下面以一个客户机想要访问 www.benet.com 这个WEB服务器的过程来理解DNS的原理

这里写图片描述

1.客户机(PC)向首选DNS服务器发起请求:”你知道www.benet.com的IP吗?“如果首选DNS服务器知道(一般如果首选DNS服务器曾经解析过,那么会进行一段时间内的缓存,默认三天,如果正好在缓存时间内,那么首选服务器就会知道这个域名的IP),那么首选DNS 服务器就会直接给客户机返回域名的IP 地址

2.若首选DNS 服务器上没有相关信息,就不能直接返回域名的IP 地址,这时候,首选DNS 服务器就会去询问根DNS服务器(所有的DNS 服务器都知道全球的13 台DNS根服务器在哪里),根服务器可能不知道这个具体的 www.benet.com 的IP地址,但是它知道一级域 com 的IP(也就是说根服务器只负责维护所有的一级域,所以也就几百条数据在这里,虽然数据量少,但是它接受来自全球的请求,所以负载也很大)

3.根服务器将com 的IP地址返回给 首选DNS 服务器

4.首选DNS服务器再去请求 “com” DNS服务器:”你知道 www.benet.com的IP吗“,但是com DNS服务器也不知道 www.benet.com 的IP,但是com DNS 服务器知道 benet.com 的IP,

5.”com“DNS服务器将这个信息返回给 首选DNS 服务器

6.首选DNS服务器再去请求 “benet.com” DNS服务器,这时候 benet.com 服务器当然就会知道 www.benet.com的IP地址

7.”benet.com“DNS服务器将这个信息返回给首选DNS 服务器

8.首选DNS 服务器将获取到的 www.benet.com的IP返回给客户机

9.客户机根据获取到的www.benet.com 的IP地址来访问WEB服务器

10.WEB服务器返回相关的数据

域名空间结构

这里写图片描述

DNS查询类型

从查询方式上分

递归查询:要么做出查询成功的响应,要么做出查询失败的响应。一般客户机和服务器之间属于递归查询,即当客户机向DNS 服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS 服务器发出查询的请求,得到结果后转交给客户机

迭代查询:服务器受到一次迭代查询回复一次结果,这个结果不一定是目标IP 与域名的映射关系,也可以时其他DNS服务器的地址(为了更进一步的获取目标IP)

从查询内容上分

正向查询由域名查询IP 地址

反向查询由IP 地址查询域名

0 0