上次我们通过宿舍联网玩魔兽世界的需求,学习了如何通过物理层和链路层搭建宿舍局域网。今天,我们换一个稍微复杂一点的场景,办公室。这个场景,不像在宿舍里,随便弄几根网线,拉,拉。一个办公室,少则几十人,大则数百人,每个人都有一个网口,如果算上整个楼层甚至整栋楼,网口就更多了。与办公室类似,这些复杂场景下的网络布线涉及到一个专业术语——拓扑。什么是拓扑?在讲解拓扑之前,我们首先要了解什么是拓扑。Topology是Topology的音译,直译为地形学,首先是指研究地形地貌相似性的相关学科。现在是研究几何图形或空间在不断改变形状后仍能保持不变的某些性质的学科。计算机网络的拓扑学是指在拓扑学中研究与大小、形状无关的点和线之间关系的方法。它将网络中的计算机和通信设备抽象为一个点,将传输介质抽象为一条线,由点和线组成。的几何是计算机网络的拓扑结构。办公室拓扑结构的形成‖‖‖‖如前所述,每个办公室都会有几十个甚至上百个网络端口。这时候一台交换机肯定是不够的,需要连接多台交换机,多台交换机的连接形成了一个稍微复杂的拓扑结构。我们先来看看两个开关的情况。两台交换机连接到三个局域网,每个局域网有多台机器。如果机器1只知道机器4的IP地址,当它要访问机器4并发出数据包时,它必须知道机器4的MAC地址。我们看一下过程:机器1发起广播,两者都机器2和交换机A接收广播。机器2收到广播后,知道自己不是在找它,所以也就不管了。SwitchA一开始并不知道任何拓扑信息。它收到广播后,采取转发策略到除广播包来方向以外的所有其他网口。机器3和交换机B都收到了广播信息,同样,机器3也知道自己没有任何关系。交换机B收到广播信息后,此时并不知道任何拓扑信息,所以也将数据包广播转发给局域网3,即机器4和机器5。当机器4收到广播时,发现:它在找它,所以它主动回应说它在找我,我的MAC地址是XXX。机器1收到机器4的MAC地址后,ARP请求成功完成。在上面的过程中,交换机A和交换机B都可以了解到这样的信息:机器1在左边的网口上。了解了这些信息后,如果机器2访问机器1,机器2发起ARP请求获取机器1的MAC地址,这个广播报文会发送给机器1和交换机A,此时交换机A已经知道机器1是左边的网卡,所以不会向LAN2和LAN3广播请求。这样,当交换机学习到所有的拓扑信息后,两台交换机的工作就会越来越好。但是随着办公室越来越大,交换机的数量肯定会越来越多。当整个拓扑结构复杂,绕来绕去那么多网线时,难免会出现一些意想不到的情况。最常见的问题是循环问题。循环和广播风暴如下图所示。你知道当两个交换机环路连接两个局域网时会发生什么吗?我们想象一下机器1访问机器2的过程,机器1发起ARP广播。机器2收到广播并返回MAC地址。嘿嘿,整个过程很顺利,没问题。但是我们忽略了两台交换机也可以接收到广播包。我们看一下两台交换机的广播过程:交换机A一开始并不知道拓扑信息,所以把广播信息放在局域网2上,在局域网2上广播,交换机B的右网卡接收到broadcastmessage,soitputstheinformationonLAN1BroadcastingonLAN1,switchA的左网口收到报文,把广播信息放到LAN2上……看到了吗?这样,如果继续广播,就会形成一个环路,最终变成广播风暴,直到网络瘫痪。在上面的过程中,可能有人会说,两台交换机逐渐学习拓扑后,是不是就可以了?再来看看他们的学习过程:在局域网1中,交换机A和B收到机器1的广播包后,知道机器1从左边的网口向局域网2广播,交换机B连接到右边网络。端口收到了机器1的广播包,因此误认为机器1换了位置,记住机器1在正确的网口上,把之前学习到的信息清空。同理,交换机A的右网口收到了机器1的广播包,也被误读了,所以也了解到机器1是在右网口,而不是左网口。过了一会,发现不对,机器1在右边网口,又过了一会,发现不对,在左边网口。于是,又形成了一场“广播风暴”。那么,有什么办法可以解决循环问题呢?这是STP协议发挥作用的时候。STP协议中那些难以理解的概念在数据结构中,有一种方法叫做最小生成树。循环通常称为图形。打破图中的环会创建一棵树。在计算机网络中,生成树的算法称为STP(SpanningTreeProtocol)。STP协议比较复杂,一开始很难理解。下面我们就通过华山论剑,以及五圣山之主的决意,一起来看看跨越树的过程吧。STP协议中有很多概念,译名非常难发音。让我们借助在宗门中的地位来帮助大家理解。RootBridge,即根交换机。它可以比作“头”开关,某棵树的老大。DesignatedBridge,即指定交换机。这个比较难理解。可以想象成一个“小弟”。对于一棵树,它是树的一个分支。所谓“指定”就是我请某人做大哥,其他交换机通过这个交换机到达根交换机,相当于请他做大哥。这里注意是分支,不是叶子,因为叶子往往是寄主。BridgeProtocolDataUnits(BPDU),网桥协议数据单元。可以比喻为“比一比”的协议。行走江湖,比的是武功,比的是实力。当两个开关相遇,也就是连接起来的时候,需要比一比自己的实力。只有master可以发送BPDU,属于某个master的交换机只能传达master的指令。优先向量,优先向量。可以类比为强度(数值越小越好)。什么是力量?它是一组ID,[RootBridgeID、RootPathCost、BridgeID和PortID]。为什么要这样设计?这是因为这要看如何比实力了。先看RootBridgeID,也就是老大的ID,发现头是一样的,那就是兄弟;然后比较RootPathCost,也就是我和老大的距离,也就是比较和掌门的关系,看同一个门派里谁和老大的关系强;最后,比BridgeID,比我自己的ID,比你自己的技能。概念准备好了,让我们看看STP是如何工作的。STP的工作过程一开始,江湖纷争,纷乱无比。每个人都认为自己是主人,没有人服气。因此,所有交换机都认为自己是主设备,并且每个网桥都分配有一个ID。此ID包含管理员分配的优先级。当然,管理员指定哪些交换机具有良好的性能并为其分配高优先级。这种交流,天生武功高,乔峰率先动手。既然都是高手,互相之间用长网线相连,那就互相发送BPDU来比一比吧。这一对比,就知道有人是岳不群,有人是封不平。赢了的还得当老大,输了的还得当弟弟。当领导者继续发送BPDU时,失败者将没有机会。他们只能转发leader发来的BPDU,表示服从。数字表示优先级。就像上图,5和6相遇了,6的优先级低(数字越小优先级越高),乖乖当弟弟。于是,一个小宗门成立了,5为师,6为弟。其他小学校如1-7、2-8、3-4也相继诞生。然后,这些小宗门就这样相互融合了。合并的过程会有以下四种情况。情况一:头碰头?当5碰上1,头碰上头,1觉得自己是头,5刚和别人PK完就成了头。这两个高手比拼功夫,最后1赢了,于是5带领小弟们全部投降。结果是1个成功的大师。场景二:同门偶遇同门偶遇可以是掌门与弟弟的偶遇,也就是说有“戒指”。这位小弟已经通过其他渠道拜入了你的门下,只是你还不认识他,还PK了他。原来掌门看这小弟武功高强,品级不应该这么低,就把他招入门下亲自带队,那这小弟就相当于升职了.让我们再看看,如果1和6相遇。6本来拜拜1下的,但是6的老大是5,5的老大是1。1发现6离我只有2,比5(=4+1)离5近多了。6而已直接向我报告。因此,5和6分别向1报告。在同一所学校见面也可以是认识弟弟。这时候就需要比较一下谁和团长的关系最亲近了。最亲近的是大哥。刚才5和6同时向1汇报。后来5和6相遇比赛的时候,发现你直接报1的距离是4,如果5报6再报1,距离只有2+1=3,所以5干脆拜6为老板。情况三:老大遇到其他帮派成员?弟弟将自己帮派的老大与这位老大进行比较。如果他赢了,这个教主就会成为教派的一员。如果他输了,他将成为新的领导者。兄弟们,一起“抛弃黑暗,转向光明”。比如2和7相遇的时候,虽然7是弟弟,2是教主,但论个人武功,2比7强,但是7的教主是1,比2强,所以有没办法,2人必须加入7宗门,并且和弟弟一起加入。情况四:不同的弟兄相遇各自比拼门派之主,败者加入胜者门派,并逐渐将与其有关联的弟兄拉入新门派。例如,5和4相遇。虽然4的武功比5强,但是5的团长是1,比4强,所以4加入了5的门派。后来3和4见面的时候,3发现4已经“背叛”了,而4说我现在是1的老大,谁比你厉害,要不你也来,于是3也加入了1。人气最高,一棵树会长,武林会一统天下将是和平的。但如果长期统一天下,就会出现相应的问题。常见的是广播和安全问题。广播和安全问题‖‖‖机器和交换机太多。即使交换机比集线器更智能,仍然存在广播问题。很多机器,相关部门和不相关部门,广播多了,性能就会下降。这就像一家公司。创业的时候,十几个人坐在一个会议室里,大家一起商量事情,很方便。那个时候50个人,都在一个会议室里吵,那就乱了。另一方面,在一个公司里,有些部门是需要保密的,比如人事部门,升职加薪要商量。但是如果遇到可以在广播域抓包的程序员,就可以看到没有加密的敏感信息。现在是什么?怎么办呢,分部门,分会议室,看怎么分。划分方式有两种。一是物理隔离。每个部门有独立的会议室,对应网络,即每个部门有独立的交换机和独立的子网。这样,部门之间的通信就需要路由器了。这样做的问题是,有的部门员工多,有的部门员工少,而且部门人数会经常变动。如果每个部门都有单独的交换机,网口太多会造成浪费,太少又不够用。这时候虚拟隔离就出来了。虚拟隔离就是我们常说的VLAN,即虚拟局域网。使用VLAN,一台交换机会将属于多个局域网的机器连接起来,那么交换机是如何区分哪台机器属于哪个局域网的呢?我们只需要在原来的二层包头上加一个TAG,里面包含一个VLANID,共12位,可以划分4096个VLAN。对于普通办公室来说,这个数额应该足够了。如果我们买的交换机支持VLAN,当交换机去掉二层包头时,就可以识别出VLANID。这样只会互相转发相同VLAN的报文,看不到不同VLAN的报文。这样就可以解决广播和安全问题。这样复杂的办公网络布线就被我们用交换机和VLAN解决了。参考:百度百科-拓扑结构刘超-趣谈网络协议系列课程
