前言:想要做的功能是在Android某个应用中加入arp,使Android手机和指定MAC的设备进行Socket连接前,能够向路由请求获得该MAC对应IP,前提是手机和设备在同一局域网下。写一篇非常详细的学习Android平台上的ARP的博客吧。
一、关于ARP
1. ARP概述
把百度百科_ARP,维基百科_ARP都读了一下,感觉还是Wikipedia介绍的更细致深刻
Address Resolution Protocol
Address Resultion Protocol (ARP)是一个通信协议,用于将网络层地址(如一个IPv4地址)转换成数据链路层物理地址例如以太网地址(也被称作MAC地址)。
在Internet Protocol Version 6(IPv6)中,ARP功能由Neighbor Discovery Protocol(NDP)取代
Wikipedia还给出了ARP在网络OSI模型中的位置,更便于理解,如图:
2. ARP过程
ARP是如何执行这个转换的呢?举个栗子:
同一局域网很多主机,主机0想要知道主机1的MAC,就会在局域网内发一个广播:“我是IP-0,MAC-0;我想知道IP-1的MAC是多少?”所有收到这个广播的主机都会进行判断,如果自己不是IP-1,就丢弃该广播;主机1则会回复主机0:“主机0,我是IP-1,我的MAC是MAC-1!”收到回复后的主机0,更新了自己的本地ARP缓存表。主机1的MAC一旦确定,主机0就可以向主机1发送IP通信了。