夜光序言:
什么才算是真正的内心坚强?
无情无义毫无牵挂羁绊?
还是信念坚定永无贪婪之心?
都不是,
人皆有私念。
真正坚强的人。
必有誓死想要守护的东西。
正文:
DNS:因特网的目录服务
因特网上的主机和人类一样,也可以使用多种方式进行识别。
主机的一种识别方法是用它的主机名,这些名字便于记忆,也乐于被人们接受。
主机也可以使用所谓 IP 地址进行识别。一个 IP 地址由 4 个字节组成,并有着严格的层次结构。我们说 IP 地址具有层次结构,是因为从左至右它包含了越来越详细的关于主机的位置息。
人们喜欢便于记忆的主机名标识,而路由器则喜欢定长的、有着层次结构的 IP 地址。因此需要一种能进行主机名到 IP 地址转换的目录服务,这就是域名系统。
1 DNS 提供的服务
DNS是:
①一个由分层的DNS服务器实现的分布式数据库;
②一个允许主机查询分布式数据库的应用层协议。
DNS 服务器通常是运行 BIND 软件服务器机器。DNS 协议运行在 UDP 之上,使用 53 号端口。
DNS 用于将用户提供的主机名解析为 IP 地址。例如当某个用户主机上的一个浏览器请求某个网页时,为了使用户的 HTTP 请求消息发送到 Web 服务器,用户主机首先必须获得Web 服务器的 IP 地址。
在前面介绍的 Socket 编程接口中有专门的函数如 gethostbyname()允许程序发起一个主机名到 IP 地址的查询。在 Windows 系统中专门有一个服务叫 DNSClient 完成 DNS 查询工作(控制面板-管理工具-服务中可见)。
除了进行主机名到 lP 地址的转换外,DNS 还提供了一些重要的服务: .主机别名,主机别名比主机规范名更容易记忆,例如 www.Genius.edu,其真实的服务器名字(主机规范名)并不是 www.Genius.edu,大家可以用 ping 命令发现它真实的名字。
.邮件服务器别名,一个单位或域中负责邮件收发的主机。
.负载均衡,DNS 也可以用于在冗余的服务器之间进行负载分配。可以配置很多冗余的Web 服务器,一个 IP 地址集合对应于同一个规范主机名。DNS 数据库中存储着这些 IP 地址集合。
当客户机为映射到这个 IP 地址集合的名字发出一个 DNS 请求时,该服务器用包含全部这些地址的消息进行回答,但在每个回答中轮回这些地址排放的顺序。
因为客户机通常总是向 IP 地址排在最前面的服务器发送 HTTP 请求消息,所以就在所有这些冗余的 Web 服务器之间均衡分配负载。这是一种非常传统的负载均衡技术。
2 工作机理概述
假设运行在用户主机上的某些应用程序(如 Web 浏览器)需要将主机名转换为 IP 地址。
这些应用程序将调用 DNS 的客户机端,并指明需要被转换的主机名。在很多系统中,应用程序执行这种转换调用函数 gethostbyname()。
DNS 的客户机端接收到转换请求后,向网络中发送一个 DNS 查询消息。所有的 DNS 请求和回答消息使用 UDP 数据报经端口 53 发送。过若干时间后,用户主机上的客户机端接收到一个映射的 DNS 回答消息。这个查询结果则被传递到应用程序。
从用户调用应用程序的角度看,这是一个简单、直接的转换服务。但事实上,实现这个服务的系统非常复杂,它由分布于全球的大量 DNS 服务器组成。
夜光
实验 域名系统层次结构(nslookup 命令)
【实验目的】
•理解域名简析的过程
【实验过程】
1. nslookup 的基本用法
Windows 系统中提供了 nslookup 工具,一个用来查询域名服务基础结构信息的程序。
nslookup 提供了两种模式:交互式和非交互式。非交互模式只能完成一次主机或域名的查询。
交互模式容许用户查询域名服务器,获取各种关于主机和域名的信息或输出一个域内的主机列表。在交互式查询中可以设置更改查询的类型。
实例: nslookup 获取帮助
C:\>nslookup
默认服务器: cache3-xx
Address: 221.11.1.67
> help
命令: (标识符以大写表示,[] 表示可选)
NAME - 打印有关使用默认服务器的主机/域 NAME 的信息
NAME1 NAME2 - 同上,但将 NAME2 用作服务器
help or ? - 打印有关常用命令的信息
set OPTION - 设置选项
all - 打印选项、当前服务器和主机
[no]debug - 打印调试信息
[no]d2 - 打印详细的调试信息
[no]defname - 将域名附加到每个查询
[no]recurse - 询问查询的递归应答
[no]search - 使用域搜索列表
[no]vc - 始终使用虚拟电路
domain=NAME - 将默认域名设置为 NAME
srchlist=N1[/N2/.../N6] - 将域设置为 N1,并将搜索列表设置为 N1、N2 等
root=NAME - 将根服务器设置为 NAME
retry=X - 将重试次数设置为 X
timeout=X - 将初始超时间隔设置为 X 秒
type=X - 设置查询类型(如 A、AAAA、A+AAAA、ANY、CNAME、MX、
NS、PTR、SOA 和 SRV)
querytype=X - 与类型相同
class=X - 设置查询类(如 IN (Internet)和 ANY)
[no]msxfr - 使用 MS 快速区域传送
ixfrver=X - 用于 IXFR 传送请求的当前版本
server NAME - 将默认服务器设置为 NAME,使用当前默认服务器
lserver NAME - 将默认服务器设置为 NAME,使用初始服务器
root - 将当前默认服务器设置为根服务器
ls [opt] DOMAIN [> FILE] - 列出 DOMAIN 中的地址(可选: 输出到文件 FILE)
-a - 列出规范名称和别名
-d - 列出所有记录
-t TYPE - 列出给定 RFC 记录类型(例如 A、CNAME、MX、NS 和 PTR 等)的记录
view FILE - 对 'ls' 输出文件排序,并使用 pg 查看
exit - 退出程序
>
实例:使用 nslookup 查询主机 www.baidu.com 的 IP 地址
C:\>nslookup www.baidu.com
服务器: cache1-cb
Address: 221.11.1.67
非权威应答:
名称: www.a.shifen.com
Addresses: 61.135.169.121
61.135.169.125
Aliases: www.baidu.com
2 顶级域名 edu 的解析
实例:使用 nslookup 查询顶级域名 edu
C:\WINDOWS\system32>nslookup ~进入交互查询模式
默认服务器: UnKnown
Address: 192.168.1.118 ~域名服务器地址
> set type=ns ~设置查询类型为 NS
> edu ~本地域名服务器将向根服务器发起类型为 NS 的关于 edu
~域的查询。
服务器: UnKnown
Address: 192.168.1.118
非权威应答:
edu nameserver = l.edu-servers.net ~应答资源记录
edu nameserver = c.edu-servers.net
edu nameserver = f.edu-servers.net
edu nameserver = d.edu-servers.net
edu nameserver = g.edu-servers.net
edu nameserver = a.edu-servers.net
a.edu-servers.net internet address = 192.5.6.30
>exit
C:\WINDOWS\system32>
在上述实例中,nslookup 首先进入了交互查询模式,然后使用 set 命令设置查询类型
在查询类型设置完毕后,输入 edu 域名进行查询。
3 域名 mit.edu 的解析 【美国麻省理工学院】
实例:使用 nslookup 查询域名 mit.edu
C:\WINDOWS\system32>nslookup
默认服务器: UnKnown
Address: 192.168.1.118
> set type=ns ~设置查询类型为 NS
> mit.edu
服务器: UnKnown
Address: 192.168.1.118
非权威应答:
mit.edu nameserver = asia2.akam.net
mit.edu nameserver = ns1-173.akam.net
mit.edu nameserver = use2.akam.net
mit.edu nameserver = usw2.akam.net
mit.edu nameserver = asia1.akam.net
mit.edu nameserver = ns1-37.akam.net
mit.edu nameserver = use5.akam.net
mit.edu nameserver = eur5.akam.net
eur5.akam.net internet address = 23.74.25.64
use2.akam.net internet address = 96.7.49.64
use5.akam.net internet address = 2.16.40.64
usw2.akam.net internet address = 184.26.161.64
asia1.akam.net internet address = 95.100.175.64
asia2.akam.net internet address = 95.101.36.64
ns1-37.akam.net internet address = 193.108.91.37
ns1-173.akam.net internet address = 193.108.91.173
use5.akam.net AAAA IPv6 address = 2600:1403:a::40 ~IPv6 类型应答资源记录
ns1-37.akam.net AAAA IPv6 address = 2600:1401:2::25
ns1-173.akam.net AAAA IPv6 address = 2600:1401:2::ad
>exit
C:\WINDOWS\system32>
4 域名 www.mit.edu 的解析
实例:使用 nslookup 查询主机 www.mit.edu
C:\WINDOWS\system32>nslookup
默认服务器: UnKnown
Address: 192.168.1.118
>set type=A
> www.mit.edu
服务器: UnKnown
Address: 192.168.1.118
DNS request timed out.
timeout was 2 seconds.
非权威应答:
名称: e9566.dscb.akamaiedge.net
Address: 23.2.142.184
Aliases: www.mit.edu
www.mit.edu.edgekey.net
>exit
C:\WINDOWS\system32>