热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

什么是DNS劫持、投毒、解析?看这文就懂了!

作者|寒食君【CSDN编者按】对于互联网,人们总是高谈阔论,却很少有人愿意去了解电脑、手机、电视这些设备到底是如何被“连接”起来的。本文通过“我”&#x

640?wx_fmt=gif

640?wx_fmt=jpeg

作者 | 寒食君


【CSDN编者按】对于互联网,人们总是高谈阔论,却很少有人愿意去了解电脑、手机、电视这些设备到底是如何被“连接”起来的。本文通过“我”,一个普通的网络请求的视角,给大家介绍下“我”的工作流程是如何的。

人们动动手指,点点鼠标,图片、视频便顺理成章地即时显示在屏幕上。只是,这一切并非理所应当,五光十色的互联网世界之下,是我们在夜以继日地工作。

我是一个普通的网络请求。我很渺小,但始终都在履行责任——寻找被指定的资源,再将它们交付到我的主人手中。就像这座城市中成千上万而又默默无闻的快递小哥,穿梭在大厦与楼宇之间,完成使命。

不同的是,真正的网络环境可不像现代化城市那么光鲜亮丽。它阴暗、潮湿,充满了未知的危险,如同一座黑暗森林。而我要做的,就是一场不折不扣的冒险。

 

640?wx_fmt=png

URL与IP到底是什么?

 

我的冒险,要从一张“羊皮卷”说起。那天,浏览器大叔神秘兮兮招呼我过去,告诉我CPU下达了一个命令:派遣使者访问外邦。而我是大叔最得力的门生,也是这类任务最合适的人选。大叔为我准备了一张羊皮卷,上面记录了我这次冒险需要用到的必要信息。

当仁不让地,我接过了它,即刻启程。

我缓缓展开羊皮卷,第一行赫然写着:URL: https://mail.google.com

什么是“URL”?我在脑中快速回忆着,对了!URL即 Uniform Resource Locator的缩写,翻译成中文便是“统一资源定位符”。因为互联网世界存在着不计其数的资源,每一处资源都需要有一个标记来定位它,正如人类城市中的门牌号。

有人可能会认为,既然有了门牌号,找到指定地点不是轻而易举吗?朋友们,我也希望如此,但现实往往没有这么简单。

即使有了URL,恕我愚笨,我还是无法直接理解它所指向的目的地。因为这是人类的语言,我无法翻译解读。(其实是人类太笨了,记不住IP地址,需要用方便记忆的域名来代替)

对我来说,IP地址才是唯一的坐标。什么是IP?IP即Internet Protocol的缩写,中文译为“互联网协议”,一个如雷贯耳的名字,互联网的基石之一,一切依赖互联网通信的软件都得遵循这个协议。

那么,如何才能将域名转换为IP地址呢?

浏览器大叔在平日工作之余,十分细心,他将用户访问过的站点整理了一份“域名-IP对应清单”。假如是一个已被记录的IP地址,那么他会直接告诉我,我可以立即向着目标IP地址出发,这就是浏览器缓存的作用。

假如用户输入的URL不在浏览器的记录范围之内,那么操作系统会查找一个名为“hosts”的文件。它是一份文本,记录了域名和IP地址的映射。如果“hosts”能够告诉我目标IP地址,那也能节省我不少工夫。这就是系统缓存。

此外,还有路由器缓存,相信不用我多介绍了,即保存在路由器中的域名-IP映射。

这些缓存都能有效帮助我以最快的速度找到相应的IP地址。但是,互联网世界日新月异,各种资源层出不穷。在很多情况下,用户会想要访问一个全新的、任何缓存都没有记录过的域名。

为此,人类专门设计了DNS。在这次任务中,我的第一站,就是赶往DNS。为了更短的响应时间与更好的用户体验,我快马加鞭。

 

640?wx_fmt=png


关于DNS劫持的记忆

 

