您的位置:首页 > 其它

我是一个交换机,集线器你一边呆着去!

2019-07-31 08:35 1461 查看

集线器的统治


集线器(Hub)这个“笨蛋”统治我们的局域网已经有好几年了,我们都敢怒而不敢言。 


集线器之所以能控制我们这几台电脑, 是因为从我们的网卡扯出的网线都会连接到它的身上,他把这些连接点叫做端口;



我们想和别人通讯,必须要通过这些集线器的端口发送数据,然后由集线器来转发。


比如某一天,我(PC1)想和PC4聊聊天,发送了一个数据包给集线器,照理说集线器应该把这个数据包转发给PC4吧! 


不是这样的!这个笨蛋仅仅知道它的端口是否连上了设备,至于设备是谁,他根本不管!


那他怎么发送数据? 


简单而粗暴!他把数据包向所有的端口都转发了一遍,这样PC2, PC3, PC4都会收到。 





但是我们这些电脑约定好了, 只要不是发给你的数据包,简单就丢弃就行。


所以PC2, PC3就需要检查一下数据包中的目标MAC地址(这是唯一能标志我们电脑网卡的东西),看看是不是自己,不是的话就简单丢弃。



这是一种效率挺低的办法,集线器得意的把它成为“广播”。


后来我们几台电脑发现了集线器的秘密,实际上它根本不懂得网络协议这一套东西,它不懂得MAC地址,IP地址,数据帧,IP包,对它来说,就是0和1这样的二进制流。 


当表示0或者1的bit到达一个端口时,集线器会重新生成这个bit,将其能量强度放大,并将该bit从其他端口传输出去。仅此而已,它是个典型的物理层设备。


我们这些支持TCP/IP的电脑居然被这么一个笨家伙给统治了,真是可悲。


广播的方式在网络中电脑很少的情况下勉强凑合,但是随着联网的电脑越来越多,不幸的事情就发生了。


想象一下,PC1向PC4发送数据,与此同时, PC2也要向PC3发送数据, 网络上就出现了广播的冲突。


为了解决这个问题,我们只好再次约定,如果出现了冲突,每个电脑都要等待一段随机的时间,然后再尝试发送。


我们几个决定推翻他的统治,想来想去,也只有罢工这一条路。 


主人发现网络不通了,仔细检查了电脑,我们都表现得很正常,于是怀疑的矛头就被指向了笨蛋集线器, 主人把他换掉了。 


一个新的设备在我们的欢呼声中入住局域网。


我是交换机


我听到了咔嗒咔嗒的声音,意识到我的那些端口应该被连接上了网线,网线的那头儿就是电脑。



我立刻感到了不同寻常的气氛,这些电脑对我的到来简直是兴奋得过了头。


根据我的经验,他们这是深受集线器统治之苦。


这不,一个数据包马上就从我的端口1 发了过来。 



我一看源地址是MAC_PC1,立刻就在我的MAC地址表中记了一笔:端口1 <--> MAC_PC1



这样,下一次如果有电脑发送数据包给MAC_PC1的话,我就知道直接转发到端口1就行了,那里肯定连着PC1


但是目前这个数据包的目标地址MAC_PC4,我不知道是在那个端口,按照规定,只好广播到所有端口了!



我似乎感受到了有两个电脑在抱怨:“这不是发给我的,真烦人,丢弃!这新来的家伙也没什么本事嘛!还是广播!”


我隐忍不发,过了一会儿,PC4向端口4发了一个数据包:



我立刻更新我的MAC地址表,记录下端口4上连着PC4。



这个数据包是发给MAC_PC1的,之前我已经得知端口1上连接着PC1, 就可以直接转发过去了,不用再广播了!




不久以后,我就得知了每个端口都和谁相连, 我就可以精确地向特定目的地转发数据包了。




这一天,我偷偷地拆开了他们之间通信的几个数据包(这是严重违反规定的!我只能查看数据链路层的东西),发现他们几个有趣的通信: 


PC1 : 我觉得新来的家伙不错啊,现在发数据快多了啊。

PC2 : 是啊是啊,关键是冲突很少了,这家伙似乎可以准确地把数据转发到目的地。

PC1:  他是怎么做到的?

PC2:  肯定是记录下了端口和设备的关系

PC1:  嗯,他也没问我们要啊。

PC2:  肯定是自己学习的,没想到还挺智能的嘛,哈哈。

PC3:我们几个整天在这个小局域网内转悠,我听说外边的互联网非常精彩啊,要不去看看?

PC4:  怎么才能去到互联网?

......


到底怎么才能连上互联网?  请移步《我是一个网卡


往期精彩回顾

我是一个线程

微服务之赤壁大战

我是一个Java Class

面向对象圣经

函数式编程圣经

TCP/IP之大明邮差

CPU阿甘

我是一个网卡

我是一个路由器

一个故事讲完HTTPs

编程语言的巅峰

Java:一个帝国的诞生

JavaScript:一个屌丝的逆袭

负载均衡的原理

阅读源码的三种境界

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: