ARP详解

ARP简介

IP地址只是一个逻辑地址,要想在链路层上传播数据,需要知道MAC物理地址。而IP数据包中只有IP地址,所以就需要一个协议来通过IP地址来获取对应的MAC地址,这个协议就是ARP协议。

ARP原理

ARP报文解析

1、 ARP是工作在链路层的,ARP请求发送一个帧。
帧分为两部分:帧头部、ARP请求数据。
在这里插入图片描述
上图是帧的结构:

1、 帧的头部的目的MAC地址为FFFFFFFFFFFF,表示这是一个广播帧,会转发给网络中的所有主机。

2、 帧的头部的帧类型有以下选择:
在这里插入图片描述

1、 0800:运载的是IP数据包
2、 0806:运载的是ARP请求包或者应答包
3、 0835:运载的是RARP请求包或者应答包

3、 ARP请求数据中的关键字段
3.1、 OP(操作类型):1表示请求,2表示应答。
3.2、 发送端MAC: 发送端的MAC地址
3.3、 发送端IP:发送端的IP地址
3.4、 目标IP:想要获取MAC对应的IP地址
3.5、 目标MAC:想要获得的MAC,如果是请求报文,就为空,如果是应答报文,是ARP发送方的MAC地址。

ARP过程解析

两个主机 处在同一网络

通过目标ip地址和当前网络掩码相与&,如果和网络地址相同,说明两个主机处在同一个网络。

假设主机A,MAC地址为mac1,IP地址为ip1,想要请求主机B的MAC地址mac2,主机B的IP地址为ip2。

1、主机A首先查看本地ARP缓存表中是否存在ip2的MAC缓存,如果存在缓存直接返回缓存中的MAC地址。

2、如果不存在mac缓存,主机A就会发送ARP请求,ARP请求就是一个特殊的帧。
ARP对应的帧头部中的源MAC地址为mac1,目标MAC地址为FFFFFFFFFFFF,帧类型为0806。
帧中的ARP信息中的OP为1表示请求,发送端MAC为mac1,发送端IP为ip1,目标IP为ip2,目标mac为空。

将帧发送到交换机,交换机会将帧广播到局域网中的所有主机,当主机收到帧的时候,发现是ARP请求,就会拿出其中的ARP信息,查看目标IP是否和自己一致,如果不一致,就不做处理。

如果一致,将ARP信息中的发送端IP和发送端MAC加入主机B的ARP缓存中。
然后新建一个帧,就将自己的mac地址mac2和mac1分别填入到帧头部中的源MAC和目标MAC中,然后构造ARP信息,将自己的IP地址ip2和mac地址mac2填入到发送端IP和发送端MAC,将发送ARP请求的主机的ip1和mac1填入到接收IP和接收MAC中。

然后将帧发送,因为在同一个局域网,交换机会直接将帧发送到主机A中,主机A发现是一个ARP帧,并且是应答,会将对应的ip1和mac1加入到缓存中。

两个主机不在同一网络

ARP请求不会跨网段。

当ARP请求不同网段的IP地址的MAC地址的时候。

如果网关路由器开启了ARP代理的话,就会将自己的MAC地址返回。

如果网关路由器没有开启ARP代理的话,就不做任何操作,主机不会得到任何的回应。

ARP请求不同网段的MAC地址没有实际用处,属于废物操作。 因为数据包的传播是靠下一跳的MAC地址来传递的,主机只需要获取下一跳的MAC地址,也就是网关的MAC地址就可以了。网关和主机处在同一网段,是一个局域网,通过交换机二层设备就可以获取到对应的MAC地址。

总结

ARP协议是一个运行在二层设备,也就是数据链路层上的协议,不会牵扯到路由转发。

ARP分为两种情况:
1、同一网段中
同一网段,主机直接通过广播帧发送ARP请求就可以了,对应的主机收到后发送对应的ARP应答到源主机,就这样就获得了对应的MAC地址。

2、不同网段中
ARP不会跨网段,当ARP请求不同网段的IP地址的MAC地址的时候。如果网关路由器开启了ARP代理的话,就会将自己的MAC地址返回。如果网关路由器没有开启ARP代理的话,就不做任何操作,主机不会得到任何的回应。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值