DNS是什么?全称Domain Name System,是一个将域名和IP相互映射的分布式数据库。

全球有很多家DNS服务中心,假如你关心过你的计算机,你会发现,在你的网卡上,有着一项“DNS服务器”的配置项,它设定了我将要抵达的目的地。

640?wx_fmt=png

一转眼的工夫,我来到了114.114.114.114DNS中心。

这个地方我来过很多次,表面上风平浪静,实则暗流涌动。我小心翼翼地来到办事大厅,不禁想起了我第一次被DNS劫持的经历。

那天,我来到办事窗口,柜员热情地接待了我。

“先生,请问你想要查询哪个地址?”当时我还是一位新晋的网络请求,涉世尚浅,不知晓一些不可说的条例,于是毫不避讳地回答:“你好,我要去大名鼎鼎的mail.google.com!”

柜员的表情一下子凝固了,他上下打量了我一番,然后硬挤出一丝微笑,“好的先生,请稍等。”说完,他便向旁边的同事使了个眼色。我正纳闷呢,突然两边窜出身材魁梧的警卫,架着我强行往一处拖拽。

我这才意识到大事不妙,“这是怎么回事?!你们凭什么劫持我?”我发疯了一般嘶吼着。

“你好,根据本ISP(电信运营商)颁布的条例,世界上不存在你所说的站点,现怀疑你是一个不合规的网络请求,将把你转发至baidu.com的IP地址。你有权保持沉默!”警卫冷漠地望着我。

我知道,现在无论如何解释、挣扎都没有用了,只怪自己太年轻。无奈,我只好乖乖就范。

640?wx_fmt=png

还好当时正在使用计算机的用户有一些网络知识,当他发现自己输入的是google,返回的是baidu的页面时,并没有怪罪于我,大概是他心中已经猜到了原因。于是他将网卡的DNS配置为:8.8.8.8,这是一个国际上“不存在”的公司提供的DNS服务中心。

仅仅这样就能畅通无阻地访问互联网了吗?经历了被DNS劫持,我依然不敢放松。

 

640?wx_fmt=png


我遇到过DNS投毒

 

还未休息片刻,浏览器大叔再一次地给我分配了任务:继续尝试请求mail.google.com的资源。

人类出国要坐飞机,要办护照。我们网络请求也是这样,全国只有在几个主要城市才会部署国际出口,所有访问境外资源的网络请求,都得经过这儿接受检查。

与上次不同,因为这次我要访问的DNS服务器位于海外,所以我首先来到了大中华局域网的上海国际出口。

我一路奔波到上海真的是又累又乏,正当我火急火燎地准备过安检,通道附近有一位穿着制服的小伙迎了上来。

还没等我开口,他热情地迎了上来:“远道而来的朋友,一定是十分疲惫了吧?天气这么热,先喝杯水吧!”我悄悄地打量着他,看他的打扮应该是一位服务人员。

“国际出口就是不一样啊,服务真到位!”由于确实是太渴了,我放松了警惕。“啊,真清凉,谢……”我一边感叹着,一边接过了小伙递给我的水。

可当我第二个“谢”字还没说出口,立即感到一阵头晕目眩。

“不好!遇上了黑客,这是DNS投毒!”我的视线渐渐模糊,小伙的微笑也渐渐似乎变成了狞笑。我尽力搜索着脑海中和这一切有关的知识,想要知道寻求的办法。

640?wx_fmt=png

DNS投毒,英文叫DNS cache poisoning,也叫做DNS污染。从客户端向DNS服务器发出查询IP的请求,到响应返回到客户端的这段时间里,如果有黑客或者其他一些不可说的设施伪造返回了一个错误的DNS应答,那么用户将不能访问到真正的资源。

想到这里,我已经明显感觉难以控制自己的身体了,眼前一黑,就什么都不知道了。

 

640?wx_fmt=png


DNS正常解析

 

