Loading

互联网是如何连接的:计网概述

当你在浏览器输入网址之后会发生什么

最直观的感受当然是跳转到网址所指向的页面啦,但在网络比较卡的时候,你可能注意到过,浏览器的左下角通常会有一些等待什么什么请求之类的小字。这时候,一个问题让你搜索到了这篇博文,我输入网址之后,浏览器到底干了什么?更要命的是,我想知道互联网到底是如何把每个人连接起来的?

我们先来认识一下你的浏览器,虽然大多数时间你都在使用它愉快的网上冲浪。可能在你的印象里,这个玩意儿就是只能开开网页,看看视频,功能强大,但略显单一。现在,随便找个PDF文件然后打开,你的默认方式应该是你心爱的浏览器。如果不是,可以右键选择打开方式,再用浏览器打开。

应该都能打开吧?这么一说,好像我们从来没注意过这家伙居然还有别的用处。为什么潜意思里觉得它就是看看网页呢?这里要更新一下名词,实际上我们输入的网址,更准确的叫法应该是URL。

URL: Uniform Resource Locator,统一资源定位符。词听起来有点绕口,你可以看看现在打开PDF标签页的地址栏,看看它的开头是不是跟网址不一样

URL有各种各样的写法“http:”、“https:"、“ftp:”、“file:”、“mailto:”,开头部分表示了浏览器应当采取的访问方式。那么输入网址之后,首先发生了什么事就呼之欲出了。

浏览器先得解析URL

比如我们要访问博客园的首页,那么应该在地址栏输入https://www.cnblogs.com。浏览器看到URL的开头是https,就会明白这是一个web请求,后面的www.cnblogs.com指的是Web服务器域名。

域名可以看成是IP地址的别名,你可以在搜索引擎里输入IP,你会看到一连串的数字。没有人会希望上个网还要先拿小本本把经常用到的IP地址记下来,再说,输入这一连串的数字也很麻烦,一不小心就输错了。所以我们使用域名来代替IP地址,帮助记忆。

IP地址:你可以类比于现实中的住房地址,因特网上的计算机也拥有一个惟一标识符来区别它的网上邻居(其他的电脑)。

APP支持IPv6网络是怎么回事?你可能在APP启动界面的底部看到过这行小字,实际上IPv6之前是IPv4(互联网通信协议第四版),就是一个给大家分配地址的协议,在这个版本里IP用32位的整数表示。32位?看起来很长的样子,然而2011年的时候,IANA就宣布IPv4地址43亿IP地址已经分配完毕。

后续的IPv6可谓是超级加强版,32位扩展到了128位意味着能给地球上每一粒沙子编号,他能分配大约3.4×10^38个IP地址!

向DNS查询Web服务器的IP地址

域名对应着IP地址,那么如何才能知道这个域名对应的IP地址是什么呢?自然是得问拿小本本记下这些东西的人啦。

DNS : 一个可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。

只用一台DNS服务器去存储数不胜数的IP地址是不可能的,所以在分散保存的情况下,一台DNS是如何处理它查询不到的域名信息呢?

实际上,如同域名一样,DNS也是分级的。域名的最左边部分表示机器名字,它随后的部分则是该计算机所属的组织,可能还会有子组织。最右边则代表顶级域名,指定该计算机所属组织的类型。大部分的顶级域都被用于美国的公司和组织,其他国家的计算机一般是用国家的特有顶级域,比如cn(中国)。

顶级域 主要应用
edu 教育机构
com 商业公司
org 非盈利组织
net 网络供应商
cn 中国国家顶级域名

负责管理下级域的DNS服务器找不到该域名对应的IP地址就会发送一个请求到它们的上级DNS服务器中去寻找,然后上级DNS还找不到就到更上一级的DNS服务器中,以此类推。最上一级叫做根域,根域服务器的地址在配置DNS服务器的时候就已经写入其配置文件里面了。

分配给根域DNS服务器的IP地址在全世界仅有13个,很遗憾中国没有。日本占据一个,其他的全是欧美。

虽然IP地址只有13个,但实际上服务器的数量远远多于13个,因为根域DNS是使用多台服务器对应一个IP地址的。

不知道你是否有过浏览器突然不能访问网页的经历,更离谱的是QQ居然能用,就他浏览器不行。这是为什么呢?多半是DNS服务器地址的问题,在 控制面板\网络和 Internet\网络连接 右键属性选择IPv4 改成下图一般就好了

