dns introduction

24
DNS Introduction 2010 年 12 年 年年 年年 年年0512-68839302 E-mail [email protected] 年年http://staff.ustc.edu.cn/~mengning 年年 年年年年年年年年年年年年年年年年年 166 年年年年 A302 年

Upload: sadah

Post on 12-Jan-2016

65 views

Category:

Documents


0 download

DESCRIPTION

DNS Introduction. 主讲:孟宁 电话:0512-68839302 E-mail:[email protected] 主页:http://staff.ustc.edu.cn/~mengning 地址:苏州工业园区独墅湖高等教育区仁爱路166号明德楼A302室. 2010年12月. DNS 的基本概念. 域名系统( DNS )是一种用于 TCP/IP 应用程序的分布式数据库,它 提供主机名字和I P地址之间的转换 及有关电子邮件的选路信息。 DNS 提供了允许服务器和客户程序相互通信的协议。. DNS 的基本原理. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: DNS Introduction

DNS Introduction

2010 年 12 月

主讲:孟宁电话: 0512-68839302E-mail : [email protected]主页: http://staff.ustc.edu.cn/~mengning地址:苏州工业园区独墅湖高等教育区仁爱路 166 号明德楼 A302室

Page 2: DNS Introduction

DNSDNS 的基本概念的基本概念♦ 域名系统( DNS )是一种用于 TCP/IP 应

用程序的分布式数据库,它提供主机名字和 I P 地址之间的转换及有关电子邮件的选路信息。

♦ DNS 提供了允许服务器和客户程序相互通信的协议。

Page 3: DNS Introduction

DNSDNS 的基本原理的基本原理♦ 从应用的角度上看,对 D N S 的访问是通

过一个地址解析器( resolver )来完成的。♦ 在 Unix 主机中,该解析器主要是通过两个

库函数 gethostbyname 和 gethostbyaddr来访问的,它们在编译应用程序时与应用程序连接在一起。前者接收主机名字返回 I P 地址,而后者接收 I P 地址来寻找主机名字。

♦ 解析器通过一个或多个名字服务器来完成这种相互转换。

Page 4: DNS Introduction

DNSDNS 的基本原理的基本原理♦ 在一个应用程序请求 T C P 打开一个连接

或使用 U D P 发送一个数据报之前。心须将一个主机名转换为一个 I P 地址。

♦ 操作系统内核中的 T C P / I P 协议族对于D N S 一点都不知道。

Page 5: DNS Introduction
Page 6: DNS Introduction

顶级域名被分为三个部分♦ 1) a r p a 是一个用作地址到名字转换的特

殊域。♦ 2) 7 个 3 字符长的普通域。有些书也将这

些域称为组织域。♦ 3) 所有 2 字符长的域均是基于 I S O 3 1 6

6 中定义的国家代码,这些域被称为国家域,或地理域。

Page 7: DNS Introduction

7 个 3 字符长的普通域

Page 8: DNS Introduction

DNS 查询和响应的一般格式

Page 9: DNS Introduction

DNS 查询和响应的一般格式

Page 10: DNS Introduction

如何存储域名 gemini.tuc.noao.edu

Page 11: DNS Introduction

Examplesw2@sw2-desktop:~/mylesson/np$ host www.ustc.edu.cnwww.ustc.edu.cn has address 202.38.64.9sw2@sw2-desktop:~/mylesson/np$ host 202.38.64.9Host 9.64.38.202.in-addr.arpa. not found: 3(NXDOMAIN)sw2@sw2-desktop:~/mylesson/np$ host www.ustcsz.edu.cnwww.ustcsz.edu.cn has address 219.219.223.20sw2@sw2-desktop:~/mylesson/np$ host 219.219.223.2020.223.219.219.in-addr.arpa domain name pointer www.ustcsz.edu.cn.sw2@sw2-desktop:~/mylesson/np$ host www.ietf.orgwww.ietf.org has address 64.170.98.32www.ietf.org has IPv6 address 2001:1890:1112:1::20www.ietf.org mail is handled by 0 mail.ietf.org.sw2@sw2-desktop:~/mylesson/np$ host 64.170.98.3232.98.170.64.in-addr.arpa domain name pointer mail.ietf.org.

Page 12: DNS Introduction

主机名字转换成 I P 地址( A 记录查询)

IP 192.168.90.229.58717 > 219.219.223.10.53: 7284+ A? www.ustcsz.edu.cn. (35)IP 219.219.223.10.53 > 192.168.90.229.58717: 7284* 1/2/2 A 219.219.223.20 (119)IP 192.168.90.229.37888 > 219.219.223.10.53: 49757+ AAAA? www.ustcsz.edu.cn. (35)IP 219.219.223.10.53 > 192.168.90.229.37888: 49757* 0/1/0 (81)IP 192.168.90.229.60351 > 219.219.223.10.53: 7156+ MX? www.ustcsz.edu.cn. (35)IP 219.219.223.10.53 > 192.168.90.229.60351: 7156* 0/1/0 (81)

sw2@sw2-desktop:~/mylesson/np$ host www.ustcsz.edu.cnwww.ustcsz.edu.cn has address 219.219.223.20

Page 13: DNS Introduction

主机名字转换成 I P 地址( A 记录查询)

