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

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

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

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

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。为了更短的响应时间与更好的用户体验,我快马加鞭。

关于DNS劫持的记忆

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

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

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

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

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

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

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

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

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

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

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

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

我遇到过DNS投毒

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

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

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

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

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

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

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

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

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

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

DNS正常解析

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

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

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

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

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

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

URL转换成IP的过程相关推荐

  1. Cisco IP Phone 7960/7940 SCCP firmware 转换成SIP firmware过程

    Cisco IP Phone 7960/7940 SCCP firmware 转换成SIP firmware过程<?xml:namespace prefix = o ns = "urn ...

  2. java将图片的url转换成File,File转换成二进制流byte

    package com.xqy;import java.io.*; import java.net.HttpURLConnection; import java.net.URL; //java将图片的 ...

  3. 网络DNS域名转换成IP地址

    网络DNS域名转换成IP地址(完整代码,测试通过) using System; using System.Collections.Generic; using System.Linq; using S ...

  4. ip地址转换数字函数 iton_字符串IP地址转换成IP数值函数

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_IP2Int]') and xtype in (N'FN ...

  5. XLSX文件中将url转换成图片写入

    XLSX文件中将url转换成图片写入 新建一个xlsx文件,将图片的url放置表格中 取消所有的文件格式,方便处理url转换图片 修改表格大小,方便存储图片,选中即将要转换的表格中的数据,将行高设置为 ...

  6. 用 ffmpeg + m3u8-segment 将h264的ES流转换成m3u8的过程记录

    from:http://blog.chinaunix.net/uid-8489474-id-4538230.html 苹果公司的 HLS(HTTP Live Streaming) 使用的是m3u8这种 ...

  7. 后缀为php的怎样转换成m3u8,【过程】第一次将m3u8文件转换为MP4文件经验分享

    因为工作原因,要将之前{中国影视童星大赛}的网络上的回放保存到本地下来,是微信里面的网页,用电脑打开的话,不会有下载按钮, 手机用UC浏览器看视频一般都会有下载按钮, 索性我就用uc下载到手机上再传到 ...

  8. react项目中把获取的url转换成二维码

    在项目开发中遇到一个需求就是把后台返回的URL路径转换成二维码,经过像度娘查询之后选用了一种方法,并且已经在项目中成功使用,所以专门来记录下,避免以后忘记,处理步骤如下: 安装该依赖的来源:https ...

  9. javascript 微信企业号APP应用URL转换成PC端可正常访问的URL

    时间过得飞快,准备写些东西的时候才发现自己快一年半没有写blog了,写这些东西只是为了记录下来自己走过的坑,为下次遇见同类的问题能够迅速解决,毕竟人脑有限,存储下来以备不时之需. 一:背景(功能需求) ...

  10. sqlserver 存储过程 转oracle存储过程,SqlServer存储过程转换成Oracle储存过程语法常见问题...

    1. top order by 转换成 rownum order by 的问题 (子查询实现) 同级情况下的优先处理顺序: sqlserver: 先order by 再top oracle: 先row ...

最新文章

  1. 【 MATLAB 】z 变换中的卷积与解卷积
  2. 关于Cocos2d-x中对其他某个类的某个属性的获得
  3. AJAX实用教程——获取博客园博文列表
  4. @retention注解作用_分分钟带你玩转SpringBoot自定义注解
  5. redis-cli 命令详解
  6. java修饰方法有哪些,探讨Java语言中那些修饰符
  7. javascript --- 自定义数组的反序函数
  8. vue 删除两个集合中相同的数据_vue.js如何删除数组里面的数据
  9. bat 发送post请求_get post 请求
  10. PAT1119 Pre- and Post-order Traversals(先序后序求中序)
  11. Zabbix Server安装部署
  12. Atitit 开发效率补充哦哦那个、、 目录 1. 架构方法上选择快速开发的架构 1 2. 编程方法上选择快速的编程范式和编程方法 1 3. 开发方法论上需要快速的方法 2 1.架构方法上选择快速
  13. 学习笔记(03):Qt视频教程-基础实例进阶-多线程下载和断点续传
  14. Process finished with exit code -1073740791 (0xC0000409)解决方法
  15. 用echarts绘制瀑布图
  16. CF1292C Xenon‘s Attack on the Gangs
  17. 爬取了知乎2.2亿阅读量 “有漂亮女朋友是什么体验“,结果发现...
  18. 数据结构算法常见的 100 道面试题全解析:2019 版
  19. 风变编程,让小白也能轻松学会!
  20. vue项目你一定会用到的性能优化!

热门文章

  1. HDB3码的编码解释(简单粗暴)
  2. 贪心算法哈夫曼java_贪心算法_哈夫曼编码问题(Huffman Coding)
  3. 调试和测试 Swing 代码
  4. Mac壁纸软件 - 动态 高清 炫酷 4K 精美壁纸下载
  5. 怎么利用Excel实现随机取样
  6. ftp 服务器文件夹创建命令,ftp 服务器文件夹创建命令
  7. java 换行符 ascii码_java换行怎么写
  8. 【Vue】基础入门 —— 黑马程序员
  9. 10本深入学习Spring框架的最佳书籍和课程
  10. Sigrity仿真之电热混合仿真