由于 MAC 地址的问题,导致网络不通的原因和分析

文章讲述了开发板网络不通的问题,经过排查发现可能是因为使用了多播地址作为源地址,而多播地址不能作为以太网源地址。最终解决办法是将MAC地址改为普通格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于 MAC 地址的问题,导致网络不通的原因和分析

  • 将现象及原因分析发给大家,供大家参考,以后有类似问题时有个解决问题的参考
  • 开发板网络不通,也抓不到包,折腾了好久,将电脑和开发板用网线直连,结果包能抓到了,网络通了(代码未做修改)
  • 分析原因:最有可能的是以太网的 CRC 32 校验错误,导致交换机将这个包给过滤掉了。(用的是 H3C 的交换机)
  • 接着折腾,查CRC32算法,甚至把数据包抓出来算出 CRC32 校验。所有的结果都证明,板子的 CRC32 校验是正确的。
  • 接着实验分析,不用交换机用网线直连能通,用普通的傻交换机能通,用 H3C 网管型交换机网络不能通。怀疑开发板发出的包是个特殊的包,被交换机给虑掉了。
    看代码中,开发板的 MAC 地址是 E1:E1:E1:E1:E1:E1 ,感觉有些特殊,换掉了,改成 11:22:33:44:55:66 六六大顺。结果还是不通。
  • 继续折腾,实在是看不出问题所在,再次关注到 MAC 地址上来发现 E1:E1:E1:E1:E1:E1 和 11:22:33:44:55:66 都是组播地址,接着查看相关文章,组播地址不能当成以太网的源地址。
  • 接着改,将 MAC 地址改成 00:11:22:33:44:55 结果网络通了。

结果:

MAC[47:0] 共 48 位,从 0 开始数,第 40 位为 1 时是多播地址。就是说,MAC 的最高字节是奇数的话就是多播地址。
比如下面的地址就是多播地址

x1:xx:xx:xx:xx:xx
x3:xx:xx:xx:xx:xx
x5:xx:xx:xx:xx:xx
x7:xx:xx:xx:xx:xx
x9:xx:xx:xx:xx:xx
xb:xx:xx:xx:xx:xx
xd:xx:xx:xx:xx:xx
xf:xx:xx:xx:xx:xx

  • 多播地址只能当目的 MAC 地址,不能当成源 MAC 地址。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老皮芽子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值