问题:由于我这边需要让linux系统学习到arp表项,所以想着通过代码直接发送arp请求(利用原始套接字),其他设备回复arp报文之后,我以为linux就会记录到arp表项,现象是arp表项并没有;
解决方式:当时理解不通,于是想着ping命令可以直接学习到,所以查看ping命令的源码,发现ping的时候并不是先发送arp请求然后再发送icmp请求这样,在代码中并不需要这样一套机制来做这个事情;而是通过代码直接发送icmp报文,发送icmp报文如果发现没有arp信息的时候系统会自己发送arp请求,通过这样的方式linux系统才能学到arp表项也就是arp -a才有ping的表项;