域名解析协议-DNS

DNS(Domain Name System)是互联网上非常重要的一项服务,我们每天上网都要依靠大量的DNS服务。在Internet上,用户更容易记住的是域名,但是网络中的计算机的互相访问是通过 IP 地址实现的。DNS 最常用的功能是给用户提供域名解析服务,将用户的域名解析成网络上能够访问的IP地址。

DNS报文格式

如下图所示,DNS报文由12B长的首部和4个长度可变的字段组成。标识字段由客户端程序设置并由服务器返回结果,客户端通过标识来确定响应与查询是否匹配。

域名解析协议-DNS_第1张图片

下面我们结合 DNS 查询报文和响应报文的抓包信息来理解报文格式中的几个关键字段。

DNS查询报文的抓包,如下所示。

域名解析协议-DNS_第2张图片

关键字段如下:

  1. UDP:DNS查询是基于UDP传输数据的。DNS服务器支持TCP和UDP两种协议的查询方式。

  2. Destination port:目的端口默认是53。

  3. QR:0表示查询报文;1表示回应报文。

  4. TC:表示“可截断”。使用UDP时,当应答报文超过512Byte时,只返回前512Byte。
    通常情况下,DNS查询都是使用UDP,返回响应中TC位设置为1时,就意味着响应的长度超过512Byte,而仅返回前512个字节。这种情况下,客户端通常采用TCP重发,将重发原来的查询请求,并允许返回的响应报文超过512Byte。

  5. Queries:表示DNS请求的域名和类型。

  1.  Name:DNS查询中的请求域名。

  2. Type:每一个查询都有一个查询类型,每一个响应也都有一个响应类型。这个类型大约有20多种,但是很多现在已经过时了。最常用的查询类型是A类型,它表示期望获得查询域名的IP地址。查询类型也可以是CNAME(别名记录)。

  3. TTL:生存时间,表示客户端保留该解析资源记录的时间。

DNS回应报文如下图所示

域名解析协议-DNS_第3张图片

通过返回报文可看到,域名递归路径为:ntp.msn.cn➡msn-cn.a-0032.a-msedge.net➡msn-china.bing123.com➡202.89.233.96 ;客户端保留该解析资源记录的时间为1分36秒。

DNS交互

假设一个用户要去华为商城买一部手机,那么从他在浏览器上输入华为商城的域名,到打开商城网页的一瞬间,其实发出的DNS请求报文已经经历了下图所示的查询过程。

域名解析协议-DNS_第4张图片

为了便于理解,我们可以简化一下DNS报文交互的流程。暂且把递归服务器这种有官方域名授权的服务器,统一归类为“授权服务器”。这样DNS 服务就可以被分为两大类:一种是授权存储域名和 IP 地址映射关系的授权服务;另一种是临时存放域名和IP地址映射关系的缓存服务。简化后查询流程如下图所示。

域名解析协议-DNS_第5张图片

你可能感兴趣的:(网络,udp,服务器)