sendarp.c解析ip冲突解决办法
时间:2010-11-26 来源:秩名
ip冲突是个很基本,也很不应该犯的错误,我来到这个公司3年来,只遇到过2次,但这两次都很致命,都是在很关键的产品上出了问题,如果您也想仔细了解哦arp相关的更深层次的知识,我愿意把我们研究的结果共享出来。
研究了一下arping命令的工作机制和原理,并详细的查看了arping命令的源码。
列出几个我们在检查ip地址冲突时候比较有用的参数:
arping [ -AbDfhqUV] [ -c count] [ -w deadline] [ -s source] -I interface destination
# 注释 :arping 是用于发送 ARP 请求到一个相邻主机的工具
-b # 注释 :-b 用于发送以太网广播帧(FFFFFFFFFFFF) 。arping 一开始使用广播地址,在收到响应后就使用 unicast 地址。
-c count # 注释 :-c 表示发送指定数量的 ARP 请求数据包后就停止。
-I interface # 注释 :-I 指定用那个接口来发送 ARP 请求包。这个选项是必须的。
-s source # 注释 :-s 设定 arping 发送的 arp 数据包中的 SPA 字段的值。如果为空,则按下面处理
# -)1、如果是 DAD 模式(冲突地址探测),则设置为 0.0.0.0
# -)2、如果是 Unsolicited ARP 模式(Gratutious ARP)则设置为目标地址
# -)3、否则从路由表得出
-U # 注释:-U 就是启用 Gratutious 模式,它用于更新别的主机上的 ARP 表中本地主机的条目。不需要响应。
arping命令中发送arp packets时候,是往FF:FF:FF:FF:FF:FF这个以太网内的广播地址发送,包括发送arping命令的本机也会收到这个arp packets(但是本机收到之后不会Reply任何信息)。比如当我们在192.168.10.138上执行下面的命令时:
arping 192.168.10.139
会默认使用eth0,向局域网内所有的主机发送一个:who-has 192.168.10.139的arp request,tell 192.168.10.138 your mac address,类似这样:
"我是主机192.168.10.138 , mac是xxxxxxxxxxx ,ip为192.168.10.139的主机请告之你的mac"
ip为192.168.10.139的主机响应这个广播,应答ARP广播为:"我是192.168.10.139,我的mac为xxxxxxxxxx2",此应答只发回给192.168.10.138而不是广播,收到之后,192.168.10.138主机刷新自己的ARP缓存。
标签分类: