DNS是什么?适用场景又有哪些呢?老男孩Python学习
老男孩IT教育
常见问题
2021年7月2日 15:50
在Python学习中,尤其对于Web开发方向的小伙伴,后期就会涉及到DNS,也就是域名系统,DNS全称为Domain Name System,是互联网的一项服务,它作为将域名和IP地址相互映射的一个分布式数据库,能够使用户更方便地访问互联网,不需要去记住能够被机器直接读取的IP数串,具体请看下文:
在Python学习中,尤其对于Web开发方向的小伙伴,后期就会涉及到DNS,也就是域名系统,DNS全称为Domain Name System,是互联网的一项服务,它作为将域名和IP地址相互映射的一个分布式数据库,能够使用户更方便地访问互联网,不需要去记住能够被机器直接读取的IP数串,具体请看下文:
DNS有什么特点呢?
1、它是分布式的 2、支持TCP和UDP,常用端口为53 3、每级域名的长度限制为63 4、域名总长度限制为253
什么情况使用TCP,什么情况使用UDP呢?
在早期,DNS 的 UDP 上限大小是 512 字节, 如果某个response 大小超过512 ,DNS 服务就会使用 TCP 协议来传输。后来 DNS 协议扩展了自己的UDP 协议,DNS client 发出查询请求时,可以指定自己能接收超过512字节的 UDP 包, 这种情况下,DNS 还是会使用 UDP 协议。
DNS的解析流程是怎样的?
1、客户端向本地DNS发出解析XXX域名的请求。
2、本地DNS查看缓存,看是否有缓存过XXX域名的记录,如果有,直接返回给客户端。如果没有,则执行下一步。
3、本地DNS向根域名服务器发送请求,查询com顶级域的nameserver地址。
4、拿到com域名的IP后,再向com nameserver发送请求,获取chinaz域名的nameserver地址。
5、继续请求chinaz的nameserver,获取tool域名的地址,最终得到了XXX的IP,本地DNS服务器把这个结果进行缓存。
6、本地DNS把结果返回给客户端。结束。
在解析流程中发现有两类DNS服务器,客户端访问的是递归解析服务器,它在整个解析过程中最忙,查询步骤是递归的,从根域名服务器开始,一直询问到目标域名。简单来说,递归解析服务器是负责解析域名的,权威域名服务器是负责存储域名记录的。
DNS攻击
属于DoS攻击的一种,是通过大量流量占满目标机带宽, 使得目标机对正常用户的请求拒绝连接从而挂掉。
DNS 递归解析的流程比较特殊, 可以通过几个字节的 query 请求,换来几百甚至几千字节的 resolving 应答(流量放大), 并且大部分服务器不会对DNS服务器做防御。
但一般常用的 DNS 服务器都会对攻击请求做过滤,所以找 DNS 服务器漏洞也是一个问题。详细的放大攻击方法大家有兴趣自行百度。
想要学习更多Python技术的,在这里推荐老男孩教育,我们成立了十余年,公司在IT培训方面教学质量优秀、教学理念先进、教学方法新颖,十分注重理论+实战相结合,全部为名师手把手的带领“课堂即实战式”教学。
推荐阅读:
