
在求职面试的过程中,面试官喜欢考察基础知识。除了数据结构和算法,网络知识也是极其重要的考察工具。
而网络知识,通常很抽象,不太好理解,有很多同学在这里跌跌撞撞过。为了更好的通过面试,谈一谈举办网络知识大素养节目,谈一谈网络知识最基础的DNS。
DNS 是什么?
DNS是域名系统的缩写,也就是域名解析系统。它的功能极其简单,就是根据域名找出对应的IP地址。
你可以把它看作一个伟大的电话簿。比如,当你要遇到www.163.com这个域名时,你必须先通过DNS找出它的IP地址是112.48.162.8。
域名的层级
后面我会讲到DNS的分析过程,你需要对域名的层次结构有所了解。
根域名 :.root 或者 . ,通常是省略的
顶级域名,如 .com,.cn 等
次级域名,如 baidu.com 里的 baidu,这个是用户可以举行注册购置的
主机域名,好比 baike.baidu.com 里的baike,这个是用户可分配的
主机名.次级域名.顶级域名.根域名baike.baidu.com.root
DNS 剖析历程
我们以遇见域名www.163.com为例,看看遇见www . 163 . com会发生什么:
先查找内陆 DNS 缓存(自己的电脑上),有则返回,没有则进入下一步
查看内陆 hosts 文件有没有响应的映射纪录,有则返回,没有则进入下一步
向内陆 DNS 服务器(一样平常都是你的网络接入服务器商提供,好比中国电信,中国移动)发送请求举行查询,内陆DNS服务器收到请求后,会先查下自己的缓存纪录,若是查到了直接返回就竣事了,若是没有查到,内陆DNS服务器就会向DNS的根域名服务器提议查询请求:叨教老大, www.163.com 的ip是啥?
根域名服务器收到请求后,看到这是个 .com 的域名,就回信说:这个域名是由 .com 老弟治理的,你去问他好了,这是.com老弟的联系方式(ip1)。
内陆 DNS 服务器吸收到回信后,照着老大哥给的联系方式(ip1),马上给 .com 这个顶级域名服务器提议请求:叨教 .com 大大,www.163.com 的ip 是啥?
.com 顶级域名服务器吸收到请求后,看到这是 163.com 的域名,就回信说:这个域名是 .163.com 老弟治理的,你就去问他就行了,这是他的联系方式(ip2)
内陆 DNS 服务器吸收到回信后,根据先辈的指引(ip2),又向 .163.com 这个权威域名服务器提议请求:叨教 163.com 大大,叨教 www.163.com 的ip是啥?
163.com 权威域名服务器吸收到请求后,确认了是自己治理的域名,马上查了下自己的小本本,把 www.163.com 的ip告诉了 内陆DNS服务器。
内陆DNS服务器吸收到回信后,异常地开心,这下总算拿到了www.163.com的ip了,马上把这个新闻告诉了要求查询的客户(就是你的电脑)。由于这个历程对照漫长,内陆DNS服务器为了节省时间,也为了只管不去打扰列位老大哥,就把这个查询效果偷偷地记在了自己的小本本上,利便下次有人来查询时,可以快速回应。
总结起来,就是三句话:
从”根域名服务器”查到”顶级域名服务器”的NS纪录和A纪录(IP地址)
从”顶级域名服务器”查到”次级域名服务器”的NS纪录和A纪录(IP地址)
从”次级域名服务器”查出”主机名”的IP地址
DNS的缓存时间
在上面的步骤中,我们可以看到有两个地方会缓存DNS查询记录。有了缓存,查询效率会有一定程度的提高,但同时也会损失准确性。
所以我们在设置DNS解析的时候,会有一个TTL参数(生存时间),也就是说这个缓存可以存活多久。过了这个时间,内陆DNS会删除这个记录。删除缓存后,您将不得不再次经历上述过程以获得最新的地址。
DNS 的纪录类型
我们在阿里云买域名的时候,可以设置我们的主机域名解析规则,也就是记录。
阿里云域名云解析
常见的DNS记录类型如下
A:地址纪录(Address),返回域名指向的IP地址。
NS:域名服务器纪录(Name Server),返回保留下一级域名信息的服务器地址。该纪录只能设置为域名,不能设置为IP地址。
MX:邮件纪录(Mail eXchange),返回吸收电子邮件的服务器地址。
CNAME:规范名称纪录(Canonical Name),返回另一个域名,即当前查询的域名是另一个域名的跳转,详见下文。
PTR:逆向查询纪录(Pointer Record),只用于从IP地址查询域名,详见下文。
DNS 报文结构
稍后我将使用wireshark来捕获DNS数据包,但在此之前,我必须先了解DNS的消息结构。
事务 ID:DNS 报文的 ID 标识。对于请求报文和其对应的应答报文,该字段的值是相同的。通过它可以区分 DNS 应答报文是对哪个请求举行响应的。
标志:DNS 报文中的标志字段。
问题计数:DNS 查询请求的数目。
回覆资源纪录数:DNS 响应的数目。
权威名称服务器计数:权威名称服务器的数目。
附加资源纪录数:分外的纪录数目(权威名称服务器对应 IP 地址的数目)。
Wireshark抓包实战
打开Wireshark后,使用ping 163.com提出DNS解析请求,在Wireshark中使用DNS关键字进行过滤。
从整体上看捕获的消息,可以大致得到一些信息。
DNS 是应用层协议,传输层协议使用的是 UDP
DNS 默认端口是 53
我把请求和响应消息的截图放在下面,我会一一分析。
请求
回复
Transaction ID
请求和回复的事务ID应该是一个:0xd0d7。
Flags
符号字段有很多内容,每个字段的含义如下:
QR(Response):查询请求/响应的标志信息。查询请求时,值为 0;响应时,值为 1。
Opcode:操作码。其中,0 示意尺度查询;1 示意反向查询;2 示意服务器状态请求。
AA(Authoritative):授权应答,该字段在响应报文中有用。值为 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),一样平常是服务器由于设置的计谋拒绝给出应答,如服务器不希望对某些请求者给出应答。
Answer RRs
回复数据包中回复资源记录的数量为2,这表明返回了两个查询结果,您可以在回答字段中看到这一点。
Authority RRs
权威名称服务器计数
Additionnal RRs
附加资源记录的数量
Answers
响应的主要内容,这里返回两个效果,每个效果中的字段有
DNS 挟制 与 HTTP 挟制
通过上面的解释,我们都知道DNS已经完成了一个从域名到ip的映射查询,当你遇到www.baidu.com的时候,你可以准确的返回百度首页的IP。
但是如果这个时候DNS分析出现了一些问题,当你要见www.baidu.com的时候,就会给你www.google.com的ip,也就是我们常说的DNS强制。
荣耀手表2功能最新曝光(高颜值长续航的手表值得拥有)
容易与之混淆的是HTTP强制。
那什么是HTTP强制呢?
你一定在见网站的时候见过右下角弹出的弹窗广告。这就是HTTP强制。
借助别人文章里的例子,两者的区别就像
DNS挟制是你想去机场的时刻,把你给丢到火车站。
HTTP挟制是你去机场途中,有人给你塞小广告。
那么DNS劫持人质是怎么发生的呢?
以下是DNS强制的一些方式:
1。本地DNS人质
攻击者通过某种手段使用户电脑感染木马病毒或恶意软件后,恶意修改内陆DNS设置,如修改内陆hosts文件和缓存等。
2。路由DNS强制
很多用户默认路由器的默认密码,攻击者可以入侵路由管理员的账号,修改路由器的默认设置。
3。攻击DNS服务器
对dns服务器的直接攻击,比如对DNS服务器的DDOS攻击,可以由DNS服务器宕机和异常请求引起,也可以通过一些手段来破坏DNS服务器的缓存,从而将恶意的ip地址返回给用户。
工具的使用
dig 下令
Dig是一个在类Unix命令行模式下查询DNS包括NS记录、A记录、MX记录等相关信息的工具。
通过dig (parameter: +trace)命令,我们可以看到上面形态的DNS解析的详细过程。
从退货的效果中,我们可以看到一些信息:
我们的内陆 DNS 服务器 ip 为 192.168.1.1,端口为53,你可以在 /etc/resolv.conf 里看到这个设置
根域名服务器现在全球一共只有十三台,从a.root-servers.net. 到m.root-servers.net. ,它们对应的ip地址,已经内置在内陆DNS服务器中。
如果只是想看看效果,可以用+short参数直接返回www.163.com对应哪个IPS。
您还可以添加一个@参数来指定该查询由DNS服务器保存。
如果您只想查看指定的记录类型:
host 下令
Host order可以看作是dig order的简化版,返回当前域名请求的各种记录。
whois下令
Whois受命检查域名注册情况。
nslookup下令
Nslookup也是查询DNS解析效果的常用工具。
您也可以指定一个公共域名服务器进行查询,如常见的114.114.114.114。
手动清算内陆缓存
马科斯
$ sudo dscacheutil -flushcache$ sudo killall -HUP mDNSResponder
Windows操作系统
$ ipconfig /flushdns
Linux
# 使用NSCD的DNS缓存$ sudo /etc/init.d/nscd restart# 服务器或者路由器使用DNSMASQ$ sudo dnsmasq restart
客服微信:(181628402)本文链接:https://www.n5w.com/252731.html