同一子网通信

发布于:2025-03-17 ⋅ 阅读:(15) ⋅ 点赞:(0)

添加交换机后的通信流程


1. 同一子网内(使用交换机)
  1. 判断是否在同一子网
    主机A通过子网掩码判断主机B的IP地址是否属于同一子网。若在同一子网,主机A需要通过ARP获取主机B的MAC地址。

  2. ARP请求(广播)

    • 主机A发送广播ARP请求,内容为:“谁的IP地址是主机B的IP地址?请告诉我你的MAC地址。”
    • 该广播帧的目的MAC地址为FF-FF-FF-FF-FF-FF,交换机收到后会将广播帧转发到所有端口(除源端口外)。
  3. ARP响应(单播)

    • 主机B收到ARP请求后,回复单播ARP响应,内容为:“我是主机B,我的MAC地址是XX:XX:XX:XX:XX:XX。”
    • 交换机根据主机B的MAC地址和端口映射关系,将ARP响应帧转发到主机A的端口。
  4. 数据传输(单播)

    • 主机A获取主机B的MAC地址后,构造数据帧:
      • 源MAC地址:主机A的MAC地址
      • 目的MAC地址:主机B的MAC地址
    • 交换机根据MAC地址表,将数据帧从主机A的端口转发到主机B的端口。

2. 跨子网内(使用交换机和路由器)
  1. 判断目标是否在同一子网
    • 主机A通过子网掩码计算主机B的IP地址网络号,发现主机B位于不同子网。
    • 公式

网络地址=IP地址 & 子网掩码

  1. 发送数据到默认网关

    • 主机A将数据包发送到默认网关(路由器或三层交换机)。
    • 链路层封装
      • 源MAC:主机A的MAC地址
      • 目的MAC:默认网关的MAC地址(通过ARP解析获取)。
    • IP层封装
      • 源IP:主机A的IP地址
      • 目的IP:主机B的IP地址
  2. 交换机转发数据帧

    • 交换机根据MAC地址表,将数据帧从主机A的端口转发到路由器的端口。
  3. 路由器处理数据包

    • 路由器接收数据帧后,剥离链路层头部,检查目标IP地址。
    • 根据路由表确定下一跳(可能需多级路由):
      • 若目标子网直连路由器,直接转发到对应接口。
      • 若需经过其他路由器,转发至下一跳地址。
  4. ARP解析下一跳MAC地址

    • 路由器通过ARP请求解析下一跳接口或目标主机的MAC地址。
    • 示例
      • 路由器接口IP:10.0.0.1 → 目的子网:192.168.2.0/24
      • 路由器发送ARP请求解析主机B的MAC地址(若直连)。
  5. 数据包转发至目标子网

    • 路由器重新封装链路层帧:
      • 源MAC:路由器出接口的MAC地址
      • 目的MAC:主机B的MAC地址(通过ARP解析)。
    • 通过目标子网的交换机将数据帧转发至主机B。
  6. 主机B响应数据

    • 主机B构造响应数据包:
      • 源IP:主机B的IP地址
      • 目的IP:主机A的IP地址
    • 响应数据通过反向路径返回,可能经过不同路由器。
关键点
  • 交换机的作用
    • 在同一子网内,交换机负责转发数据帧(基于MAC地址表)。
    • 在跨子网通信中,交换机将数据帧转发到路由器。
  • 路由器的角色
    • 负责跨子网的数据包转发和路由选择。
    • 逐跳更新链路层MAC地址,IP地址保持不变。

示例数据包变化
跳数 源MAC 目的MAC 源IP 目的IP
主机A → 交换机 AA:AA:AA:AA:AA 00:11:22:33:44:55 192.168.1.10 10.0.0.5
交换机 → 路由器 AA:AA:AA:AA:AA 00:11:22:33:44:55 192.168.1.10 10.0.0.5
路由器 → 主机B 55:44:33:22:11 BB:BB:BB:BB:BB:BB 192.168.1.10 10.0.0.5

请添加图片描述
同一子网内:交换机基于MAC地址表转发数据帧。
跨子网内:交换机将数据帧转发至路由器,路由器逐跳转发至目标子网。