为什么QQ没问题呢?因为QQ是直接通过IP连接的。

你访问的其实是文件

现在不如点开一下我首页的第一篇博客吧,或者直接访问https://www.cnblogs.com/AD-milk/p/13171059.html然后按下F12打开开发者模式,让我们看看都有些什么?

我们请求了一个html文件,1317...好像就是输入的网址里的那个。这么说的话,这一个一个斜杆好像确实是像文件路径的结构!

但如果你访问博客园的首页,你会发现路径名那里只有一个/,这表示根目录,好像并没有指定文件呀。这种省略文件名的情况下,一般是默认访问根目录下的index.html或者default.html这样的文件。

html:超文本标记语言,你可以简单的认为是可以在文本中嵌入音频,图片和链接的语言

按理说我们只是请求了13171059.html这个文件,但从图中来看我们好像请求了不止一个文件,这是为什么?回想一下,你会有过因为网卡而导致加载的页面只有文字的情况?这一般是因为网络问题,css文件以及图片没有被传输过来。浏览器在加载文件之前并不知道这里还需要什么图片或者文件,只有加载之后才会继续发送请求。

博文中图片的源代码

css文件是一种用来指定html样式的文件。缺少了它页面就没有好看的风格了。

1 条请求消息中只能写 1 个 URI。如果需要获取多个文件,必须对每个文件单独发送 1 条请求。

URI:Uniform Resource Identifier,统一资源标识符,URL是特殊的URI

眨眼间的旅途

你说的我都知道了,可你还是没有回答我,互联网到底是如何互联的?

首先来考虑一个简单的场景:两台电脑之间如何互相通讯?当然是接跟线把两个都连上啦,那再来五台怎么办?往电脑上再打五个接口?这显然不现实,我们可以让集线器帮我们的忙。它具有多个端口,可以实现其内部所有网络设备的连通。不过集线器是个榆木脑袋,它唯一知道的事情就是:当某一个端口发出数据时,它就把这个数据复制到与其连接的其他端口,这样所有连接到集线器的设备都可以获得这个数据包。这跟个大喇叭一样,太烦人了,说点悄悄话都不行。

之所以电缆不如光纤通信速率高,是因为电信号在提升通信速率的同时,其衰减率也会提高(信号在传播过程中减弱),导致信号无法传到目的地。相对地,光信号本来的衰减率就很低,提高通信速率也并不会提高衰减率。此外,光纤还不受电磁噪声的影响,因此光纤能够进行高速通信。

不是光信号本来就比电信号快啦!!!

为了解决广播所带来的安全问题,以及减少不必要的流量,我们可以换个聪明点的家伙:交换机。交换机比集线器智能的地方在于,它记下了与其相连的主机的物理地址MAC,他把这些存储在地址表里面。那么现在,当数据报从一个端口发出时,它能根据数据报提供的目标MAC,直接将数据发往预期的目的端口。终于可以和喜欢的女同学说悄悄话了,呼~~。

但集线器和交换机只能在局域网中交换信息,无法在外部网络交换。因为要在互联网上通讯需要识别IP地址,显然集线器和交换机没有这个功能。所以我们需要用到路由器:它是一个能根据IP地址,将数据报从一个路由转发到另外一个路由的设备。这意味着它具有过滤功能,但一个数据报达到该路由时,它会检查这是否是发给自己的,如果不是的话就将它转发给其他路由。所以它相当于一个网络的网关。

现在的路由器大多集成了三者的功能,成了“瑞士军刀”。让人想不到的是,尽管交换机比路由器简单,但实际上路由器早于交换机问世。

现在从我们电脑发出的请求数据报就沿着电路,被多个路由器转发,最后到达目的地。

至此,这眨眼间的漫长旅途迎来了终点。但其实网络通讯远不止这些,这里省去了很多东西,其中最重要的就是各式各样的协议了。缺少协议会使得网络世界通讯困难,就好比现实生活中你觉得点头表示OK,摇头表示NO,但另外一个人却持相反的认识,这时候你们俩的交流就会遇上大麻烦!

协议:定义了在两个或多个通信实体之间交换的报文格式和顺序,以及报文发送和接收一条报文或其他事件采取的动作

posted @ 2020-06-26 23:29  AD_milk  阅读(1105)  评论(0编辑  收藏  举报