ARP协议及应用

时间:2024-03-26 18:27:09

ARP协议是根据IP地址获取物理地址的一个TCP/IP协议主机将包含目标主机IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以确定目标的物理地址;收到返回消息后将该IP地址和MAC地址( Media Access Control Address)存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

注意加粗的部分,这是后面实现监听业务的必要条件。

windows下CMD命令窗口,输入arp 命令,可以进行arp信息的查看。

ARP协议及应用

arp缓存表:

ARP协议及应用

 

先来看一下ARP数据包的结构:

               ARP协议及应用

               一般来说,以太网地址就指MAC地址

          1ARP请求目的MAC地址,全1时代表广播地址。

          2发送ARP请求的MAC地址。

          3数据类型,ARP请求和ARP应答这个值为0x0806。

          4硬件地址类型,标识MAC地址时此值为0x0001。

          5协议地址类型,标识ipv4地时值为0x0800。

          6表示硬件地址长度,0x06。

               7表示协议地址长度,0x04。

          8操作类型,值为0x0001,ARP请求;值为0x0002,ARP应答;值为0x0003,RARP请求;值为0x0004,RARP应答。

          9发送端ARP请求或应答的MAC地址。

          10发送ARP请求或应答的IP地址。

               11目的端的MAC地址。

               12目的端的IP地址。

ARP的常见应用场景---依赖“ARP欺骗”实现网络监听功能。

 再来看一下基本的实现逻辑:

ARP协议及应用

 1、主机Ⅰ封装一个ARP应答包,以太网首部、ARP请求应答部分的发送端以太网地址装填Ⅰ主机的MAC地址,发送端IP地址装填网关IP,目的地址以太网地址装填Ⅱ主机的MAC地址,目的IP地址装填Ⅱ主机的IP,帧类型为ARP请求/应答,即0x0806,硬件类型为以太网取值0x0001,硬件地址长度即MAC地址长度为0x06,协议地址长度即IP地址长度为0x04,操作类型为应答即装填0x002,封装完成后将包发出,当Ⅱ主机接收到ARP 应答包后,发现包中IP为网关IP,则ARP缓存表里的网关IP/MAC映射信息更新,将(网关IP=>网关MAC)更新为(网关IP=>Ⅰ-MAC)。

2、主机Ⅰ再封装一个ARP应答包,以太网首部、ARP请求应答部分的发送端以太网地址装填主机Ⅰ的MAC地址,而发送端IP部分填入主机Ⅱ的IP,目的以太网地址装填网关MAC地址、目的IP地址装填网关IP,封装完成后将包发出,网关接收到的ARP应答包后,发现包中发出段IP为主机Ⅱ的IP,于是在它的ARP缓存表里主机Ⅱ-IP/主机Ⅱ-MAC的映射信息刷新,将(ⅡIP=>ⅡMAC)更新为(Ⅱ-IP=>Ⅰ-MAC)。

完成1操作后,主机Ⅱ进行网络通信时,所有本该流向网关的数据包,都流向了主机Ⅰ,需要主机Ⅰ对由主机Ⅱ发来的数据包中的目的地址进行判断并调整,再转发至网关。

完成2操作后,网关发送给主机Ⅱ的数据都流向了主机Ⅰ,需要主机Ⅰ对网关发来的数据包中的地址进行判断并调整,再转发至主机Ⅱ。