标签:ip-neighbour

udp发送ip端口发送不可达

众所周知,udp是无连接的,所以忽略udp接收方状态,是否监听对应udp端口以及ip是否存在,直接向udp发送数据,会发生什么?

为了搞清楚这个问题,我们尝试在局域网建立收发设备,然后抓包分析。

从抓包来看,udp数据正常发出。对端设备回复icmp指示端口不可达。

当我们把接收端设备关机,此时udp数据正常发出,直到arp连续三次请求失败。此时抓包显示udp包已经不发送了。

此时,我们跟踪sytem call 确定,发用户空间的sendto 接口仍然显示成功。

此时通过查看arp缓存确定ip状态已经标记为INCOMPLETE。

尝试手动更新arp缓存的mac地址和状态到REACHABLE。

此时udp又重新发了出来。

值得一提的是,在路由器查看arp缓存,发现不管设备断开多久,状态都不会变更为INCOMPLETE而始终是STALE。