夯实基础 --- 计算机网络链路层(二)
这是计算机网络链路层的第二篇文章,第一篇详见
https://articles.zsxq.com/id_zin5dvavd8z1.html
通信类型分类
共享介质型网络
共享介质型网络故名思义就是多个设备使用同一个通信介质的网络。共享介质型网络的类型主要有以太网(Ethernet)和光纤分布式数据接口(Fiber Distributed Data Interface,FDDI)。
共享说的是,多个设备会使用同一个载波信道进行发送和接收,这其实是一种半双工的设计。
什么是半双工?
半双工指的是数据可以在一个信道上的两个方向上相互传输,但是不能同时传输,举个简单的例子,就是你能给我发消息,我也能给你发消息,但是不能你给我发消息的同时我也在给你发消息。
既然多个设备会共同使用一个信道,那么就可能存在多个数据传输到同一个介质上导致的数据争用问题,为此,共享介质型网络有两种介质访问控制方式:争用和令牌传递。
争用
争用是发生在共享介质,载波监听多路访问(CSMA) 上的数据访问方式。在这种访问方式下,网络中各个介质会采用先到先得的方式占用载波信道发送数据。如果多个介质同时发送帧,就势必会产生冲突,继而导致通信性能的下降和网络拥堵。下面是争用的处理方式。

如上图所示,假如 A 想要给 C 发送数据,那么介质 A 会在确认周围没有其他介质要给 C 发送数据后,也就是经过一段时间后,A 会把数据马上发送给 C。

每个介质在接受到 A 发送的数据后,会从 A 报文中解析出来 MAC 地址判断是否是发送给自己的数据包,如果不是的话就是丢弃这条数据。

上面这种方式会使用在一部分以太网中,但是另外一部分以太网却使用了 CSMA 的改良方式 - CSMA/CD 。CSMA/CD 会要求每个介质提前检查一下链路上是否有可能产生冲突的现象,一旦发生冲突,那么尽可能早地释放信道。它的具体工作原理大致如下:
- 监听载波信道上是否会有数据流动,如果没有的话,那么任何介质都可以发送数据。
- 介质会检查是否发生冲突,一旦发生冲突就会丢弃数据,同时立即释放载波信道。
- 放弃数据后,会经过一段时间重新争用介质。
下面是 CSMA/CD 的改良版。

上图这个过程是 CSMA(Carrier Sense Multiple Access),首先介质会监控载波信道上是否有数据存在,如果没有再发送,如果有,等一段时间再发送。
下面是 CD(Collision Detection) 的示意图。

- 在发送数据 -> 发送完成后,如果电压一直处于规定范围内,就会认为数据已经正常发送。
- 发送途中,如果电压超过了一定范围,就会认为是数据冲突。
- 发生冲突时会先发送一个阻塞报文,继而放弃数据,在延迟一段时间后再次发送。
令牌环
第二种共享介质型网络的传输方式就是令牌环了,令牌环顾名思义就是有一个令牌一样的东西,以环为一圈进行令牌传输,那么令牌是啥呢?你想啊,我们最终的目的不就是为了传输数据吗?那么这个令牌,它可不可以作为数据呢?
其实,在这种传输方式中,令牌环是作为一种特殊报文来传输的,它是控制传输的一种方式,在数据传输的过程中同时会将令牌进行传递,只有获得令牌的介质才能够传输数据。这种方式有两个优点,即
- 持有令牌的介质才能够传输数据,这样能够保证不会有报文冲突情况。
- 每个介质都有平等获取令牌的机会,这样保证了即使网络拥堵也不会导致性能下降。
但是这种令牌环的传递方式也是有缺点的,因为只有持有令牌的介质才能发送数据,所以即使在网络不太拥堵的情况下,其利用率也达不到 100%。
下面是令牌的传递示意图。

最一开始,令牌位于介质 A 处,此时介质 A 拥有数据传输的能力,然后介质 A 把令牌传递给介质 B。

此时 B 持有令牌,所以介质 B 具有发送数据的能力。

这个数据最终会由 D 接收,然后 D 就会设置一个已接收数据的标志位,然后数据会继续向下发送。

