应用层-DNS(Domain Name System)

什么是DNS

DNS协议负责通过域名得到对应的IP地址,进而才能建立TCP连接。

DNS获取IP地址流程
下图摘自书籍《计算机网络-自顶向下》
在这里插入图片描述
假如客户端A要知道服务器www.server.com的IP地址,具体可描述如下:

  1. 主机A先向本地域名服务器查询
  2. 如果没有,本地域名服务器会向一个根域名服务器进行查询
  3. 根域名服务器告诉本地域名服务器,下一次应该查询的顶级域名服务器的IP地址
  4. 本地域名服务器向顶级域名服务器进行查询
  5. 顶级域名服务器告诉本地域名服务器,下一步查询权威服务器的IP地址
  6. 本地域名服务器向权威服务器进行查询
  7. 权威服务器告诉本地域名服务器所查询的主机B的IP地址
  8. 本地域名服务器最后把查询结果告诉主机A

分层域名

1、根域名服务器

2、顶级域名服务器
分为:国家顶级域名、通用顶级域名、反向域名。
在这里插入图片描述
3、权威域名服务器
比如:Tencent.com、baidu.com

在这里插入图片描述

DNS报文结构

查询报问和响应报文格式相同
在这里插入图片描述

基础结构部分

事务ID:报文标识,用来区分DNS应答报文是对哪个请求进行响应

标志:DNS报文中标志字段

问题计数:DNS查询请求了多少次

回答资源记录数:DNS响应了多少次

权威名称服务器计数: 权威名称服务器数目

附加资源记录数: 权威名称服务器对应IP地址的数目

标志详情:

QR(Response):查询请求,值为0;响应为1

Opcode:操作码。0表示标准查询;1表示反向查询;2服务器状态请求

AA(Authoritative):授权应答,该字段在响应报文中有效。通过0,1区分是否为权威服务器。如果值为 1 时,表示名称服务器是权威服务器;值为 0 时,表示不是权威服务器。

TC(Truncated):表示是否被截断。当值为1的时候时,说明响应超过了 512字节并已被截断,此时只返回前512个字节。

RD(Recursion Desired):期望递归。该字段能在一个查询中设置,并在响应中返回。该标志告诉名称服务器必须处理这个查询,这种方式被称为一个递归查询。如果该位为 0,且被请求的名称服务器没有一个授权回答,它将返回一个能解答该查询的其他名称服务器列表。这种方式被称为迭代查询。

RA(Recursion Available):可用递归。该字段只出现在响应报文中。当值为 1 时,表示服务器支持递归查询。

Z:保留字段,在所有的请求和应答报文中,它的值必须为 0。

rcode(Reply code):通过返回值判断相应的状态。

当值为0时,表示没有错误;

当值为1时,表示报文格式错误(Format error),服务器不能理解请求的报文;

当值为2时,表示域名服务器失败(Server failure),因为服务器的原因导致没办法处理这个请求;

当值为3时,表示名字错误(Name Error),只有对授权域名解析服务器有意义,指出解析的域名不存在;

当值为4时,表示查询类型不支持(Not Implemented),即域名服务器不支持查询类型;

当值为5时,表示拒绝(Refused),一般是服务器由于设置的策略拒绝给出应答,如服务器不希望对某些请求者给出应答。

问题部分

该部分是用来显示DNS查询请求的问题,包含查询名(被查询主机名字)、查询类型、查询类。

查询名:一般为查询的域名,也可能是通过IP地址进行反向查询
查询类:地址类型,通常为互联网地址为1
查询类型:查询请求的资源类型。常见的如果为A类型,表示通过域名获取IP。具体如下图所示
在这里插入图片描述

  • 如果Type = A,则Name是主机名,Value是该主机名对应的IP地址。因此,一条类型为A的资源记录提供了标准的主机名到IP地址的映射。例如(Tayl. bar. foo. com, 145. 37.93. 126, A)就是一条类型 A 记录。

  • 如果Type = NS,则Name是个域(如foo. com),而Value是一个可以获得该域中目标主机IP地址的权威DNS服务器的主机名

资源记录部分

资源记录部分包含回答问题区域,权威名称服务器区域字段、附加信息区域字段,格式如下
在这里插入图片描述
域名:所请求的域名

类型:与问题部分查询类型值一直

类:地址类型,和问题部分查询类值一样

生存时间:以秒为单位,表示资源记录的生命周期

资源数据长度:资源数据的长度

资源数据:按照查询要求返回的相关资源数据

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值