作者|冷食君
【CSDN编者按】人们总是对互联网说得很多,但很少有人愿意知道电脑、手机和电视最终是如何“连接”起来的。本文从一个普通的网络请求“我”的角度来介绍“我”的工作流程。
当人们移动手指,点击鼠标时,画面和视频会立即显示在屏幕上。然而,这一切都不是理所当然的。在五彩缤纷的互联网世界下,我们夜以继日地工作。
我是一个普通的网络请求者。我很小,但我总是在尽我的职责——寻找分配的资源,并将其交付给我的主人。就像这座城市里成千上万名不知名的快递小哥一样,穿梭在建筑之间,完成自己的使命。
不同的是,现实的网络环境并不像现代城市那样光鲜亮丽。它黑暗、潮湿,充满未知的危险,就像一片黑暗的森林。而我想做的是彻头彻尾的冒险。
URL和IP到底是什么?
我的冒险从一张“羊皮纸”开始。那天,浏览器大叔神神秘秘地跟我打招呼,告诉我CPU已经下达命令:派特使去外国访问。而我是大叔最好的门生,也是这种任务最合适的人选。叔叔给我准备了一张羊皮纸,上面记录了我这次冒险所需的必要信息。
很自然的,我接过来,马上出发了。
我慢慢打开羊皮纸,第一行写着:网址:https://mail.google.com。
什么是“网址”?我在脑子里迅速回忆了一下,没错!即URL统一资源定位符的缩写,翻译成中文就是“统一资源定位符”。因为互联网世界里有无数的资源,每一个资源都需要一个标记来定位,就像人类城市里的门牌号一样。
可能有人会想,现在有了门牌号,找指定地点不是很容易吗?朋友,我也希望如此,但现实往往没那么简单。
即使有了网址,原谅我的愚蠢,我还是无法直接理解它所指向的目的地。因为这是人类语言,我不会翻译。
对我来说,IP地址是唯一的坐标。什么是IP?即IP协议的缩写,中文翻译为“互联网协议”。这是一个众所周知的名字,也是互联网的基石之一。所有依赖互联网通信的软件都必须遵循此协议。
那么,如何才能把域名转换成IP地址呢?
浏览器大叔平日工作后很细心。他整理了一份用户访问过的网站的“域名-IP对应列表”。如果是记录的IP地址,那么他会直接告诉我可以马上去目标IP地址,这就是浏览器缓存的作用。
如果用户输入的URL不在浏览器的记录范围内,操作系统将查找名为“hosts”的文件。它是记录域名和IP地址映射的文本。如果“主机”能告诉我目的地的IP地址,也会节省我很多时间。这是系统缓存。
此外,还有路由器缓存。相信不用我介绍,就是路由器中存储的域名-IP映射。
这些缓存可以有效的帮助我尽快找到对应的IP地址。然而互联网世界日新月异,各种资源层出不穷。在许多情况下,用户会希望访问一个没有记录在任何缓存中的全新域名。
所以人类专门设计了DNS。在这个任务中,我的第一站是冲DNS。为了更短的响应时间和更好的用户体验,我工作得很快。
DNS劫持的记忆
什么是DNS?域名系统全称是映射域名和IP的分布式数据库。
全世界有许多DNS服务中心。如果你关心你的电脑,你会发现你的网卡上有一个“DNS服务器”的配置项,设置了我要到达的目的地。
转眼间,我来到了114.114.114.114DNS中心。
这个地方我去过很多次了。表面上风平浪静,实则暗流涌动。我小心翼翼地来到服务大厅,不禁想起了自己第一次被DNS劫持的经历。
那天,我来到服务窗口,柜员热情接待了我。
“先生,你要查哪个地址?”那时候我还是一个新上线的要求,还年轻在人间。我不知道一些不能说的规定,就不假思索地回答:“你好,我要去著名的mail.google.com!”
柜员的表情立刻僵住了。他上下打量着我,然后勉强笑了笑。“好的,先生,请稍等。”说完,他向旁边的同事使了个眼色。我正纳闷,突然魁梧的警卫出现在两边,把我拖到一个地方。
我意识到有些不对劲。“到底是怎么回事?!你为什么劫持我?”我疯了。我在尖叫。
“你好,根据这个ISP发布的规定,你所说的网站在世界上是不存在的。现在我怀疑你是一个不符合要求的网络请求,并将你转发到Baidu.com的IP地址。你有权保持沉默!”警卫冷冷地看着我。
我知道,现在想解释或者挣扎都没有用。只怪自己太年轻。无奈,只好乖乖就范。
幸运的是,当时正在使用电脑的用户有一定的网络知识。当他发现自己输入了google,返回了百度的页面,他并没有责怪我。也许他心里已经猜到了原因。于是他将网卡的DNS配置为:8.8.8.8,一家国际“不存在”的公司提供的DNS服务中心。
这是畅通无阻访问互联网的唯一方法吗?被DNS劫持后,我依然不敢放松。
我遇到过DNS中毒。
休息之前,浏览器大叔再次给我布置了一个任务:继续尝试向mail.google.com请求资源。
人类要飞到国外去拿护照。我们的网络请求也是如此。国际出口只会部署在全国几个主要城市,所有访问海外资源的网络请求都要经过这里接受检查。
与上次不同的是,因为这次我要访问的DNS服务器位于海外,所以我首先来到了大中华区LAN的上海国际出口。
去上海的一路上真的好累好累。正当我准备安检的时候,一个穿制服的年轻人在通道附近走了过来。
我还没来得及说话,他就热情地跟我打招呼:“我这位远道而来的朋友一定很累了吧?天这么热,先喝杯水吧!”我悄悄看了看他,看他应该是个服务人员的打扮。
“国际出口完全不同。服务真的很到位!”因为实在渴了,所以放松了警惕。“啊,太酷了,谢谢……”我叹了口气,接过那家伙递过来的水。
但我还没来得及说第二个字“谢谢”,就立刻感到一阵眩晕。
“糟糕!遇到黑客了,这是DNS中毒!”我的视线渐渐模糊,那家伙的笑容渐渐好像变成了狞笑。我尽力在脑海中搜索与这一切相关的知识,想知道寻求的方法。
DNS中毒,英文叫DNS缓存中毒,也叫DNS污染。从客户端向DNS服务器发送IP查询请求到向客户端返回响应,如果黑客或其他一些无法形容的工具伪造并返回错误的DNS响应,用户将无法访问真正的资源。
想到这里,我已经明显感到很难控制自己的身体了。当眼前一片漆黑时,我什么也不知道。
正常DNS解析
之前发生的危险情况历历在目,现在想起来还是心有余悸。这一次,为了确保万无一失,我精力异常充沛。
这一次,我成功地来到了8.8.8.8 DNS服务中心。
“你好亲爱的,有什么事吗?”软妹的声音从服务窗口传来。
“我想查一下mail.google.com这个域名的IP地址”我试探性地问道,依然不敢放松。
“好的,亲爱的,在这里,通过树形搜索,在顶级域名com下,可以找到谷歌目录,在谷歌目录下,可以找到邮件。IP地址是xx.xxx.xx。”
我松了口气,谢天谢地,终于有结果了。但我知道,作为一个完整的网络请求,这只是一个开始,这是万里长征的第一步。我得赶紧把这个分析结果带回来,之后还要马不停蹄地跑三趟建立联系。
作者简介:韩世军,95后开发者,目前就职于爱奇艺。热爱科技,更要热爱艺术,一个有思想的观察者,愿意和你一起聆听互联网的脉搏。声明:本文由作者投稿,版权归作者所有。
【结束】
作为一个代码生成,我想教代码生成二,但我不能开始:
听说少儿编程很吃香,但是它的优势在哪里?
孩子几岁开始学习比较好?怎么学?
有哪些最新的编程教育政策?
这是CSDN的新成员:极客宝贝
他知道的更多