令牌环是一项很成功的技术,尤其是在公司环境中使用,但后来被更高版本的以太网所取代。
在了解完共享网络之后,我们来探讨一波非共享网络。
非共享介质型网络
如果说共享介质型网络是共享介质的话,那么非共享介质型网络就是不会共享介质,那么该如何通信呢?
在这种方式下,网络中的每个介质会直接连上交换机,由交换机来转发数据帧。发送端和接收端不会共享通信介质,共享通信介质的意思就是介质之间直接通信。这种网络传输方式一般采用的是全双工通信。
非共享介质型网络比较适合应用于搭建虚拟局域网(VLAN),但是这种通信方式有一个及其致命的弱点:一旦交换机发生故障,那么与交换机相连的所有计算机都无法通信。
下面是非共享介质型网络的通信示意图。

如图所示,主机 A 发送了一个目标地址为 B,源地址为 A 的交换机,由交换机负责将数据转发给介质 B,如下图所示

非共享型网络是一种全双工通信的方式,每个介质在发送数据的同时也能够接受来自交换机传递过来的数据。
交换集线器
交换集线器是一种共享型网络通信介质,它是使用同轴电缆作为传输介质,通常用于以太网中,交换集线器也叫做以太网交换机。
以太网交换机中的各个端口会根据介质的 MAC 地址来转发数据,那么转发数据肯定得有所依靠啊,这时可以参考的表就叫做转发表(Forwarding Table),转发表中记录着每个介质的 MAC 地址。转发表不需要我们手动维护,交换机会自动维护转发表。交换机会自学每个数据包的经过介质的 MAC 地址,如下图所示

由于不知道主机 B 的 MAC 地址,所以主机 A 发送的数据会经过交换机广播给以太网内的其他主机,主机 B 接收到数据后,会给主机 A 回送消息。

在主机 B 给主机 A 回送消息后,交换机就知道主机 A 和主机 B 的 MAC 地址了,从此以后双方通信会在各自相连的端口之间进行。
由于 MAC 地址没有层次性,转发表中的记录个数与所有网络设备的数量有关,当设备增加时,转发表的记录也会越来越多,检索时间会逐渐增加。所以如果需要连接多个终端时,需要将网络分成多个数据链路,采用类似 IP 地址一样对地址进行分层管理。
在网络通信的过程中,由于网络链路的冗余或者路由线路冗余可能会造成闭环,也就是我们所称的环路。环路会导致数据报文在网络中不断重复复制,最终导致网络设备负载过重,无法正常运行。影响的范围可能会扩散至整个局域网,导致整个局域网里的计算机无法正常使用网络。

那么如何检测网络中出现的环路呢?
环路检测方法
目前有两种检测环路的方式,一种是生成树,一种是源路由法。
生成树:生成树指的是每个网桥必须在 1 - 10 秒内相互交换生成树协议单元包,以此来判断哪些接口使用,从而消除环路,一旦发生故障后就会立刻切换线路,利用没有被使用的端口进行传输。
源路由法:源路由法通常是用来解决令牌环路。这种方式可以判断发送数据的源地址是通过哪个网桥实现传输的,并将帧写入 RIF,网桥会根据这个 RIF 信息发送给目标地址,即使网桥中出现了环路,数据帧也不存在被反复转发的可能。
虚拟局域网 VLAN
网络通信过程中经常会遇到网络负载过高,通信性能下降的情况,往往遇到这种情况,就需要分散网络负载,变换部署网络设备的位置等。在虚拟局域网出现之前,往往需要管理员手动变更网络的拓扑结构,比如变更主机网段,进行硬件线路改造等,但是使用了虚拟局域网,就可以不用再做如此复杂的操作了,只需要修改网络结构即可。
那么虚拟局域网究竟是什么呢?

如上图所示,交换机按照端口区分了多个网段,从而区分了广播数据的传播范围,提高网络安全性。然而异构的两个网段之间,需要利用具有路由功能的交换机才能实现通信。
由于交换机端口有两种 VLAN 属性,一个是 VLANID,一个是 VLANTAG,分别对应 VLAN 对数据包设置 VLAN 标签和允许通过的 VLANTAG(标签)数据包,不同 VLANID 端口,可以通过相互允许 VLANTAG,构建 VLAN。