以前发生过的险情历历在目,如今想起来,我依旧心有余悸。这次,为了确保万无一失,我打起了十二分精神。

这次,我已经顺利来到8.8.8.8 DNS服务中心。

“你好亲,有什么可以帮到您的嘛”办事窗口内传来了软妹子的声音。

“我想查询域名mail.google.com的IP地址。”我试探性地问,依然不敢松懈。

“好的呢亲,这边通过树状检索,在顶级域名com下,查询到google目录,在google目录下查询到mail,IP地址是xx.xxx.xx.xx呢。”

640?wx_fmt=png

我松了口气,谢天谢地,终于拿到了结果。可我知道作为一次完整的网络请求,这刚刚开始,这才是万里长征第一步,我得赶紧将这个解析结果带回去,等会还得马不停蹄往返三次建立连接。

640?wx_fmt=jpeg


作者简介:寒食君,95后开发者,目前就职爱奇艺。热爱技术,也钟情于艺术。一位乐于思考的观察者,愿意与你一起聆听互联网的脉搏。

声明:本文系作者投稿,版权归作者所有。


【End】


Python入门到进阶最新思维导图分享

https://edu.csdn.net/topic/python115?utm_source=csdn_bw


 

640?wx_fmt=jpeg

作为码一代,想教码二代却无从下手:

听说少儿编程很火,可它有哪些好处呢?

孩子多大开始学习比较好呢?又该如何学习呢?

最新的编程教育政策又有哪些呢?

下面给大家介绍CSDN新成员:极客宝宝(ID:geek_baby)

戳他了解更多↓↓↓

640?wx_fmt=jpeg

 热 文 推 荐 

☞但见高通笑,哪闻英特尔哭?

☞为什么说 5G 绝对不是伪命题? | 人物志

☞IoT、3D 扫描抢救巴黎圣母院!

☞零编程基础、大龄全职妈妈是如何写出两个商业网站的?

☞下过富士康工厂、做过华为外包,这位程序员是如何花 6 年逆袭成为技术大佬的?

☞《权力的游戏》最终季上线!谁是你最喜爱的演员?这里有一份Python教程 | 附源码

☞微服务落地,我们在考虑什么?| 技术头条

☞爆料! 18张图、55个链接, 证据都在这了, 你还说自己是中本聪?

程序员被骗"黑砖窑":监禁、恐吓、996无休编程!

System.out.println("点个在看吧!");
console.log("点个在看吧!");
print("点个在看吧!");
printf("点个在看吧!
"
);
cout << "点个在看吧&#xff01;" << endl;
Console.WriteLine("点个在看吧&#xff01;");
Response.Write("点个在看吧&#xff01;");
alert("点个在看吧&#xff01;")
echo "点个在看吧&#xff01;"

你点的每个“在看”&#xff0c;我都认真当成了喜欢

推荐阅读
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 像跟踪分布式服务调用那样跟踪Go函数调用链 | Gopher Daily (2020.12.07) ʕ◔ϖ◔ʔ
    每日一谚:“Acacheisjustamemoryleakyouhaven’tmetyet.”—Mr.RogersGo技术专栏“改善Go语⾔编程质量的50个有效实践” ... [详细]
  • 服务网关与流量网关
    一、为什么需要服务网关1、什么是服务网关传统的单体架构中只需要开放一个服务给客户端调用,但是微服务架构中是将一个系统拆分成多个微服务,如果没有网关& ... [详细]
  • 知识图谱表示概念:知识图谱是由一些相互连接的实体和他们的属性构成的。换句话说,知识图谱是由一条条知识组成,每条知识表示为一个SPO三元组(Subject-Predicate-Obj ... [详细]
  • 浅解XXE与Portswigger Web Sec
    XXE与PortswiggerWebSec​相关链接:​博客园​安全脉搏​FreeBuf​XML的全称为XML外部实体注入,在学习的过程中发现有回显的XXE并不多,而 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
author-avatar
大狗nonodq_284
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有