当前位置: 首页 > >

DNS协议(Wireshark+分布式数据库+资源记录+报文)

发布时间:

DNS
DNS基本服务

DNS提供了域名->ip的解析服务。主要由:DNS分布式数据库以及使得主机可以查询数据库的应用层协议构成。


DNS建立在UDP协议之上进行网络传输,互联网端口port:53


举个栗子??


从应用层解释:本地主机(@localhost)向服务器请求www.matemaster.cn/index.html资源时,DNS的操作过程


1)web browser:华为浏览器向本地电脑的DNS客户端程序发送获取www.matemaster.cn的ip地址请求


2)本地电脑的DNS客户端向远端DNS server发送上述请求报文


3)DNS server从后端分布式数据库或者DNS缓存中获取ip,并封装成响应报文,返回给DNS客户端


4)web browser:华为浏览器根据DNS客户端返回的ip与远端服务器www.matemaster.cn建立tcp连接


DNS额外服务

除了域名->ip的解析服务,DNS支持:主机别名、邮件服务器别名、负载分配。


主机别名:对于含有复杂hostname的主机,可以支持多别名的操作。而其中存在一个规范主机名和多个主机别名而DNS便是提供,将多个主机别名,转为对应的规范主机名。


邮件服务器别名:为了让邮件用户可以自己定义好记的邮件名,我们就需要利用类似主机别名的方式,为邮件服务器提供别名操作,而在DNS记录中存在的MX记录,允许邮件服务器名和web服务器名相同。


负载分配:简单理解:就是一个IP地址集合与同一个规范主机名相联系!(可以参考下面在Ubuntu系统下的nslookup alibaba.com)。从那里看出,一个alibaba.com对应了4个IP地址


DNS分布式数据库

DNS采取的是:分布式、层次数据库。层次:root、TLD、权威


看看例图??



root server:提供了对应顶级域服务器的ip


TLD:顶级域服务器提供了存储了主机ip的权威服务器的ip


权威服务器:存储了对应主机名的ip地址


本地DNS server:虽然不属于分布式层次结构中的数据库,但是在DNS中起重要作用。与DNS缓存有关!


分布式数据库的工作过程

在这里alibaba.com服务器的ip采取了负载分配的方式,我这里的对应ali的DNS服务器,以及ip如下?


matemaster@matemaster:~$ nslookup alibaba.com
Server: 127.0.0.53
Address: 127.0.0.53#53

Non-authoritative answer:
Name: alibaba.com
Address: 106.11.223.101
106.11.208.151
203.119.129.109
203.119.215.82

matemaster@matemaster:~$ nslookup -type=NS alibaba.com
Server: 127.0.0.53
Address: 127.0.0.53#53

Non-authoritative answer:
alibaba.com nameserver = ns2.alibabadns.com.
alibaba.com nameserver = ns1.alibabadns.com.

DNS记录

DNS记录包含4元组:[name,value,type,TTL]


type的值,决定了name-value之间的关系


type = A:name是主机名,value是主机名对应的IP地址


type = NS:name是域,value也是主机名??该域主机IP对应的权威服务器


type = CNAME:name是主机别名,value是对应的规范主机名


type = MX:name邮件服务器别名,value是对应的规范主机名


(1)当某个DNS服务器server_it不是alibaba.com的权威服务器,那么server_it必将包含两条记录:A和NS


NS(alibaba.com,ns1.alibabadns.com,NS,100)


A(ns1.alibabadns.com,198.11.138.254,A,100)


(2)当某个服务器server_alialibaba.com的权威服务器,那么server_ali一定含有A记录


A(alibaba.com,203.119.215.82,A,100)


DNS报文

Wireshark抓包

首先说下,这里的抓包操作,借鉴了计算机网络自顶向下方法:DNS实验。关于完整的实验文档我放在了自己的仓库当中,如果有需要的可以自己git clone。? Wireshark实验报告文档


下面是我利用Wireshark抓取本地主机访问matemaster.cn主机的DNS请求报文



Domain Name System (query)
Transaction ID: 0x49f1
Flags: 0x0100 Standard query
0... .... .... .... = Response: Message is a query
.000 0... .... .... = Opcode: Standard query (0)
.... ..0. .... .... = Truncated: Message is not truncated
.... ...1 .... .... = Recursion desired: Do query recursively
.... .... .0.. .... = Z: reserved (0)
.... .... ...0 .... = Non-authenticated data: Unacceptable
Questions: 1
Answer RRs: 0
Authority RRs: 0
Additional RRs: 0
Queries
matemaster.cn: type A, class IN
Name: matemaster.cn
[Name Length: 13]
[Label Count: 2]
Type: A (Host Address) (1)
Class: IN (0x0001)
[Response In: 498]

相对于的来自DNS server的响应报文



Domain Name System (response)
Transaction ID: 0x49f1
Flags: 0x8180 Standard query response, No error
1... .... .... .... = Response: Message is a response
.000 0... .... .... = Opcode: Standard query (0)
.... .0.. .... .... = Authoritative: Server is not an authority for domain
.... ..0. .... .... = Truncated: Message is not truncated
.... ...1 .... .... = Recursion desired: Do query recursively
.... .... 1... .... = Recursion available: Server can do recursive queries
.... .... .0.. .... = Z: reserved (0)
.... .... ..0. .... = Answer authenticated: Answer/authority portion was not authenticated by the server
.... .... ...0 .... = Non-authenticated data: Unacceptable
.... .... .... 0000 = Reply code: No error (0)
Questions: 1
Answer RRs: 1
Authority RRs: 0
Additional RRs: 0
Queries
matemaster.cn: type A, class IN
Name: matemaster.cn # 查询名
[Name Length: 13]
[Label Count: 2]
Type: A (Host Address) (1) # 查询类型
Class: IN (0x0001) # 查询类
Answers
matemaster.cn: type A, class IN, addr 124.70.110.117
Name: matemaster.cn
Type: A (Host Address) (1)
Class: IN (0x0001)
Time to live: 283 (4 minutes, 43 seconds)
Data length: 4
Address: 124.70.110.117
[Request In: 495]
[Time: 0.005763000 seconds]

报文参数

Transaction ID:事务ID,只是单纯的2B,16bit的数据,用于标识报文的唯一性


Flags


QR(Response) 1bit:标记是请求还是响应报文


0:请求1:响应

Opcode 4bit


0:标准查询1:反向查询2:服务器状态请求

Authoritative 1bit:标记发送此响应报文的服务器是否为权威服务器


0:1:是权威服务器

Truncated 1bit:数据是否被截断,在数据超过512B时自动截断,也就是只能传输512B


0:1:

Recursion desired 1bit:是递归查询还是迭代查询


0:1:

Recursion available 1bit:只出现在响应报文,表明服务器是否支持递归查询


0:1:

Z 1bit:保留字段只能为0

Answer authenticated 1bit:服务器授权验证


0:1:

Non-authenticated data 1bit:保留字段,只能为0

Reply code 4bit


0:无差错1:格式差错2:问题在域名服务器上3:域参照问题4:查询类型不支持5:在管理上被禁止6 ~ 15 保留

Queries


查询名:域名-matemaster.cn或者 IP地址查询类型:(比较多,这里介绍一下比较常见的)
A(1):IPV4地址NS(2):域名服务器CNAME(5):规范主机名的别名MX(15):AAAA(28):IPV6地址PTR(12):IP转域名 查询类:IN-Internet



友情链接: