快速理解网络协议(六)VLAN (下)

本文概览

上篇文章我们详细的讲解了VLAN的协议内容、适用场景,并分析了同VLAN内的通信过程,本篇将继续分享跨VALN场景下,VLAN通信的过程。

跨 VLAN 通信

上篇文章中我们就说过,跨 VLAN 不能直接通信,必须经由路由器、三层交换机等路由设备 ,所以在后续的实践中我们需要使用三层交换机。三层交换机,本质上就是"带有路由功能的(二层)交换机",三层交换机可以想象成一个路由器 + 一个(二层)交换机。

同设备

同设备跨 VLAN 通信,三层交换机与网络中的其他设备的连接如上图所示。A 想要与 B 通信。

  1. 数据帧传输 :A 判断 B 和自己不属于一个网段,发送一个 ARP 报文获取网关的 MAC 地址,目的 IP 为网关的地址 10.1.1.1。A 发送 untagged 数据帧至交换机
  2. 交换机学习:交换机接收到一个 untagged 数据帧,将 PVID(缺省 VLAN ID)作为 VID,生成 Tag 添加至数据帧。并根据数据帧的源 MAC 地址、VID 和接收数据帧的端口,生成 MAC 表项
  3. 交换机回复:交换机发现目的 IP 地址是自己,附上自己的 MAC 地址,回复 ARP 应答报文
  4. 数据帧传输:A 收到交换机回复的 ARP 应答报文,记录 IP、MAC 地址的对应关系至 arp 表中,重新封装数据帧,将目的 MAC 地址填为交换机回复的 MAC 地址,目的 IP 填为 B 的 IP 地址
  5. 查找路由表:交换机接收到一个 untagged 数据帧,添加 VLAN Tag。发现数据帧中的目的 MAC 地址是自己,则需要进行三层转发。根据目的 IP 地址查找三层转发表,此时 B 的相关信息还不存在于此表中,于是继续查找路由表
  6. 交换机转发 :在路由表中发现目的 IP 地址属于另一个直连网段,在此网段中广播 ARP 报文以获取 B 的 MAC 地址。在发出广播报文前,同样会剥离 Tag,即发出 untagged 数据帧
  7. 数据帧传输:B 接收到 ARP 报文后,回复 ARP 应答报文,并记录 IP、MAC 地址至自己的 arp 表中,交换机重复步骤 2,学习到 B 的 IP、MAC、VID 对应关系,并记录到三层转发表中
  8. 直接通信:后续 A、B 通信时,发送数据帧至网关并匹配三层转发表进行三层转发

同设备跨 VLAN 抓包实践

  1. gns3 网络拓扑及配置

  2. 配置 A、B 的 IP 地址为 10.1.1.10、10.1.2.10,和同设备同 VLAN 的配置命令相似,这里不再赘述

  3. 配置三层交换机

    • 配置三层交换机

      • conf term
      • int e0/0
      • switchport mode access
      • switchport access vlan 10
      • int vlan 10
      • ip address 10.1.1.1 255.255.255.0
      • no shut
      • vlan 20 同上
      • ip routing 这步必需,否则无法联通
    • 查看 VLAN 信息

      • show vlan
    • 查看路由信息

      • show ip route
    • 查看 e0/0、e1/1 MAC 地址

  4. 在 A 上执行 ping B 的命令,并且在 A 与 L3Switch、B 与 L3Switch之间抓包

    • A 发出的是 untagged 数据帧
    • A 请求的目的 MAC 地址是网关的 MAC 地址
    • B 回复的是 untagged 数据帧
    • B 请求的目的 MAC 地址是请求时的源 MAC 地址,即 e0/0 的 MAC 地址

跨设备

跨设备跨 VLAN 通信,三层交换机与网络中的其他设备的连接如上图所示。A 想要与 B 通信。

通信过程与同设备跨 VLAN 基本相似,同设备跨 VLAN 的过程中 A → 交换机 → B ,相当于跨设备跨 VLAN 过程中的 A → 交换机 1 → 交换机 2,是整个跨设备跨 VLAN 通信过程的一半,剩余的半段通信过程类似。

跨设备跨 VLAN 抓包实践

  1. gns3 网络拓扑及配置

  2. 配置 A、B 的 IP 地址为 10.1.1.10、10.1.2.10

  3. 配置三层交换机

    • conf term
    • 配置 A 和 L3Switch-1 之间为 access 链路
      • int e0/0
      • switchport mode access
      • switchport access vlan 10
      • no shut
    • 配置 VLAN 10、VLAN 20 IP 分别为 10.1.1.1、10.1.2.1
      • int vlan 10
      • ip address 10.1.1.1 255.255.255.0
      • no shut
      • vlan 20 同理
    • 配置 L3Switch-1 和 L3Switch-2 之间为 trunk 链路
      • int e1/1
      • switchport trunk encapsulation dot1q
      • switchport mode trunk
      • switchport trunk native vlan 10
      • no shut
  4. A ping B,并在 L3Switch-1 和 L3Switch-2 之间抓包

    可以看到第一个 icmp 报文是不携带 VLAN ID,因为此时 L3Switch-1 的端口 PVID 和 报文中的 VID 一样,都是 10,所以发出的数据帧是 untagged 数据帧 。在 L3Switch-2 发送 icmp reply 报文时,L3Switch-1 的端口 PVID 和 报文中的 VID 不同,于是 L3Switch-2 发出的是 tagged 数据帧,L3Switch-1 学习到 VID 是 20,后续的报文都会携带 VLAN ID。

VLAN 的常见应用

应用场景 描述
部门划分 企业内不同部门间相互隔离,但共享同一个物理网络
客户和内部流量隔离 云服务提供商将客户的网络流量隔离,确保安全性
楼层或建筑划分 大型企业或学校拥有多个楼层或建筑,每个楼层独立管理
无线网络划分 为企业或学校的无线网络划分多个虚拟网络
虚拟化环境中的隔离 在虚拟化环境中,为虚拟机隔离网络环境
多租户数据中心 云计算环境或数据中心需要为多个租户提供独立的网络环境

就像我们在 VLAN 的作用 中提到的,任何需要在共用物理网络的基础上,划分多个逻辑网络的小型网络,都可使用 VLAN 实现。

原创不易,期待点赞收藏,任何建议欢迎评论区交流~
more about me

相关推荐
pumpkin845146 小时前
客户端发送http请求进行流量控制
python·网络协议·http
可可爱爱的你吖8 小时前
webSocket的使用文档
网络·websocket·网络协议
熊明才9 小时前
Ubuntu 22.04.4 LTS + certbot 做自动续签SSL证书(2024-11-14亲测)
数据库·网络协议·ssl
写bug的小屁孩11 小时前
websocket身份验证
开发语言·网络·c++·qt·websocket·网络协议·qt6.3
专注VB编程开发20年13 小时前
WebSocket和HTTP协议的性能比较与选择
websocket·网络协议·http
群联云防护小杜14 小时前
服务器被挂马怎么办?——解决服务器被挂马的方法和步骤
运维·服务器·网络协议·tcp/ip·安全·ddos
ascarl201015 小时前
生成自签名证书并配置 HTTPS 使用自签名证书
网络协议·http·https
写bug的小屁孩16 小时前
websocket初始化
服务器·开发语言·网络·c++·websocket·网络协议·qt creator
江梦寻18 小时前
思科模拟器路由器配置实验
开发语言·网络·网络协议·学习·计算机网络
前端李易安19 小时前
什么是HTTP,什么是HTTPS?HTTP和HTTPS都有哪些区别?
网络协议·http·https