【网络】网络通信的基础与隔离—广播与VLAN

370 阅读8分钟

什么是广播?

广播是一种网络通信方式,它允许一个设备向其所处同一网络内的其他所有设备发送数据。想象一下,你在办公室里大声喊 “下班了!”,办公室的同事都会看向你,但是隔壁办公室的人可听不到。

如果全球计算机网络是一个大的以太网,那就不需要使用IP地址通信,只使用MAC地址就可以了。大家想想那将是一个什么样的场景?一个计算机发广播帧,全球计算机都能收到,且都要处理,整个网络的带宽将会被广播帧耗尽。所以还必须由网络设备路由器来隔绝以太网的广播,默认路由器不转发广播帧,只负责在不同的网络间转发数据包。

  • 广播帧与广播域: 在以太网中,广播帧的MAC地址是FF:FF:FF:FF:FF:FF,表示“所有设备”。当一个设备发送广播帧时,同一子网内的所有设备都会接收到该帧。一个网络中所有能够接收到广播帧的设备的集合就是广播域,默认情况下广播域是一个子网。广播帧不会跨越子网边界,因为第三层设备不会转发广播帧。

在没有路由器的情况下,整个网络的所有设备都会处于同一个广播域中,网络带宽和计算能力将面临巨大的压力。而路由器的引入,为网络的分布式管理和大规模扩展提供了可能。

  • ARP(地址解析协议):当一个设备需要知道某个IP地址对应的MAC地址时,就发送一个ARP广播帧,子网内所有设备都会接收到这个广播帧,但只有拥有该IP地址的设备会响应
  • DHCP(动态主机配置协议):客户端设备在启动时会发送一个DHCP广播请求,寻找DHCP服务器以获取IP地址和其他网络配置信息。(ARP协议虽然是在数据链路层运行的,但它依赖于网络层提供的IP地址。设备必须首先通过DHCP获得IP地址,然后才能通过ARP解析MAC地址)

跨子网通信示例

假设有一个网络,包含两个子网:192.168.1.0/24 和 192.168.2.0/24,中间通过一个路由器连接。

  1. 子网192.168.1.0/24: 设备A(192.168.1.10)发送一个广播帧,同一子网内的所有设备(例如192.168.1.20、192.168.1.30等)都会接收到这个广播帧。路由器不会将这个广播帧转发到192.168.2.0/24子网。

  2. 子网192.168.2.0/24:设备B(192.168.2.10)发送一个广播帧。 同一子网内的所有设备(例如192.168.2.20、192.168.2.30等)都会接收到这个广播帧。路由器不会将这个广播帧转发到192.168.1.0/24子网。

如果设备A需要与设备B通信,它们必须通过三层网络设备进行。具体步骤如下:

  1. ARP请求:设备A需要知道设备B的MAC地址,但它不知道设备B在哪个子网,因此设备A无法直接通过广播获取设备B的MAC地址。

  2. 路由

    • 设备A将数据包发送到网关(路由器)的MAC地址。
    • 路由器接收到数据包后,根据路由表确定下一跳地址,并将数据包转发到192.168.2.0/24子网。
    • 路由器在192.168.2.0/24子网中发送一个ARP请求,询问192.168.2.10的MAC地址。
    • 设备B响应ARP请求,将其MAC地址发送给路由器。
    • 路由器将数据包转发给设备B。

需要注意的是:这里容易混淆,即使设备A在某个时刻知道了设备B的MAC地址,如果它们位于不同的子网,设备A仍然不能直接通过MAC地址发送数据包给设备B。数据包必须通过路由器进行转发,只要涉及跨子网通信就必须要网络层的参与来处理路由和转发。

交换机主要工作在数据链路层,根据MAC地址进行局域网内的点对点数据转发。当一个设备在局域网内发送数据时,交换机会根据目标设备的MAC地址将数据包转发给对应的设备。如果该数据包是广播帧(例如,MAC地址为FF:FF:FF:FF:FF:FF的帧),交换机会将其转发到同一局域网中的所有设备,但它不会将广播帧转发到其他子网,从而有效避免了网络带宽的浪费和广播风暴。然而,交换机并不处理跨网络的通信。它仅能在局域网内进行数据转发,无法将数据包发送到不同子网的设备。此时,路由器发挥着重要作用。工作在网络层的路由器,基于数据包中的IP地址来进行跨网络的路由和转发。当数据包需要从一个子网传送到另一个子网时,路由器会解析数据包中的目标IP地址,决定数据包的转发路径,并将其传递给目标子网中的设备。值得注意的是,路由器不会转发广播帧,它只转发单播数据包,这有助于控制网络中的流量,避免网络中不必要的负担。

