arp是什么 ,一文告诉你arp的含义

arp是什么 ,一文告诉你arp的含义

  地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址。收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源(来自百度百科)。

  (注意:ARP是以太网技术,其他类型网络可不用ARP)

  上面的ARP介绍对于网络小白来说可能还会有难度,这样比喻吧:你给你的同学寄快递,你知道他的姓名,但你现在还不知道他的地址。你在QQ或者微信群里问:XX你地址是多少?XX就会回复你他的地址是哪。你把他的姓名和地址记录在你的便笺上,等下就根据记录的信息给他寄快递。

  这里的收件人姓名相当于IP地址,收件人地址相当于MAC地址。记录信息的便笺相当于ARP缓存。ARP工作的原理就像这个过程:知道姓名,询问收件地址,根据记录的信息发邮件。很容易理解吧。(只是大致比喻,不要叫真)

  从上面的介绍就已经暴露出了一个很严重的问题,如果我冒充你同学告诉你地址,你会不会把东西寄我这里?这个问题今天先不讨论,下次再说。

  网络拓扑

  如上图所示,3台路由器在一个局域网里,都开启debug arp,此时如果R1给R2发数据包(Ping),我们抓包观察。

  R1的debug信息

  R2的debug信息

  R3的debug信息

  R1上debug显示,自己发送的源IP是1.1.1.1,MAC是cc01.227c.0000,目的IP是1.1.1.2,但目是0000.0000.0000。之后收到回复:回复的源IP是1.1.1.2,MAC地址是cc02.02ec.0000。此时在R1上查看ARP缓存:

  R1的ARP缓存

  R2上debug显示为收到请求并做出回复。R3上debug显示仅仅收到请求,未作出任何回复。

  再来观察wireshark抓包情况:直接在Filter中输入arp,因为我们只关注arp协议的包:

  抓包

  上图显示了arp请求使用了广播发送,问谁有1.1.1.2的mac地址,告诉我(1.1.1.1),1.1.1.2则使用了单播进行回复。

  展开看:

  ARP广播请求

  ARP单播应答

推荐阅读