问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

lwip ip地址冲突怎么解决

发布网友 发布时间:2022-04-20 06:28

我来回答

2个回答

热心网友 时间:2023-09-09 14:10

LWIP是个轻量级的TCP/IP协议栈,之所以说轻量级,是因为作者将主体功能浓缩起来,做成这相对简单的协议栈,主要针对于ROM/RAM极缺极珍贵的环境下使用。
正是因为轻量、简单,所以平时很多理所当然的东西,大家都会觉得在这上面也能实现,实则不然,用过LWIP的人就会感觉到。
假如一种情况,你设置的IP/MAC与网络中其它设备冲突,这时既检测不到,更查不出是何原因,总是链接会无缘无故地断。
在这里,针对冲突这问题,提出一种解决方法,欢迎切磋纠正。
首先,需要了解一下,什么是Gratuitous ARP。有兴趣的可以百度一下,这里我就总结一下。当设备接入网络时,需要先发一个信息询问一下其它设备,“我发的这个IP,谁有?”。如果网络中存在这个IP,则会回复;
正是利用Gratuitous ARP这个东西,对其回复进行判断,如果接收到的响应或者回复,存在IP与设备自身相同,则标记为IP冲突。MAC冲突同理。
在LWIP中,对以下地方进行改进,则可实现MAC和IP冲突的检测。下面贴出主要部分代码。
etharp_arp_input(struct netif *netif, struct eth_addr *ethaddr, struct pbuf *p){
...
case PP_HTONS(ARP_REQUEST):
if(ip_addr_cmp(&sipaddr, &(netif->ip_addr))){
etharpError |= DUPLICATE_IP;
}
if((hdr->shwaddr.addr[0] == netif->hwaddr[0])&&
(hdr->shwaddr.addr[1] == netif->hwaddr[1])&&
(hdr->shwaddr.addr[2] == netif->hwaddr[2])&&
(hdr->shwaddr.addr[3] == netif->hwaddr[3])&&
(hdr->shwaddr.addr[4] == netif->hwaddr[4])&&
(hdr->shwaddr.addr[5] == netif->hwaddr[5])){
etharpError |= DUPLICATE_MAC;
}
...
case PP_HTONS(ARP_REPLY):
if(ip_addr_cmp(&sipaddr, &(netif->ip_addr))){
etharpError |= DUPLICATE_IP;
}
if((hdr->shwaddr.addr[0] == netif->hwaddr[0])&&
(hdr->shwaddr.addr[1] == netif->hwaddr[1])&&
(hdr->shwaddr.addr[2] == netif->hwaddr[2])&&
(hdr->shwaddr.addr[3] == netif->hwaddr[3])&&
(hdr->shwaddr.addr[4] == netif->hwaddr[4])&&
(hdr->shwaddr.addr[5] == netif->hwaddr[5])){
etharpError |= DUPLICATE_MAC;
}
...

在其它使用的地方只需判断etharpError 这个变量即可知道是否有冲突。因为Gratuitous ARP是机子一接入网络后初始化时发出的,所以可以不用担心是否在判断变量时还没检测到冲突。

热心网友 时间:2023-09-09 14:11

设置下.
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 请教lwip高手,如何解决lwip内存溢出问题 lwip 如何建立多个连接 lwip学习 移植lwip是怎么一回事,现在完全不明白老师交给我... stm32+lwip,把网页转换为二进制数组之后,可以直... modbus tcp需要lwip 协议么 lwip udp 链接一段时间后断网 lwIP求助,关于socket编写TCP服务器的问题 STM32 LWIP连续发送问题请教。 stm32+lwip作为MCU与tcp/ip协议栈,其为一般TCP客... 在lwip中能不能创建多个tcpip lwip 怎样设置tcp服务器只能连接一个客户端 LWIP如何建立多个TCP连接 LWIP tcp_write疑问 lwip tcp连接,长时间没有数据,会断掉吗 lwip tcp 任务中断后 怎么删去控制块 LWIP如何实现TCP 长连接? 怎么提高lwip的TCP传输速度很慢 请教lwip问题,tcp 三星s8烧屏烧的屏幕的哪部分? unity和虚幻4对电脑要求哪个高 用虚幻4做游戏,需要怎样的电脑配置呢? 七十多岁的齐白石,为何还会画出栩栩如生的昆虫? 为啥齐白石就画了一只蝉,会有人出到上亿的高价呢? 齐白石就画了一只蝉,为啥会有人出上亿高价呢? 齐白石的画真的名副其实吗? 齐白石的画的作品名称有哪些?? 《草虫的村落》的作者资料 齐白石 的草虫 画价值多少 齐白石画草虫[与佛有缘] 齐白石擅长画什么??? 草虫画日趋成熟,风格鲜明,耀人眼目的齐白石,是什... 齐白石最擅长画什么 著名的绘画大师齐白石是擅长于画什么而闻名 齐白石擅长画什么 齐白石作品 齐白石的画有哪些?有值亿元的! 齐白石的工笔草虫一般画在生宣还是熟宣上? 大画家张大千齐白石,为何也会请人“代笔”呢? 齐白石的草虫是画在什么物体上的