猴子也能懂的互联网原理

硬要把一个复杂的理论给吃瓜群众也讲明白的花,其实大多时候只是让吃瓜群众假装自己明白了一些东西。以至于得到的卓克在自己的科普节目中说道:读者在我这里学不到科学,学到的只是一些科学的感觉和素养。

有时候为了让吃瓜群众明白一些复杂的道理,只有把道理简化再简化,最后已经存在严重的曲解道理的本质了。即便如此,这种简化道理的尝试却是非常重要的,只要注意简化有度就行了。总之:不简化,就什么也做不了,过于简化,就什么也不是了。

一提到互联网思维,大家马上就会想到淘宝,美团,滴滴等等,然后有就是各种ppt创业派,总之给人的感觉就是浮华,肤浅。但是互联网作为一个有深厚底蕴的通信技术却被吃瓜群众完全无视了。

你有没有想过这样一个问题,是什么力量驱动着每天飞驰在全球的海量数据,而且没有任何组织能够完全控制这个力量。这里我将用尽量简单的模型来为你讲述互联网运作的原理。为了不过于曲解概念,在需要繁杂的地法放,还是会稍稍讲点非人化,希望读者们静心去理解理解。

如果你想告诉一个朋友你准备晚上吃面还是吃米饭,你有几种方法传送这个消息呢?我们用1代表吃面,用0代表吃米饭,也就是你能想到到多少种方法,把这个0或者1传给你的朋友?

最简单的方法是通过声音,也就是直接说你要吃面还是吃饭。另外还可以通过灯光,你点亮你家的灯代表1,熄灭代表0。还可以通过电缆,你在电线的一段加上高电压,你朋友在电线另外一端也能检测出一个高电压,这样他就知道你想吃面了。以此类推,我们可以用上到微波,用卫星,用量子效应,下到用飞鸽用烽火台等无数种完全不同的方法传送一个比特(0或者1)的信息。

但不管用什么样的方法,只要能传送一个0或者1到远处的系统,就能作为互联网的最底层:物理层。反过来说,当你用微信发送了一句话给远在地球另一端的一个朋友,这个信号真的是跋山涉水,使用各种完全不同的手段才达到了你朋友的手机上。然而神奇的是,程序员在开发微信的时候,却重来不会考虑你和你朋友之间到底是面对面,还是隔着万水千山。这正是互联网的采用的分层模型带来的好处。

互联网的的最底层物理层只负责把一个0或者一个1传送到另外一个地方。假如电脑想要传送一个0到另外一个地方,程序就会控制CPU把内存的某个地址设置为0。同时互联网的物理层的硬件会不断的检测这个地址的变化,当发现这个内存地址被设置为0的时候,就把电缆的电压设置为底。电缆的另外一段物理层的硬件也不断的检测电缆电压的变化,如果发现电压变低了,就把电缆另一端的内存的某个地址设置为0。这样另外一台电脑就收到了一个0。

现在突然你的老板说我们不用电缆传输数据了,我们要用飞鸽来传。懂得互联网原理的工程师就会会心一笑说道:没问题。因为分层模型,其实只用修改物理层就能使整个系统兼容飞鸽传书了。这时的物理层变成如下:

当物理层检测到某个内存地址被设置为0的时候,就放出一只带有0的鸽子。另外一台计算机收到这个带有0的鸽子后,再把自己的某个内存地址设置为0,这样其他程序就收到了一个0。上层的程序只关心某个内存地址是0或者1,而这些0或者1是在不同机器间是通过什么物理方法同步的,上层的程序就不关心了。

现在我们解决了怎么传送一个0或者1的问题,但实际中我们需要传送很长很长的0和1的序列,所以我们需要把很长的01序列截断成定长的一小段一小段数据分别传送。这就是互联网的第二层:联网层负责的事情了。

联网层只负责传送长度一定的01序列。主要的工作就是使用物理层提供功能,把一个个0和1送出去。除此之外还要保证所有的0和1都安全的被传送出去了,或者保证收到的一堆0和1是和发送时一模一样。为了验证数据的正确性,联网层还需要利用物理层传送一些额外的验证信息。

读者可以看出来,物理层只管传送0或者1,完全不关心这个0或者1是真的数据还是用于验证的辅助信息。而联网层,只关心每个0或者1的意义,而不关心具体0和1是怎么传输的。也就是各司其职,不需要一个人懂所有的东西。

好了,现在你已经能够传输一段0和1的序列。但问题又来了,你有好多的朋友,你的朋友还有朋友。如果每两个朋友之间都能连上一根电缆那事情就好办了,但这是不可能的。这个问题在联网层的上层:传输层中解决,也就是我们熟知的ip协议。

首先在传输层中,一长段数据已经被分割成很多小段数据。这样如果你和另外一个人需要共用一段电缆,那你们就交替的传输数据包就行了。先传一个你的,再传一个另外人的,再传你的,这样轮流使用电缆。同时传输层还会使用额外的数据包来保证数据被可靠的传输。

