比IP和路由更重要的是什么?当网络2层出现故障的时候,链路层的知识显得更重要。许多人都没有把握构建富有弹性的2层网络必须具备的生成树协议的知识。当一台交换机出现问题时,除非主机直接连接到这台交换机。否则不应该影响其它人的网络连接。在我们深入介绍生成树协议之前,你必须要理解2层内部的工作原理。
2层是数据链路层,是以太网所在的层。在这一层我们将讨论网桥、交换和虚拟局域网,要让一个网络运行起来,你实际上不需要学习以太网内部的工作原理,当然,假如你愿意学习的话,你可以利用其它的时间学习这方面的知识。
以太网交换机是一种“网桥”设备。传统的网桥是这样工作的,一开始它接收以太网帧,然后,把它们发送到除接收端口之外的全部其它端口。以太网交换机具答应答应双绞线连接的能力。它渐学习哪一个端口连接了哪些MAC地址。这时候,网桥就变成了一台学习设备,能够存储在一个端口上看到的全部的MAC地址表。当一个帧需要发出时,网桥将查看在网桥表中的目标MAC地址,并且知道应该在哪一个端口发送这个帧。这种仅向正确的主机发送数据的能力是交换技术中的一个巨大的进步,因为这可能显著减少通信冲突。假如在网桥表中没有目标MAC地址,交换机就简单地把数据发送到全部端口。这是首次发现主机到底在什么地方的惟一方法,因此,正如你看到的那样,把数据发送到全部端口是交换技术中的一个重要原则。这个原则在路由中也非常必要。
2层相关的重要词汇包括:
单播分段(Unicast segmentation):网桥能够限制哪些主机能够收到单播帧(仅发送给一个MAC地址的帧)。集线器只是简单地把一切数据发送给所有的端口,因此,单播分段本身可以节省大量的带宽。
冲突域(Collision Domain):冲突域是能够发生冲突的网段。由于交换机采用了直通发送技术以及网卡全部采用双工技术,冲突已经不再发生了。假如你在一个端口看到冲突,这就意味着有人意外地使用半双工的设备,或者是出现了其它的故障。
广播域:发送和接收广播帧的网段。
在交换机产品几年后,网桥运行所采用的老式的存储和发送方式改变了。新的交换机仅查看帧的目标MAC地址,然后立即把这个帧发送出去。这种技术称作“直通发送”可以帧更快地直接通过交换机,因为这种方式对帧很少进行处理。这种方式也暗示了一件重要的事情:一台交换机不再检查CRC(循环冗余校验)以便查看数据包是否损坏。这还暗示着不可能发生冲突。
另外,为了解决广播网段的问题,我们引入了虚拟局域网技术。假如你不能向另一台机器发送广播帧,那些机器就不在你的本地网络中,你要把全部数据包发送给一台路由器,接着由路由器发送这些数据包。实际上,这就是虚拟局域网做的事情:虚拟局域网将网络划分为更多的子网。
你可以在一台交换机上设置虚拟局域网,然后向一个虚拟局域网分配端口。假如主机A是虚拟局域网1,这台主机就不能与虚拟局域网2中的任何人通话,就像它们生活在完全没有网络连接的设备中一样。不过需要注重,这究竟只是虚拟的,假如交换机的MAC地址表空间已经被数据填满从而无法继续维护这个交换MAC地址表,为了继续维持通讯交换机将会把收到的所有数据转发到所有端口。很多人将VLAN视为一种很好的安全措施,实际上任何一个半吊子黑客使用合适的工具都可以很快的攻克交换机的VLAN限制,事实上,当交换机出现MAC地址表溢出的情况时,它会变成一台单纯的HUB.
正如我们已经知道的那样,假如你无法使用ARP协议获得目标的MAC地址,那你必须要使用一台路由器。这是不是意味着你必须在每个VLAN之间物理的连入一台路由器呢?不需要,因为我们现在拥有3层交换机!设想一个例子,假如你愿意,一台交换机可以配置48个端口。这台交换机有两个虚拟局域网,虚拟局域网1采用1至24端口,虚拟局域网2采用25至48端口。要把这两个虚拟局域网连接起来,你基本上有三种选择。第一,使用一台路由器分别连接这两个虚拟局域网中的一个端口,并且分为VLAN中的主机配置正确的默认路由。第二种方法是你还可以简单地在每个虚拟局域网中各自建立一个虚拟路由器接口(virtual interfaces)。在思科的设备,这种虚拟路由器接口可能称作“vlan1”和“vlan2”。它们拥有自己的IP地址,而VLAN中的主机使用这些虚拟路由器接口作为自己的路由器。
在第三种方法使我们回到了2层概述的最终话题。假如你拥有多台需要包含同样的虚拟局域网的交换机,你可以通过端口汇聚(trunk)的方式它们都连接起来。这样,交换机A中的虚拟局域网1和交换机B中的虚拟局域网1就完全是一样的了。这是采用802.1q标准完成的。802.1q标准为将离开第一台交换机的数据包打上一个虚拟局域网的标识符。思科把这些交换机间的链路称作“主干端口(trunk ports)”,你可以拥有交换机答应的最多数量的虚拟局域网(目前大多数硬件答应4096个虚拟局域网)。因此,在虚拟局域网之间建立联系的第三种方法(也是最后一种方法)是把以trunk方式连接一台路由器,并且为每一个虚拟局域网建立一个虚拟路由器接口。虚拟局域网1上的主机(无论是在交换机A和交换机B上)都能够访问这个路由器接口(这个接口可以在另一台设备上),因为他们全部都连接在了一起,并且共享一个广播域。关于trunk与802.1q的更多信息请参见这篇文章。
在这里我们没有采用“这是2层协议,记住以太网数据包头”这种标准的教学模式。要成为一个真正的专家,你必须要知道这些知识。但是,要成为一个有用的操作人员,简单地知道2层是如何工作的就可以了。下一讲我们将介绍网络领域最有趣的协议生成树协议。
小结:
●网桥(又名交换机)存储MAC地址表以实现单播网段功能。也就是说它们仅向需要这个数据的主机发送单播数据。
●虚拟局域网并不能提供可靠的安全。
●一台3层交换机能够通过trunk提供多个虚拟局域网,并且为这些虚拟局域网提供路由。这可以完全在同一条线路上实现。