Lwip之IP/MAC地址冲突检测

本文介绍了如何在LWIP轻量级TCP/IP协议栈中解决IP和MAC地址冲突的问题。通过利用Gratuitous ARP,设备在接入网络时检查IP和MAC是否已存在于网络中,若有相同,则标记为冲突。通过修改`etharp_arp_input`函数,当接收到ARP请求或回复时,对比设备的IP和MAC地址,若发现匹配则记录冲突。通过检查变量`etharpError`可以得知是否存在冲突。

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

        LWIP是个轻量级的TCP/IP协议栈,之所以说轻量级,是因为作者将主体功能浓缩起来,做成这相对简单的协议栈,主要针对于ROM/RAM极缺极珍贵的环境下使用。

        正是因为轻量、简单,所以平时很多理所当然的东西,大家都会觉得在这上面也能实现,实则不然,用过LWIP的人就会感觉到。

        假如一种情况,你设置的IP/MAC与网络中其它设备冲突,这时既检测不到,更查不出是何原因,总是链接会无缘无故地断。

        在这里,针对冲突这问题,提出一种解决方法,欢迎切磋纠正。

        首先,需要了解一下,什么是Gratuitous ARP。有兴趣的可以百度一下,这里我就总结一下。当设备接入网络时,需要先发一个信息询问一下其它设备,“我发的这个IP,谁有?”。如果网络中存在这个IP,则会回复;

正是利用Gratuitous ARP这个东西,对其回复进行判断,如果接收到的响应或者回复,存在IP与设备自身相同,则标记为IP冲突。MAC冲突同理。

        在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值