同一子网通信

添加交换机后的通信流程


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地址表转发数据帧。

跨子网内:交换机将数据帧转发至路由器,路由器逐跳转发至目标子网。

相关推荐
寻星探路13 分钟前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
盟接之桥3 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
会员源码网4 小时前
理财源码开发:单语言深耕还是多语言融合?看完这篇不踩坑
网络·个人开发
米羊1215 小时前
已有安全措施确认(上)
大数据·网络
ManThink Technology6 小时前
如何使用EBHelper 简化EdgeBus的代码编写?
java·前端·网络
珠海西格电力科技6 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
QT.qtqtqtqtqt6 小时前
未授权访问漏洞
网络·安全·web安全
半壶清水7 小时前
[软考网规考点笔记]-软件开发、项目管理与知识产权核心知识与真题解析
网络·笔记·压力测试
JMchen1237 小时前
Android后台服务与网络保活:WorkManager的实战应用
android·java·网络·kotlin·php·android-studio
yuanmenghao7 小时前
Linux 性能实战 | 第 7 篇 CPU 核心负载与调度器概念
linux·网络·性能优化·unix