经过多次的失败,得出的一点点总结,有需要的朋友可作个参考,也欢迎指正本人的错误。(每个结论都已经验证过!)
收到ARP请求后,更新ARP缓存表和应答的条件:
1,收到一个请求包,若目的mac是硬件广播地址,且目的IP是本机IP,即请求本机mac,则查看ARP缓存表是否有源主机IP与源主机mac
地址的对应条目,若有且与收到的不一致则更新,若无,则添加,最后构造一个针对请求主机的ARP单播应答包。
2, 收到一个请求包,若目的mac是硬件广播地址,但目的IP不是本机IP,即不是请求本机mac,那么忽略该请求。
(注:实验表明:目的mac是本机网卡mac,且目的IP是本机IP,主机也会作出应答。分析:收到的这个请求包可能发生了错误,因为既然知道了目的主机mac就无需再请求了,但也不排除是其他协议在检测网络状态)。
(结论:只有目的MAC是硬件广播地址,且目的IP是本机IP,才对条目进行添加或者更新,并回复应答包。)
收到ARP应答后,更新缓存表的条件:
1,接收到一个应答包,若目的mac是自己,且目的IP也是自己,若缓存表中已经存在对应的项,则更新该项。若缓存中没有,则忽略。
2,接收到一个应答包,若目的mac是自己,但目的IP不是自己,若缓存表中已经存在对应的项,则更新该项。若缓存中没有,则忽略。
3,接收到一个应到包,若目的mac为广播地址,无论IP是不是自己,处理方式与(1,2)相同。
4,接收到一个应答包,若目的mac不是本机mac也不是硬件广播地址,则ARP协议软件忽略该包。
(结论,若收到的应答包,目的mac地址是硬件广播地址或是者本机网卡地址,无论目的IP是不是本机网卡IP,只要缓存表中已经存在对应的ARP条目,且与收到的应答条目不一致,那么就要更新该条目。若缓存表中没有存在该条目,那么则忽略该应答。
推荐阅读
- Linux|Linux--网络基础
- 工具|Wireshark抓包对其字TCP段理解
- 面试|【全网最全】计算机网络笔试面试(八股文)
- 网络|《TCP-IP协议族》(第4版)PDF高清电子版——网盘下载
- TCP/IP|TCP/IP 四层模型
- TCP/IP协议簇
- TCP|TCP/UDP协议
- Linux|利用tcpip堆栈处理不同判断远程操作系统. ..
- TCP|Android上TCP通信实现