所谓冲突,就是在总线上同时有多个机器在传送数据,从而造成数据包的冲突和碰撞,这在以太网中是不允许的,因此,以太网中引入了CSMA/CD冲突检测机制,CSMA/CD是英文carrier sense multiple access/collision detected 的缩写,可把它翻成“载波侦察听多路访问/冲突检测”。这个机制的工作原理就是每台机器在总线上发送数据之前要侦听是否有其他数据在总线上传送,如果有就等待,否则就会发出准备传送数据的信息,其它机器侦听到这个信息就会暂停自己的数据传送。可以说所有在这个总线上的机器在一个冲突域内,因为他们是互相争夺总线带宽的,是共享机制,因此又叫做带宽域。集线器(HUB)所有的端口都在一个冲突域,所有的机器都可以侦听到其它机器是否在发送数据,也可以接受到其它机器发出的数据,所以说HUB是共享带宽的,在满载的情况下是不能保证所有机器都能得到端口的标称带宽的,而且利用其可以接收到其它机器发送的数据的特点,我们可以用sniffer等软件监控网络中的数据。
交换机的好处在于其可以隔离冲突域,每个端口就是一个冲突域,因此在一个端口单独接计算机的时候,该计算机是不会与其它计算机产生冲突的,也就是带宽是独享的,交换机能做到这一点关键在于其内部的总线带宽是足够大的,可以满足所有端口的全双工状态下的带宽需求,并且通过类似电话交换机的机制保护不同的数据包能够到达目的地,可以把HUB和交换机比喻成单排街道与高速公路。HUB和交换机都工作于OSI的第二层。
IP广播是属于OSI的第三层,是基于TCP/IP协议的,其产生和原理这里就不多讲了,大家可以看看TCP/IP协议方面的书籍。交换机是无法隔离广播的,就像HUB无法隔离冲突域一样,因为其是工作在OSI第二层的,无法分析IP包,但我们可以使用路由器来隔离广播域,路由器的每个端口可以看成是一个广播域,一个端口的广播无法传到另外一个端口(特殊设置除外),因此在规模较大,机器较多的情况下我们可以使用路由器来隔离广播。
下面开始归入正题。
通常,只有通过划分子网才可以隔离广播,但是VLAN的出现打破了这个定律,用二层的东西解决三层的问题很是奇怪,但是的确做到了。VLAN中文叫做虚拟局域网,它的作用就是将物理上互连的网络在逻辑上划分为多个互不相干的网络,这些网络之间是无法通讯的,就好像互相之间没有连接一样,因此广播也就隔离开了。
VLAN的实现原理非常简单,通过交换机的控制,某一VLAN成员发出的数据包交换机只发个同一VLAN的其它成员,而不会发给该VLAN成员以外的计算机。
使用VLAN的目的不仅仅是隔离广播,还有安全和管理等方面的应用,例如将重要部门与其它部门通过VLAN隔离,即使同在一个网络也可以保证他们不能互相通讯,确保重要部门的数据安全;也可以按照不同的部门、人员,位置划分VLAN,分别赋给不同的权限来进行管理。
VLAN的划分有很多种,我们可以按照IP地址来划分,按照端口来划分、按照MAC地址划分或者按照协议来划分,常用的划分方法是将端口和IP地址结合来划分VLAN,某几个端口为一个VLAN,并为该VLAN配置IP地址,那么该VLAN中的计算机就以这个地址为网关,其它VLAN则不能与该VLAN处于同一子网。
如果两台交换机都有同一VLAN的计算机,怎么办呢,我们可以通过VLAN Trunk来解决。
如果交换机1的VLAN1中的机器要访问交换机2的VLAN1中的机器,我们可以把两台交换机的级联端口设置为Trunk端口,这样,当交换机把数据包从级联口发出去的时候,会在数据包中做一个标记(TAG),以使其它交换机识别该数据包属于哪一个VLAN,这样,其它交换机收到这样一个数据包后,只会将该数据包转发到标记中指定的VLAN,从而完成了跨越交换机的VLAN内部数据传输。VLAN Trunk目前有两种标准,ISL和802.1q,前者是Cisco专有技术,后者则是IEEE的国际标准,除了Cisco两者都支持外,其它厂商都只支持后者。