但是互联网怎么把我要传输的数据传给正确的人呢?互联网又是怎么知道我要传达信息的人在什么地方呢?这就需要ip地址了。一个ip地址相当于邮政系统中的收信寄信地址。让我们用邮政系统做类比:

当你把一封寄往美国的信送到邮局的时候。邮局一看是美国的,就首先把信送到去美国的飞机上。美国邮政收到信后,一看地址写的加州,于是把信又送上去加州的飞机。这样通过多级传输,你的信就能精确的送到大洋彼岸的某个房子里。

再来看互联网的结构。我们家里的电脑,手机一般直接和一个家庭路由器相连。家庭路由器和网络运营商(电信,联通等)的路由器相连。而运营商的路由器是分层级的:小区的路由器和一个地区的路由器相连,地区的路由器和城市的中心路由器相连。如果你和想通信的目标同属于一个城市的相同的运营商,那这条数据最高就到城市级别的中心路由器,然后就被下发到另外一个地区路由器。但如果你要通信的对象在美国,这条数据一直会被发送到国家级的主干线路由器。

目前中国大陆一共有8条出国的通信电缆。有连接日本的,也有直接和美国相连的。所以你的数据有可能出国后就直接被送到了美国,也有可能通过日本中转一下,再到美国。

这里另外一个问题就出现了,当你家里的路由器收到一个需要送往某个ip的数据包的时候,它怎么知道这个ip的用户在什么位置呢?邮政系统里面预先定义好了地址的和位置的关系。但是互联网中,这个关系是不断在变换的,而且有多重选择的。这个寻找某个ip的转发规则的过程就叫做路由。

当一个路由器收到一个数据包的时候,路由器先在自己存储的ip列表中查找。如果能查到这个ip的转发规则,就把这个数据包发给指定的下一个节点(路由器)。但如果没有查找到这个ip的转发规则呢?路由器会向所有和自己相连的路由器发送一个请求,询问是否知道这个ip的转发规则。如果还是不知道这个ip的信息,这个请求还会继续扩散开去,直到某台路由刚好知道关于这个ip的转发规则。然后这个消息一路反传回最开始的那个路由,并且这一路上的路由都会都会把这个ip的信息记录下来。如果后面又有到相同ip的数据包,就能很快找到转发的规则了。

这也是为什么经常第一次开某个网页很慢,而且容易失败,重新打开的时候就很快了。

所以当你把你的电脑或者手机通过一个路由器和互联网连接上的同时,你自己也成为了互联网的一部分了。接入的机器越多,这个网络就越大,而且每个节点都有分工,有的结点主要负责发布内容,这样的节点叫做服务器。有的节点主要接收信息,这样的节点叫做用户或者客户端。也有的节点主要负责转发信息,这样的节点主要由网络运营商建立。每个节点就像社会中的一个独立的人一样,大家各司其职,最终组成了一个没有中心节点的大网络(社会)。

总结一下:互联网采用分层思想,从而在开发相关的程序的时候,不用考虑具体数据是通过什么物理方式传播的。然后互联网的整体功能被拆分成多个小功能,每一层负责一个功能,每一层的开发者也只用关心本层相关的东西,从而降低的开发难度。同时采用动态的路由功能,是整个网络随时保持最新的状态,从而使网络运行更加稳定。最后互联网中每个节点都是一个独立的个体,整个网络采用自组织的方式相互联系,最终形成了一个无国界的虚拟社会形态。

Git是一种分布式版本控制系统,它可以帮助我们管理代码的版本以及协调多人协作开发。猴子也能理解git的基本概念和使用方法。 首先,了解Git的工作流程对于猴子学习Git很重要。Git将代码存储在仓库(repository)中,它存在本地仓库和远程仓库两种形式。我们可以通过git init命令来创建本地仓库,通过git clone命令从远程仓库中复制一份代码到本地。 一旦代码被提交到本地仓库中,我们可以使用git add命令将修改的文件添加到暂存区(staging area),然后使用git commit命令将暂存区的代码快照保存到本地仓库中。这样,我们就可以轻松地在不同的代码版本之间切换。 另外,Git还可以帮助我们协调多人协作开发。每个开发者都可以拥有自己的本地仓库,并从远程仓库中获取代码进行开发。当一个人的代码修改完成后,可以通过git push命令将代码推送到远程仓库,供其他人查看和使用。同时,其他人可以通过git pull命令从远程仓库获取最新的代码更新到本地。 此外,Git还提供了分支(branch)的功能,让多人协作更加便捷。开发者可以创建自己的分支,进行独立的开发工作,不会影响到其他分支上的代码。当开发完成后,可以将自己的分支合并到主分支(master branch)上,保持整体代码的稳定。 总之,Git是一个强大且易于使用的版本控制系统,猴子只需要简单了解它的基本概念和使用方法,就可以轻松管理代码和与其他开发者进行协作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值