美文网首页
同网段和不同网段的ARP协议

同网段和不同网段的ARP协议

作者: Rotonnn | 来源:发表于2019-06-03 19:54 被阅读0次

前段时间面试的时候被问到了,面试官说答得不够细,所以再回来抠一下。

ARP协议本人

ARP Request报文

ARP协议是数据链路层协议,编号0x0806,有 ARP Request 和 ARP Reply 报文,能够通过设备的IP地址查询其 MAC地址。

ARP 报文用以太网帧承载。
首部内容是:

<硬件类型,协议类型,硬件地址,协议长度>

负载是:

<源MAC,源IP,目的MAC,目的IP>

ARP查询

同网段查询

  1. 主机A希望向主机B发送IP报文。先根据主机B的IP,检查自己的ARP 表中是否有主机B的MAC,有就将IP与MAC地址填入IP报文头直接发送;
  2. 若没有,则缓存IP报文并广播发送 ARP Request 报文;
  3. 收到 ARP Request 报文的主机检查自己是否为目的主机,若不是则忽略该报文;
  4. 如果发现自己是目的主机,将 ARP Request 报文中主机A的IP地址和MAC地址存入自己的ARP表中,同时主机B以单播方式向主机A回应一个ARP Reply 报文;
  5. 最后主机A将根据ARP Reply得到主机B的MAC地址。它将主机B的<IP地址,MAC地址>存入自己的ARP表并将这两个字段填入IP报文头并发送。

不同网段查询

  1. 主机A希望向主机B发送IP报文。先向ARP查询主机B的IP地址,ARP根据掩码发现自己与目的IP不在同一个网段,此时ARP将查询网关(默认路由)的MAC地址,如果连网关的MAC地址都没有的话则对网关地址再进行同网段ARP查询,查询后将<网关IP,网关MAC>和<主机B IP,网关MAC>两项放入ARP表中;
  2. 主机A将IP报文发往网关。此时:目的IP=主机B,目的MAC=网关,源IP和源MAC=主机A;
  3. 网关收到IP报文后发现目的IP根本不是他,于是网关一方面将主机A的IP与MAC地址放入ARP表,另一方面去自己的ARP表中查找目的IP的MAC地址,如果没有的话在主机B所在的网段进行同网段ARP查询,查询后将主机B的IP与MAC地址放入自己的ARP表;
  4. 网关向主机B发送IP数据报。此时:目的IP=主机B,目的MAC=主机B,源IP=主机A,源MAC=网关;
  5. 最后主机B收到IP数据报并将<主机A的IP,网关的MAC>放进自己的ARP表中。

一点补充

1.上文中不同网段查询是配置了缺省网关的情况。如果主机A没有配置缺省网关,还需要在网关上开始 ARP Proxy 功能才能实现跨网段ARP 查询。(不然网关会把IP数据报丢掉

2.关于ARP Request报文:帧头与ARP头中,源MAC地址都是发送者的MAC地址。而帧头中的目的MAC地址是:ff-ff-ff-ff-ff-ff,表广播;ARP头中目的地址是:00-00-00-00-00-00,表未知

相关文章

网友评论

      本文标题:同网段和不同网段的ARP协议

      本文链接:https://www.haomeiwen.com/subject/tcroaqtx.html