arp查询mac地址中ip从哪里获取?

假设pcA和pcB通讯 我们知道apr根据ip(B的ip)能获取mac(B的mac),在广域网中ip从dns获取,那么在局域网中ip(B的ip)从哪里…
关注者
28
被浏览
32,023

12 个回答

“前文讲过arp缓存表和mac地址表,现在总结下它们的相同和不同

不同

定义

  • arp缓存表是主机用来缓存其他主机的ip地址和mac地址的映射关系的表
  • mac地址表是交换机用来缓存连接在各端口的主机的源mac地址和端口号的映射关系的表

作用

  • arp缓存表是数据包在二层封装时需要目的mac地址时查找的表
  • mac地址表是数据帧经过交换机时需要转发到对应端口时查找的表

存入方式

  • arp缓存表是主机接收arp请求报文或arp响应报文时存入senderIP和senderMAC
  • mac地址表是交换机端口接收到任意数据帧时存入源mac地址和端口号

溢出

  • arp缓存表溢出时会依次往前推,把第一个存入的删除,最新的存在最后
  • mac地址表溢出时不会存入

其他

  • arp缓存表不能存自己的ip地址
  • mac地址表不能存广播mac地址ff:ff:ff:ff:ff:ff

相同

定时器

它们存入的条目或项都有独立的定时器

老化

它们存入的条目或项的定时器归零时都会被删除

更新

它们存入时如果有匹配项会更新且重启定时器


题主可能没有对ARP协议的交互原理有深入的理解,才出现了这个问题:

知道arp根据ip(B的ip)能获取mac(B的mac),那么在局域网中ip(B的ip)从哪里获取呢,获取B的ip协议是什么呢?

这个问题其实是一个伪问题,因为A问B的ARP过程中,A和B最终都拿到了对方的IP和MAC信息。为了方便你的理解,这里我们通过图解的方式来进行==>

在这个拓扑里面,PC1和PC2处在同一个局域网里面,PC1要与PC2通信,则需要发起ARP广博请求:

根据上图我们看到,PC1发送的请求广播包同时被其他主机收到,然后PC3和PC4收到之后(发现不是问自己)则丢弃。 而PC2收到之后,根据请求包里面的信息(有自己的IP地址),判断是给自己的,所以不会做丢弃动作,而是返回ARP回应包。


那么,ARP回应包是如何处理的?这里需要特别关注ARP请求包的内容,在上面的图解里面,ARP请求包的完整信息是: 我的IP地址是IP1,MAC地址是MAC1,请问谁是PC2,你的IP2对应的MAC地址是多少?

简单来说, ARP请求首先有"自我介绍",然后才是询问 。这样的话,PC2在收到请求之后,就可以将PC1的IP和MAC映射信息存储在本地的【ARP缓存表】,既然知道PC1在哪里,就可以返回ARP单播回应包

这张图我们需要得到两个信息:

①被询问者PC2提前生成了ARP映射信息,然后才是询问者PC1;

②询问者和发送者最终的ARP表里面都有各自的IP和MAC地址信息。


【相关推荐】

图解ARP协议(一)

《TCP/IP协议栈视频教程》

新浪微博: @拼客学院陈鑫杰

微信公众号:拼客院长陈鑫杰

拼客学院: pinginglab.net