在找工作面试的过程当中,招聘者特别喜欢调查基本知识,除开算法设计与优化算法以外,网络知识也是一个至关重要的考察对象。
而网络知识,一般是很抽象化,不容易接受的,有很多同学都在这里裁了跟斗。为了方便通过面试,文中讲进行一次网络知识大普及,聊一聊网络知识最基本DNS。
DNS 是啥?
DNS是 Domain Name System 的简称,其实就是 域名分析系统软件,它的功能比较简单,就是按照域名查出来相对应的 IP地址。
也可以把它想象成一本非常大的电话簿,例如当你要浏览域名www.163.com,首先根据DNS查出来它IP地址是112.48.162.8。
域名的等级
因为后边我能提到 DNS 的分析操作过程,所以需要我对域名的等级有一些掌握
- 根域名 :.root 或是 . ,一般是省去的
- 顶尖域名,如 .com,.cn 等
- 次级线圈域名,如 baidu.com 中的 baidu,这是用户可进行申请选购的
- 服务器域名,例如 baike.baidu.com 里的daike,这是用户可以分配
IP地址.次级线圈域名.顶尖域名.根域名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 的cp 是什么?
- .com 顶尖域名服务器接受到请求后,见到这也是 163.com 的域名,就回信说:这一域名是 .163.com 老弟啊的管理,那你去询问他就可以了,这是他的联系电话(ip2)
- 当地 DNS 服务器接受到回信后,依照前辈的引导(ip2),又向 .163.com 这一权威性域名服务器进行请求:请问一下 163.com 大大的,请问一下 www.163.com 的ip是啥?
- 163.com 权威性域名服务器接受到请求后,确定了是本人的管理域名,立刻查了下自已的本子,把 www.163.com 的cp告诉 当地DNS服务器。
- 当地DNS服务器接受到回信后,相当地高兴,这一下终于拿到www.163.com的ip了,马上把这番话告诉规定查询顾客(便是自己的电脑)。因为学习的过程较为悠长,当地DNS服务器为了能省时省力,也是为了尽可能不去打扰诸位大哥,就把这个查询记录悄悄地记到自己的本子上,便捷下一次有人来查看时,能够快速回复。
总结下来便是三句话:
- 从”根域名服务器”查出”顶尖域名服务器”的NS记录和A纪录(IP地址)
- 从”顶尖域名服务器”查出”次级线圈域名服务器”的NS记录和A纪录(IP地址)
- 从”次级线圈域名服务器”查出来”IP地址”的IP地址
DNS的存储时长
上边的好多个流程里,能够看见有两种地区会缓存文件 DNS 的查看记录,拥有缓存文件,在一定程度上也会提高查看高效率,但是同时在准确度上面有一定的损害。
所以我们在配备 DNS 分析时,会有一个 TTL 主要参数(Time To Live),意思是说这一缓存文件能够生存多久,过了这个时长,当地 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 分析请求,应用 DNS 关键词在Wireshark 过虑。
从获取的报文格式总体来看,我们能粗略地获得好多个信息内容
- 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,表明返回了两条查询记录,我会在 Answer 字段名中看到。
Authority RRs
权威性名字服务器记数
Additionnal RRs
额外网络资源记录数
Answers
回复主要内容,这儿返回两根结论,每一条结论里的字段有
DNS 劫持 与 HTTP 劫持
根据上边的介绍,众所周知了,DNS 实现了一次网站域名到 IP 的投射查看,当我们在浏览 www.baidu.com 时,能恰当返回让你 百度主页的 ip。
那如果这时 DNS 分析出现了一些难题,如果你需要浏览 www.baidu.com 时,却返回让你 www.google.com 的cp,这也就是我们常说的 DNS 劫持。
与此易混的是 HTTP 劫持。
甚么是 HTTP 劫持呢?
你一定看到过当我们在浏览 某一网址时,右下方也忽然弹出来了一个扎眼的弹窗广告。这便是 HTTP 劫持。
依靠他人文章里的事例,他们俩的差别好比是
- DNS劫持是你想去飞机场时,把你给扔到汽车站。
- HTTP劫持就是你到飞机场中途,有人给你塞广告纸。
那样 DNS劫持 是怎样所产生的呢?
下边大约说几类DNS劫持方式:
1.该设备DNS劫持
网络攻击根据一些方式让用户的电子计算机感柒上木马程序,或是恶意程序以后,故意改动当地DNS配备,例如改动当地hosts文件,缓存文件等。
2. 路由器DNS劫持
很多客户默认设置无线路由器初始密码,网络攻击能够进入到路由器管理员账号中,改动无线路由器默认设置配备。
3.进攻DNS服务器
直接攻击DNS服务器,比如对DNS服务器开展DDOS进攻,能是DNS服务器崩溃,发现异常要求,也可以利用一些方式感柒dns服务器的缓存文件,使给消费者返回的是故意的cp详细地址。
工具的使用
dig 指令
dig是一个在类Unixcmd模式中查看DNS包含NS纪录,A纪录,MX纪录等信息的一种手段。
根据 dig (主要参数: trace)指令,大家可以看到上边描绘的 DNS 分析的详细过程
从返回得到的结果,大家可看出几个方面信息内容:
- 他们的当地 DNS 服务器 ip 为 192.168.1.1,端口号为53,我会在 /etc/resolv.conf 中看到这一配备
- 根网站域名服务器现阶段全世界一共仅有十三台,从a.root-servers.net. 到m.root-servers.net. ,他们相匹配的cp详细地址,早已内置在当地DNS服务器中。
假如你只想要见到结论,可以用 short 主要参数,能直接返回 www.163.com 对应的是哪些ip。
你就可以加一个 @ 主要参数 ,特定从某一 DNS 服务器查询。
假如你只想要查询指定纪录种类:
host 指令
host 指令 可以理解为dig指令的优化版本号,返回现阶段要求域名的各种各样纪录。
whois指令
whois指令用于查询域名的申请注册状况。
nslookup指令
nslookup都是常见的一个查看 DNS 分析结论的一种手段
你就可以特定外网地址的网站域名服务器查询,例如比较常见的 114.114.114.114。
手动式清除本地缓存
MacOS
$ sudo dscacheutil -flushcache
$ sudo killall -HUP mDNSResponder
Windows
$ ipconfig /flushdns
Linux
# 应用NSCD的DNS缓存文件
$ sudo /etc/init.d/nscd restart
# 服务器或是路由器使用DNSMASQ
$ sudo dnsmasq restart
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。