对于以太网,数据链路层上是根据48bit的以太网地址来肯定目的接口,设备驱动程序从不检查IP数据报中的目的IP地址。ARP协议为IP地址到对应的硬件地址之间提供动态映射。缓存
在以太网(ARP协议只适用于局域网)中,若是本地主机想要向某一个IP地址的主机(路由表中的下一跳路由器或者直连的主机,注意此处IP地址不必定是IP数据报中的目的IP)发包,可是并不知道其硬件地址,此时利用ARP协议提供的机制来获取硬件地址,具体过程以下:服务器
1) 本地主机在局域网中广播ARP请求,ARP请求数据帧中包含目的主机的IP地址。意思是“若是你是这个IP地址的拥有者,请回答你的硬件地址”。网络
2) 目的主机的ARP层解析这份广播报文,识别出是询问其硬件地址。因而发送ARP应答包,里面包含IP地址及其对应的硬件地址。工具
3) 本地主机收到ARP应答后,知道了目的地址的硬件地址,以后的数据报就能够传送了。spa
点对点链路不使用ARP协议。代理
APR请求包是广播的,可是ARP应答帧是单播的。blog
以太网数据报最小长度是60字节(14字节的以太网头,不包含4字节的FCS),ARP数据包长度为42字节(14字节的以太网头和28字节的ARP数据),须要加入填充字符到以太网最小长度要求:60字节。接口
每一个主机都有一个ARP高速缓存表,这样避免每次发包时都须要发送ARP请求来获取硬件地址。默认老化时间是20分钟。利用arp -a命令能够查看显示系统中高速缓存的内容。路由
Windows下“arp -d”命令能够清除arp高速缓存表。it
有时候须要手动清除arp缓存,曾经就是由于arp缓存没有作清理,致使迷惑了好久。遇到的问题:
1) 制做了一个写路由器MAC地址的工具,每次写完MAC地址,重启路由器,会发现没法telnet登录路由器。IP地址没变,可是MAC地址更改了,而ARP缓存表中IP地址映射的仍然是旧的MAC地址。
2) 相似的问题,有两个路由器具备相同的IP地址。先链接一个路由器,登录成功后,再去链接另外一台路由器,却发现登录不了。
若是ARP请求时从一个网络的主机发往另外一个网络上的主机,那么链接这两个网络的路由器能够回答该请求,这个过程称做委托ARP或者ARP代理。这样能够欺骗发起ARP请求的发送端,使它误觉得路由器就是目的主机。
将局域网中某个主机的物理地址转换为IP地址,好比局域网中有一台主机只知道物理地址而不知道IP地址,那么能够经过RARP协议发出征求自身IP地址的广播请求,而后由RARP服务器负责回答。RARP协议普遍应用于无盘工做站引导时获取IP地址。
RARP容许局域网的物理机器从网管服务器ARP表或者缓存上请求其IP地址。
帧格式同ARP协议,帧类型字段和操做类型不一样,具体见ARP帧格式描述。
1. 主机发送一个本地的RARP广播,在此广播包中,声明本身的MAC地址而且请求任何收到此请求的RARP服务器分配一个IP地址。
2. 本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址。
3. 若是存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用。
4. 若是不存在,RARP服务器对此不作任何的响应。
5. 源主机收到从RARP服务器的响应信息,就利用获得的IP地址进行通信;若是一直没有收到RARP服务器的响应信息,表示初始化失败。