第7篇:同一 VLAN 内两台 PC 如何通信

关键词:VLAN 同一VLAN通信 以太网帧 交换机转发 MAC地址 ARP 二层通信


一、引言

理解了 ARP 和 MAC 地址表后,我们就可以回答网络入门的一个经典问题:同一 VLAN 内的两台 PC 是如何通信的?

这看似简单,但完整的数据流涉及:IP 层的路由判断、ARP 解析、以太网帧封装、交换机的 MAC 学习和转发等多个环节。理清这个过程,是你从"会配置"到"懂原理"的关键一步。

一个真实的案例:某网络管理员将两台 PC 划入了 VLAN 10,IP 配置为 192.168.10.10/24 和 192.168.10.20/24。两台 PC 互相 Ping 不通。经过排查,发现接入交换机的端口虽然加入了 VLAN 10,但端口类型配置错误——一个是 Access 端口,另一个是 Hybrid 端口且未允许 VLAN 10 通过。

本文从完整的数据流角度,还原同一 VLAN 内两台 PC 的通信全过程。

二、前提条件

两台 PC 要实现同一 VLAN 内通信,必须满足以下前提:

条件 说明 验证方法
同一 VLAN 两台 PC 连接在交换机的端口属于同一 VLAN display port vlan
同一子网 IP 地址和子网掩码计算后网络地址相同 ipconfig / ip addr
物理链路正常 网线连通、端口 UP display interface brief
无 ACL 拦截 交换机端口或 VLAN 层面无访问控制阻止 display current-configuration

三、通信完整流程

3.1 场景设定

设备 IP 地址 子网掩码 MAC 地址 VLAN
PC_A 192.168.10.10 255.255.255.0 AA:AA:AA:AA:AA:01 VLAN 10
PC_B 192.168.10.20 255.255.255.0 BB:BB:BB:BB:BB:01 VLAN 10
交换机 - - - S5720-28C-EI

PC_A 连接交换机 GE0/0/1(Access,VLAN 10),PC_B 连接 GE0/0/2(Access,VLAN 10)。

3.2 通信六步详解

第一步:IP 层判断目的地址

PC_A 的应用层发起通信(如 Ping 192.168.10.20)。PC_A 的 IP 层执行判断: - 目的 IP 与掩码 AND:192.168.10.20 & 255.255.255.0 = 192.168.10.0 - 本机 IP 与掩码 AND:192.168.10.10 & 255.255.255.0 = 192.168.10.0 - 结论:目的 IP 与本机在同一子网,数据直接发往目标,不经过网关

第二步:ARP 解析目的 MAC

PC_A 查找本地 ARP 缓存中 192.168.10.20 的 MAC 地址。首次通信无缓存,发送 ARP Request 广播:"Who has 192.168.10.20? Tell 192.168.10.10"。交换机在 VLAN 10 内泛洪,PC_B 收到后匹配自己的 IP,回复 ARP Reply 单播:"192.168.10.20 is at BB:BB:BB:BB:BB:01"。PC_A 缓存该映射。

第三步:封装以太网帧

PC_A 构造以太网帧: - 目的 MAC:BB:BB:BB:BB:BB:01(从 ARP 获取) - 源 MAC:AA:AA:AA:AA:AA:01 - 类型:0x0800(IPv4) - 载荷:IP 包(源 192.168.10.10 → 目的 192.168.10.20)

第四步:交换机学习源 MAC

交换机 GE0/0/1 收到帧后,提取源 MAC(AA:AA:AA:AA:AA:01),记录到 VLAN 10 的 MAC 地址表:AA:AA:AA:AA:AA:01 → GE0/0/1。

第五步:交换机查表转发目的 MAC

交换机查找目的 MAC(BB:BB:BB:BB:BB:01): - 若已学习:精确转发到对应端口(如 GE0/0/2) - 若未学习:在 VLAN 10 内泛洪(首次通信时必然泛洪)

第六步:PC_B 接收与解封装

PC_B 收到帧,检查目的 MAC 匹配自己 → 接收 → 剥离以太网头 → 将 IP 包递交给 IP 层处理。

3.3 通信时序图

通信时序图 - 图示

四、关键知识点总结

4.1 数据帧中的地址变化

同一 VLAN 内通信的整个往返过程中,IP 地址和 MAC 地址的变化如下:

阶段 源 MAC 目的 MAC 源 IP 目的 IP
PC_A → PC_B(去程) AA:AA:AA:AA:AA:01 BB:BB:BB:BB:BB:01 192.168.10.10 192.168.10.20
PC_B → PC_A(回程) BB:BB:BB:BB:BB:01 AA:AA:AA:AA:AA:01 192.168.10.20 192.168.10.10

关键:同一 VLAN 内通信,源/目的 IP 和源/目的 MAC 在往返过程中均保持不变(源和目的互换),中间设备(交换机)不修改任何地址。

4.2 交换机的角色

交换机在此通信中充当纯转发设备: - 不修改数据帧内容(不改 IP、不改 MAC) - 只负责根据目的 MAC 决定从哪个端口发出 - 通过学习源 MAC 不断更新自己的 MAC 地址表

4.3 首次通信的特殊性

首次通信时,由于交换机 MAC 表中没有目的 MAC 的记录,交换机必须泛洪。这意味着: - 同一 VLAN 内的所有端口都会收到这个帧 - 其他 PC 的网卡会收到帧但因目的 MAC 不匹配而丢弃 - 这是正常的"学习过程",不影响安全性(数据载荷其他 PC 无法读取)

五、常见故障排查

5.1 同 VLAN 但 Ping 不通:排查清单

排查项 检查命令 说明
端口 VLAN 成员 display port vlan 确认两端端口在同一 VLAN
端口类型 display current-configuration interface GE0/0/1 Access/Hybrid/Trunk 配置正确
端口 UP 状态 display interface brief 端口物理和协议状态均 UP
IP 配置 PC 端 ipconfig IP 和掩码正确、同一子网
ARP 缓存 PC 端 arp -a 目标 IP 有 MAC 映射
MAC 地址表 display mac-address 交换机学习到两端 MAC
STP 阻塞 display stp brief 端口未被 STP 阻塞
端口安全 display mac-limit statistics 端口未被 MAC 超限关闭

5.2 故障案例:端口类型不匹配

现象:PC_A(Access VLAN 10)与 PC_B(Hybrid 端口)互相 Ping 不通。

根因:Hybrid 端口 GE0/0/2 未配置 port hybrid vlan 10 untagged,导致 VLAN 10 的帧从该端口发出时携带 VLAN Tag,PC_B 的普通网卡无法识别带 Tag 的帧。

解决:

# 修正 Hybrid 端口配置
[HUAWEI] interface GigabitEthernet 0/0/2
[HUAWEI-GigabitEthernet0/0/2] port link-type hybrid
[HUAWEI-GigabitEthernet0/0/2] port hybrid vlan 10 untagged

六、总结

阶段 执行者 动作 结果
IP 判断 PC_A IP 层 子网掩码比对 确认同子网,不经过网关
ARP 解析 PC_A + PC_B 广播请求 + 单播应答 获取目的 MAC
帧封装 PC_A 网卡 填充 MAC 头和 IP 包 构造完整以太网帧
MAC 学习 交换机 记录源 MAC 与端口映射 更新 MAC 地址表
帧转发 交换机 查目的 MAC 决定出端口 精确转发或泛洪
帧接收 PC_B 网卡 匹配目的 MAC 并解封装 递交 IP 层处理

核心要点: 1. 同一 VLAN 通信不经过网关,所有转发由二层交换机完成 2. IP 地址保持不变,MAC 地址在往返过程中源目的互换 3. 首次通信必泛洪(交换机未学习目的 MAC),后续精确转发 4. 交换机不改帧内容,只负责"查表选端口" 5. 同 VLAN 通信故障优先查 VLAN 成员、端口类型和端口状态

思考题

  1. 同一 VLAN 内的两台 PC 通信,如果中间经过了两台级联的交换机,通信过程与经过一台交换机有何不同?
  2. 为什么同一 VLAN 内通信不需要网关?如果 PC 误配了网关会影响同 VLAN 通信吗?
  3. 同一 VLAN 内有 100 台 PC,PC_A 首次 Ping PC_B 时,泛洪的帧会被所有 100 台 PC 的网卡收到吗?其他 PC 会处理这个帧吗?

下篇预告

同一 VLAN 内的通信已经清晰了,但如果 PC_A 在 VLAN 10,PC_B 在 VLAN 20,它们之间还能通信吗?VLAN 隔离了广播域,那跨 VLAN 通信需要什么机制?下一篇文章《跨 VLAN 通信为什么要三层接口》将揭示答案。