TCP/IP-学习笔记5-DNS

一、什么是DNS(域名解析)

Internet上的计算机是通过IP地址来定位的,给出一个IP地址,就可以找到Internet上的某台主机。而因为IP地址难于记忆,又发明了域名来代替IP地址。但通过域名并不能直接找到要访问的主机,中间要加一个从域名查找IP地址的过程,这个过程就是域名解析。

DNS的一个基本特性是使用超高速缓存。即当一个名字服务器收到有关映射的信息(主机名字到IP地址)时,它会将该信息存放在高速缓存中。这样若以后遇到相同的映射请求,就能直接使用缓存中的结果而无需通过其他服务器查询。

二、DNS查询

下图为DNS查询和响应的一般报文格式,由12个字节的首部+ 4个长度可变长度的字段组成。

2.1 标识

标识字段由客户程序设置并由服务器返回结果。客户程序通过它来确定响应与查询是否匹配。

2.2 标志

  • QR(1bit): 0表示查询报文,1表示响应报文。
  • opcode(4bit): 通常值为0(标准查询),其他值为1(反向查询)和2(服务器状态请求)。
  • AA(1bit标志): 表示“授权回答(authoritativeanswer)”。该名字服务器是授权于该域的。
  • TC (1bit字段): 表示“可截断的(truncated)”。使用UDP时,它表示当应答的总长度超过512字节时,只返回前512个字节。
  • RD(1bit): 表示“期望递归(recursiondesired)”。该比特能在一个查询中设置,并在响应中返回。这个标志告诉名字服务器必须处理这个查询,也称为一个递归查询。如果该位为0,且被请求的名字服务器没有一个授权回答,它就返回一个能解答该查询的其他名字服务器列表,这称为迭代查询。
  • RA(1bit字段),表示“可用递归”。如果名字服务器支持递归查询,则在响应中将该比特设置为1。在后面的例子中可看到大多数名字服务器都提供递归查询,除了某些根服务器。
  • Zero( 3bit) 必须为0。
  • rcode是一个4bit的返回码字段。通常的值为0(没有差错)和3(名字差错)。名字差错只有从一个授权名字服务器上返回,它表示在查询中制定的域名不存在。

随后的4个16bit字段说明最后4个变长字段中包含的条目数。对于查询报文,问题(question)数通常是1,而其他3项则均为0。类似地,对于应答报文,回答数至少是1,剩下的两项可以是0或非0。


2.3 查询问题

查询名是要查找的名字,它是一个或多个标识符的序列。每个标识符以首字节的计数值来说明随后标识符的字节长度,每个名字以最后字节为0结束,长度为0的标识符是根标识符。计数字节的值必须是0~63的数,因为标识符的最大长度仅为63。

每个问题和响应都有一个类型类型:最多的就是A iP地址查询和指针记录(查询Ip地址所对应的域名)。

查询类的值通常为 1。

2.4 DNS报文中最后的三个字段

回答字段、授权字段和附加信息字段,均采用一种称为资源记录RR(ResourceRecord)的相同格式。

资源记录格式:

域名是记录中资源数据对应的名字。它的格式和前面介绍的查询名字段格式(图14-6)相同。

类型说明RR的类型码。它的值和前面介绍的查询类型值是一样的。类通常为1,表示Internet数据。
生存时间字段是客户程序保留该资源记录的秒数。资源记录通常的生存时间值为2天。
资源数据长度说明资源数据的数量。该数据的格式依赖于类型字段的值。对于类型1(A记录)资源数据是4字节的IP地址。

三、DNS采用UDP还是TCP传输

DNS主要采用UDP进行传输。    对于DNS客户程序,一个好的重传和超时程序就显得更重要了。

四、DNS劫持

4.1  什么是DNS劫持

通过攻击域名解析服务器(DNS),或伪造域名解析服务器(DNS)的方法,把目标网站域名解析到错误的地址从而实现用户无法访问目标网站的目的。

4.2 如何消除DNS劫持

主要参考信息:

https://blog.csdn.net/happymagic/article/details/84838334

https://cloud.tencent.com/developer/news/368221

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值