MAC地址相同导致的 嵌入式 Linux 经常丢包
在开发工作中遇到过一种情况是,网络经常丢包,ping 是好是坏不通,ssh连接也容易卡顿,卡死。
后来发现是在系统初始化设置IP地址等参数的时候,在同一个网络中的不同设备使用了相同的MAC地址。
导致在小型交换机上面,容易出现 网络这块的功能异常。
原理:
作者:tckidd,https://www.zhihu.com/question/26044501/answer/31940128
局域网中的A和B拥有同一个MAC地址,并配了不同的IP地址。
A要上网然后根据自己的路由表,将路由指向局域网的默认网关,在发送ARP请求后知晓网关的MAC地址,然后网卡将数据包封装成二层以太帧以后发给网关的MAC地址,局域网交换机的MAC地址表项中记录了MAC地址对应A端口。后续处理在此不讨论,基本就是网关恢复成三层后向外转发。此时网关的ARP表项中记录的A IP地址和MAC地址对应。
然后服务器响应了以后,网关收到报文,此时要发送给A IP地址,于是查了一下自己的ARP表,然后在二层将数据包发给这个目标MAC地址。然后局域网交换机根据MAC地址表,将这个数据包发给A端口。
如果出现了B,那么这个时候交换机的MAC地址表会被更新,将MAC地址对应B端口,于是这个目标地址是这个MAC的帧就会发给B端口,而A收不到。
根据这个过程,理论上A和B如果不是频繁发起数据,交换机的MAC表没有不断刷新,那么A和B可以间歇性的各上一会儿网,但是同时是不行的。
如果说我的文章对你有用,只不过是我站在巨人的肩膀上再继续努力罢了。
若在页首无特别声明,本篇文章由 Schips 经过整理后发布。
博客地址:https://www.cnblogs.com/schips/
若在页首无特别声明,本篇文章由 Schips 经过整理后发布。
博客地址:https://www.cnblogs.com/schips/