在现代网络中,交换机路由器通常是协同工作的。交换机负责局域网内部设备之间的通信,确保数据包能够准确地到达目标设备;而路由器则连接不同的网络,确保数据能够从一个子网流向另一个子网。特别是在家庭和小型办公室环境中,许多路由器不仅具备路由功能,还内置了交换机功能,提供多个以太网端口,允许局域网内的设备直接通过交换机进行通信。因此现代路由器同时担任着交换机路由器的双重角色。


什么是VLAN(虚拟局域网)?

VLAN(虚拟局域网)是一种在物理局域网基础上构建的逻辑子网。它通过将物理网络划分为多个逻辑子网,实现网络的隔离和管理。你用隔板把你的办公室分成了几个小房间,每个小房间内的人都可以互相交流,但不同小房间之间的人不能直接交流。

子网内通信

  • 如果网关为255.255.255.0,意味着设备192.168.6.1、192.168.6.2和192.168.6.99都被配置在同一个子网内,共享同一个IP地址前缀和子网掩码。设备默认情况下是可以相互通信的。在这种配置下,任何设备都可以直接通过二层交换机发送数据帧到同一子网内的其他设备,而无需通过路由器。这个过程完全不涉及IP地址,不跨网段,不跨网段说明不需要网关,因此不需要路由器的网关功能。除非有防火墙规则或其他网络安全策略阻止这种通信,否则这些设备可以互相ping通。

VLAN隔离

  • 假设192.168.6.1、192.168.6.2和192.168.6.99这三个设备虽然拥有相同的IP地址前缀,但它们分别被分配到VLAN 1、VLAN 2和VLAN 3。在这种情况下,即使这些IP地址都属于子网192.168.6.0/24,它们之间也无法直接通信。这是因为VLAN在数据链路层完成了隔离,每个VLAN都是一个独立的广播域,ARP请求不会跨越VLAN边界,因此设备A无法通过ARP直接获取设备B的MAC地址。除非网络管理员在三层设备(如路由器或三层交换机)上配置了VLAN间路由,否则192.168.6.1、192.168.6.2和192.168.6.99之间将无法相互ping通或交换数据。

交换机的两种模式

  1. Access模式

    • 连接终端设备,如PC、打印机等。在这种模式下,接口属于一个特定的VLAN,所有通过该接口传输的数据帧都会被打上该VLAN的标签。想象一下,你有一个插座,它只能连接一个特定的电器,这个电器的所有电源都经过这个插座。
  2. Trunk模式

    • 连接其他交换机或路由器。在这种模式下,接口可以传输多个VLAN的数据帧,并且会对每个数据帧打上相应的VLAN标签,以便接收方能够识别数据帧所属的VLAN。想象一下,你有一个多功能插线板,它可以连接多个电器,每个电器的电源都经过这个插线板,但插线板会标记每个电器的电源来自哪个插座。

实例:跨交换机的VLAN通信

假设需要将PC3划分入VLAN 1,使得PC1能ping通PC3:

  1. 打开交换机1的0/0/3接口

    int g0/0/3
    
  2. 将该接口设置为Trunk模式

    port link-type trunk
    
  3. 设置该接口的允许规则

    port trunk allow-pass vlan 10
    
  4. 交换机2先创建两个VLAN

  5. 打开交换机2的0/0/2接口,设置VLAN

    int g0/0/2
    port link-type access
    port default vlan 10
    
  6. 打开交换机2的0/0/1接口,设置为Trunk模式

    int g0/0/1
    port link-type trunk
    port trunk allow-pass vlan 10
    

通过以上配置,VLAN 10的数据帧可以在两台交换机之间传输,实现PC1和PC3之间的通信。