Hello,你好呀,我是
灰小猿
!一个超会写bug的程序猿! 用坚持缔造技术、用指尖敲动未来! 和很多小伙伴们一样,我也是一名奔波在Java道路上的“创造者
”。也想靠技术来改未来,改变世界!因为我们坚信每一次敲动键盘都能让生活变得更智能、世界变得更有趣
! 在此专栏《Java核心面试宝典》记录我们备战梦想的【day 20】
!
DNS大家都听说过吧?但是你知道他们的具体查询方式以及如何实现劫持吗?
(1)递归查询: 如果主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户端的身份,向其他根域名服务器继续发出查询请求报文,即代替主机继续查询,而不是让主机查询。 (2)迭代查询: 当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器下一步应该找哪个域名服务器进行查询。然后让本地服务器进行后续查询。 IP地址的查询过程如下:
DNS既使用TCP协议又使用UDP协议。
当进行区域传送(主域名服务器向辅助域名服务器传送变化的那部分数据)的时候会使用TCP协议,因为数据同步传输的数据量比一个请求和应答的数据量更多,而TCP允许的报文长度更长,因此为了保证数据的正确性,会使用基于可靠连接的TCP。
当客户端向服务器查询域名(域名解析)的时候,一般返回的内容不会超过UDP报文的最大长度,即512字节。同时用UDP传输时不需要经过TCP的三次握手,大大的提高了响应速度。但是这也要求域名解析器和域名服务器能够自己解决超时和重传,从而保证可靠性。
DNS 劫持即域名劫持,是通过将原域名对应的 IP 地址进行替换从而使得用户访问到错误的网站或者使得用户无法正常访问网站的一种攻击方式。域名劫持往往只能在特定的网络范围内进行,范围外的 DNS 服务器能够返回正常的 IP 地址。攻击者可以冒充原域名所属机构,通过电子邮件的方式修改组织机构的域名注册信息,或者将域名转让给其它组织,并将新的域名信息保存在所指定的 DNS 服务器中,从而使得用户无法通过对原域名进行解析来访问目的网址。
具体实施步骤如下:
今天主要就是要了解DNS域名解析的过程
,了解所使用的传输协议
,了解如何进行DNS劫持
,,以及如何避免和预防
等。
如果小伙伴们有遇到其他相关的面试题,欢迎在评论区留言提出,我会把大家提出的总结到文章内, 欢迎小伙伴们一起评论区打卡学习!小伙伴们可也在左方加我好友一起探讨学习!
我是灰小猿,我们下期见!