IP 192.168.90.229.36480 > 219.219.223.10.53: 11445+ A? www.ietf.org. (30)IP 219.219.223.10.53 > 192.168.90.229.36480: 11445 1/6/2 A 64.170.98.32 (239)IP 192.168.90.229.44438 > 219.219.223.10.53: 1423+ AAAA? www.ietf.org. (30)IP 219.219.223.10.53 > 192.168.90.229.44438: 1423 1/6/2 AAAA[|domain]IP 192.168.90.229.56146 > 219.219.223.10.53: 7633+ MX? www.ietf.org. (30)IP 219.219.223.10.53 > 192.168.90.229.56146: 7633 1/6/4 MX mail.ietf.org. 0 (288)

sw2@sw2-desktop:~/mylesson/np$ host www.ietf.orgwww.ietf.org has address 64.170.98.32www.ietf.org has IPv6 address 2001:1890:1112:1::20www.ietf.org mail is handled by 0 mail.ietf.org.

Page 14: DNS Introduction

I P 地址转换成主机名字( PTR 指针查询)

IP 192.168.90.229.42966 > 219.219.223.10.53: 31376+ PTR? 20.223.219.219.in-addr.arpa. (45)IP 219.219.223.10.53 > 192.168.90.229.42966: 31376* 1/2/2 (144)

sw2@sw2-desktop:~/mylesson/np$ host 219.219.223.2020.223.219.219.in-addr.arpa domain name pointer www.ustcsz.edu.cn.

Page 15: DNS Introduction

I P 地址转换成主机名字( PTR 指针查询)

IP 192.168.90.229.56835 > 219.219.223.10.53: 53263+ PTR? 32.98.170.64.in-addr.arpa. (43)IP 219.219.223.10.53 > 192.168.90.229.56835: 53263 1/4/0 (150)

sw2@sw2-desktop:~/mylesson/np$ host 64.170.98.3232.98.170.64.in-addr.arpa domain name pointer mail.ietf.org.

Page 16: DNS Introduction

gethostbyname 的用法♦ 使用这个东西,首先要包含 2 个头文件:♦ #include <netdb.h>

♦ #include <sys/socket.h>

♦ struct hostent *gethostbyname(const char *name); 这个函数的传入值是域名或者主机名,例如 "www.ustcsz.edu.cn" 等。传出值,是一个 hostent 的结构。如果函数调用失败,将返回 NULL 。

Page 17: DNS Introduction

hostent 的结构

struct hostent { char *h_name; /* 主机的规范名 */ char **h_aliases;/* 主机的别名 */ /* 主机 ip 地址的类型,到底是 ipv4(AF_INET) ,还是 ipv6(AF_INET6)*/

int h_addrtype; int h_length;/* 主机 ip 地址的长度 */ char **h_addr_list;/* 主机的 ip 地址,是以网络字节序存储的 */};

Page 18: DNS Introduction

#include <netdb.h>#include <sys/socket.h>int main(int argc, char **argv){

char *ptr,**pptr;struct hostent *hptr;char str[32];/* 取得命令后第一个参数,即要解析的域名或主机名 */ptr = argv[1];/* 调用 gethostbyname() 。调用结果都存在 hptr 中 */if( (hptr = gethostbyname(ptr) ) == NULL ){

printf("gethostbyname error for host:%s\n", ptr);return 0; /* 如果调用 gethostbyname 发生错误,返回 1 */

}/* 将主机的规范名打出来 */printf("official hostname:%s\n",hptr->h_name);/* 主机可能有多个别名,将所有别名分别打出来 */for(pptr = hptr->h_aliases; *pptr != NULL; pptr++)

printf(" alias:%s\n",*pptr);

Page 19: DNS Introduction

/* 根据地址类型,将地址打出来 */switch(hptr->h_addrtype){

case AF_INET:case AF_INET6:pptr=hptr->h_addr_list;/* 将刚才得到的所有地址都打出来。其中调用了 inet_ntop() 函数 */for(;*pptr!=NULL;pptr++)printf(" address:%s\n", inet_ntop(hptr->h_addrtype, *pptr, str, sizeof(str)));break;default:printf("unknown address type\n");break;

}return 0;

}

Page 20: DNS Introduction

DNS体系的内部实现♦ DNS 用 UDP 还是用 TCP?

– 查询请求超过 512 字节–辅助名字服务器与主名字服务器之间的区域传

送♦ DNS 服务器做了什么?

–递归查询– DNS根服务器

Page 21: DNS Introduction

host.example.microsoft.com

Page 22: DNS Introduction

host.example.microsoft.com

♦ 首先,首选服务器分析全名并确定对于顶级域com具有绝对控制权的服务器的位置。随后,对com DNS 服务器使用迭代查询,以获取microsoft.com 服务器的参考信息。然后参考性应答从 microsoft.com 服务器传送到example.microsoft.com 的 DNS 服务器。最后,与服务器 example.microsoft.com 联系上。因为该服务器包括作为其配置区域一部分的查询名称,所以,它向启动递归的源服务器作出权威性的应答。当源服务器接收到表明已获得对请求查询的权威性应答的响应时,它将此应答转发给发出请求的客户机,这样,递归查询过程就完成了。

Page 23: DNS Introduction

Example:ustcsz.edu.cn

Page 24: DNS Introduction

谢谢大家!