ARP协议总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dream_1996/article/details/78926710

IP地址

作用在网络层及上层使用,是一种逻辑地址

MAC地址

作用在链路层和物理层,网络传输时的下一跳地址,是硬件地址,固定在网卡上。

ARP的作用

在同一个局域网内,已知一个主机或路由的IP地址,需要根据这个IP地址找出其对应的MAC地址。 



解析出下一跳MAC地址后封住成帧,向下层交付,传输给下一跳节点,格式如下:


为什么不直接用MAC地址进行通信,还需要 用IP逻辑地址进行通信?

因为现实中存在着各式各样的网络,他们都使用不同的硬件地址,并且在一个网络中硬件可能会损坏,需要更换,如果让人工来维护这个网络,那么就太复杂了,因此使用IP协议,然后通过ARP去自动获取响应的MAC地址。

思考:如果源主机和目的主机不在同一网段,ARP请求的广播帧无法穿过路由器,源主机如何与目的主机通信?

假设搜索网络拓扑为主机A-R1-R2-主机B,由主机A发送到主机B,且路由器已经填充正确的路由表,但无ARP表,物理层均为以太网(只有以太网和令牌网有ARP这个概念) 


  • 1、主机A封装报文,发现目的地址与自身不在同一网段,将报文转发给默认网关,查ARP表,无默认网关ARP表项,发送ARP请求默认网关MAC。
  • 2、R1收到ARP请求,根据请求中的源IP和源MAC建立关于主机A的ARP表项。并使用自身MAC地址响应ARP请求。
  • 3、主机A收到ARP响应,建立关于R1的ARP表项,封装报文成帧,目的IP为主机B,目的MAC为R1的MAC地址。
  • 4、R1接收到IP报文,查路由表,发现须经R2转发,查ARP表,无R2表项。发送ARP请求R2的MAC地址,同时将主机A的IP报文丢弃。
  • 5、R2收到ARP请求,根据请求中的源IP和源MAC建立关于R1的ARP表项。并使用自身MAC地址响应ARP请求。
  • 6、R1收到ARP响应,建立关于R2的ARP表项。
  • 7、主机A发现报文超时,重发报文。
  • 8、R1收到报文,发现需经R2转发,查ARP表,存在R2表项,修改IP报文源MAC地址为自身,目的MAC地址为R2,并将报文转发至R2。
  • 9、R2收到报文,查ARP表,无主机B表项。发送ARP请求主机B的MAC地址,同时将主机A的IP报文丢弃。
  • 10、主机B收到ARP请求,根据请求中的源IP和源MAC建立关于R2的ARP表项。并使用自身MAC地址响应ARP请求。
  • 11、R2收到ARP响应,建立关于主机B的ARP表项。(到这一步,所有设备的ARP表项已经建立完成了)
  • 12、主机A发现报文超时,重发报文。
  • 13、R1收到报文,发现需经R2转发,查ARP表,存在R2表项,修改IP报文源MAC地址为自身,目的MAC地址为R2,并将报文转发至R2。
  • 14、R2收到报文,查ARP表,存在主机B表项,修改IP报文源MAC地址为自身,目的MAC地址为主机B,并将报文转发至主机B。

思考:路由表里可以找到下一跳路由IP,但是IP数据报的首部中并没有字段是用来放下一跳路由的IP地址的,那么数据报是如何从一个路由发送到下一跳路由器的?

是因为通过路由表获得下一跳IP后,不是把这个IP填入IP数据报,而是通过ARP把下一跳IP转化成MAC地址,把这个MAC地址填入MAC帧首部,这样就可以根据这个MAC地址找到下一跳路由器了。

猜你喜欢

转载自blog.csdn.net/dream_1996/article/details/78926710