搜索
bottom↓
回复: 7

如何规避向一个无效IP发送UDP包

[复制链接]

出0入0汤圆

发表于 2016-12-6 10:47:32 | 显示全部楼层 |阅读模式
做了一套设备向目标IP发送UDP包,若是IP无效了则扩散的UDP包可能把网络里所有的设备堵死。本来想用ICMP不可达报文来判断目标IP是否有效,但是发现在正常传输过程中也会收到ICMP不可达报文而且数量还不少,不好用一定时间内收到多少ICMP报文来判定。而且途中若是经过多个交换机,其中有一个坏了板卡也收不到ICMP不可达报文。不知道有没有其他做法来确认目标IP设备是否正常工作,好让我判断是否该发送UDP包。

出0入0汤圆

 楼主| 发表于 2016-12-6 11:02:06 | 显示全部楼层
想着是不是可以定时ping设备来检测IP是否有效,RTT+LWIP ping其他设备有函数可以做么,接收IP的回复是在哪里?

出0入0汤圆

发表于 2016-12-6 11:29:00 | 显示全部楼层
堵死是因为ARP超时后, 需要重新发 ARP请求去询问ip对应的mac, 但一直没回应, 所以所有udp包都处于pending队列等待 arp返回.

之前我试过一个看起来并不好的方法, 改了一下arp层的函数, 判断如果等待超时, 就清空对那个ip发送的所有包, 并且停止对这个ip发送数据.

当然, ping也可以, 但前提是对方的防火墙没有拦截ping包.

不过最直接还是探测 arp 是否能到达.

出0入33汤圆

发表于 2016-12-6 11:32:20 来自手机 | 显示全部楼层
你发的速度有多快?能把其它设备堵死?

出0入0汤圆

 楼主| 发表于 2016-12-6 11:35:06 | 显示全部楼层
kayatsl 发表于 2016-12-6 11:29
堵死是因为ARP超时后, 需要重新发 ARP请求去询问ip对应的mac, 但一直没回应, 所以所有udp包都处于pending队 ...

探测 arp 是否能到达需要怎么操作?抱歉,我对这块不太熟悉……是跟ICMP不可达报文类似的么?

出0入0汤圆

发表于 2016-12-6 11:35:56 来自手机 | 显示全部楼层
应用层应答机制,没响应做相关处理比如降低发送频率

出0入0汤圆

发表于 2016-12-6 11:43:57 | 显示全部楼层
tyj07 发表于 2016-12-6 11:35
探测 arp 是否能到达需要怎么操作?抱歉,我对这块不太熟悉……是跟ICMP不可达报文类似的么? ...

其实并不大建议这么做.  因为这样做会把底层封装好仅内部调用的函数给公开出来.

具体就是跑到最底层去, 用 arp_request() 的接口创建一个对你要发送的ip的 arp请求.

然后去读arp列表是否能收到对应的mac返回.

------------------------------------------------------------------

印象中有个开关去关闭 udp包对 arp请求的发送等待.
关闭后的话, 如果arp不可到达, 包也不会缓冲, 直接丢弃.

不过我也不确定有没有记错, 得找找.

出0入0汤圆

 楼主| 发表于 2016-12-6 11:48:02 | 显示全部楼层
NJ8888 发表于 2016-12-6 11:35
应用层应答机制,没响应做相关处理比如降低发送频率

是想若是无效IP就把发送断掉,关键是怎么检测,现在查到etharp_query函数可以检测,先试试。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 13:30

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表