一.工作原理

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议,是网络链路层的协议,在局域网中使用。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。


ARP的工作过程:

主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01

主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02

当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为工作流程:

第1步:根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。

第2步:如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查

是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。
第3步:主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。
第4步:主机B将包含其MAC地址的ARP回复消息直接发送回主机A。
第5步:当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了

arp的数据帧格式如下:
使用wireshark抓取一个普通的arp请求包,格式如下:
可以看到协议类型为arp,目的MAC地址为广播地址ff:ff:ff:ff:ff:ff,操作码Opcode为1,即arp请求包。
 
再用wireshark抓取一个arp应答包,格式如下:
 
 
可以看到arp应答包返回了目的主机的MAC地址,且操作码Opcode为2,即arp应答包
arping不受MAC地址欺骗的影响

二.命令格式

arping  [-AbDfhqUV] [-c count] [-w deadline] [-s source] [-I interface] destination

三.常用参数

       -A            #和U参数作用相同,不过发送的是ARP应答包
-b #保持广播状态(收到arp应答之后会切换成单一传播模式)
-c count #发送指定数量的ARP请求包
-D #冲突检测模式,如果返回为空,则代表该ip没有被占用
-f #当收到确认主机存活的第一个数据包时,停止发送
-I interface #指定发送ARP数据包使用的网卡设备
-h #打印帮助并退出
-q #不显示警告信息
  -s source #设置源ip地址,DAD模式下为0.0.0.0,主动模式下为自己设定的ip地址,不设置则为本机实际ip地址
-U #主动发送ARP请求来更新其他主机的ARP缓存
-V #打印版本信息并退出
-w deadline #设置超时时间,

四.实践

打开虚拟机,设置仅主机模式,将虚拟机和本机设置在同一网段,本实验中物理机ip为192.168.56.1,MAC为0a:00:27:00:00:00;虚拟机ip为192.168.56.101,MAC为08:00:27:ed:95:88

1.先用虚拟机广播发送发送arp请求包

可以看到虚拟机收到了物理机arp应答包,且物理

同时查看物理机的ARP缓存

# arp -i vboxnet0 -a
? (192.168.56.101) at :::ed:: [ether] on vboxnet0

与实际相符

2.冲突检测模式

使用物理机进行冲突检测,冲突检测目的ip为虚拟机ip

# arping -D -I vboxnet0 192.168.56.101
ARPING 192.168.56.101 from 0.0.0.0 vboxnet0
Unicast reply from 192.168.56.101 [:::ED::] .890ms
Sent probes ( broadcast(s))
Received response(s)
# arping -D -I vboxnet0 -w 3 192.168.56.10
ARPING 192.168.56.10 from 0.0.0.0 vboxnet0
Sent 4 probes (4 broadcast(s))
Received 0 response(s)

可以看到第一个arping有返回值,说明192.168.56.101已经被占用了;而第二个arping没有返回,说明该ip可用


                                                                                                                 

ARP级ping命令:arping的更多相关文章

  1. linux常用网络命令ping和arping

    linux常用网络命令ping和arping ping 向目标主机发送icmp请求包 常用来测试当前主机与目标主机网络连接状况 常见选项 -c              设置发包的个数 -s      ...

  2. ICMP、ARP协议介绍和ping命令

    交换机工作原理和常用的简单命令    一.ICMP协议      1)ICMP协议的封装    二.ARP协议      1)什么是ARP协议      2)ARP相关命令    三.Ping命令的使 ...

  3. ping命令执行过程详解

    [TOC] ping命令执行过程详解 机器A ping 机器B 同一网段 ping通知系统建立一个固定格式的ICMP请求数据包 ICMP协议打包这个数据包和机器B的IP地址转交给IP协议层(一组后台运 ...

  4. ICMP协议Ping命令的应用

    ICMP的全称是 Internet Control Message Protocol ,它是TCP/IP协议族的一个子协议,属于网络层协议,用于在IP主机.路由器之间传递控制消息.从技术角度来讲,就是 ...

  5. TCP/IP协议学习之实例ping命令学习笔记

    TCP/IP协议学习之实例ping命令学习笔记(一) 一. 目的为了让网络协议学习更有效果,在真实网络上进行ping命令前相关知识的学习,暂时不管DNS,在内网中,进行2台主机间的ping命令的整个详 ...

  6. Ping 命令实战小结--TCP/IP协议学习

    2011-12-22 22:38:49 图1 图2 一,环境说明 硬件连线.PC与2440开发板直接用网线连接. PC的ip地址:192.168.0.107.2440开发板的ip地址:192.168. ...

  7. 脑残式网络编程入门(五):每天都在用的Ping命令,它到底是什么?

    本文引用了公众号纯洁的微笑作者奎哥的技术文章,感谢原作者的分享. 1.前言   老于网络编程熟手来说,在测试和部署网络通信应用(比如IM聊天.实时音视频等)时,如果发现网络连接超时,第一时间想到的就是 ...

  8. Ping 命令的执行过程和应用协议

    1. ICMP是“Internet Control Message Ptotocol”的缩写.它是TCP/IP协议族的一个子协议,用于在IP主机.路由器之间传递控制消息. 控制消息是指网络通不通.主机 ...

  9. ICMP协议和ping命令

    当网络不通的情况下,通常会想到ping命令,ping一下,但是ping命令内部如何执行的,可能并不清楚,其实ping是基于ICMP协议进行工作的.  一.ICMP协议的格式 ICMP是在RFC 792 ...

随机推荐

  1. windows10 如何关闭快速关机功能电源选项

    点击右下角的电池 -> power and sleep setting -> choose what the power buttons do -> change settings ...

  2. easyui学习笔记11—tab标签页和鼠标动作

    这篇我们看看标签页是怎么实现的,默认情况下要靠点击切换标签,也可以用鼠标切换标签选项,就是鼠标放在标签上切换. 首先看看引用的资源文件 1.资源文件 <head> <meta cha ...

  3. RabbitMQ的事件总线

    RabbitMQ的事件总线 在上文中,我们讨论了事件处理器中对象生命周期的问题,在进入新的讨论之前,首先让我们总结一下,我们已经实现了哪些内容.下面的类图描述了我们已经实现的组件及其之间的关系,貌似系 ...

  4. Python切片(入门7)

    转载请标明出处: http://www.cnblogs.com/why168888/p/6407977.html 本文出自:[Edwin博客园] Python切片 1. 对list进行切片 L = r ...

  5. 元素设置float属性后,其后面的元素的位置问题

    分两种情况: .content{ width:350px; height:150px; color:#fff; } .content1,.content2{ background-color: #00 ...

  6. Intellij IDEA设置注释作者名字

    方法一:File >> Settings >> Editor >>Code Style >> File and Code Templates>&g ...

  7. Type Systems

    This section deals with more theoretical aspects of types. A type system is a set of rules used by a ...

  8. [POI2015]KIN

    题目 感觉这种题好套路啊,怎么又是这个做法 癌不过怎么没有人和我一样些写套路做法,那干脆来写个题解吧 我们考虑枚举区间的右端点,这样我们只需要考虑从\(1\)到\(i\)的最大区间就好了 由于我们选择 ...

  9. php模板引擎的原理与简单实例

    模板引擎其实就是将一个带有自定义标签的字符串,通过相应的规则解析,返回php可以解析的字符串,这其中正则的运用是必不可少的,所以要有一定的正则基础.总体思想,引入按规则写好的模板,传递给标签解析类(_ ...

  10. C#string byte[] base64位互相转换

    byte表示字节,byte[]则表示存放一系列字节的数组 1个字符=2个字节(byte) 1个字节=8个比特(bit) 网速上所说的1M其实是指1兆的小b,1M= 1024b/8 = 128kb 下面 ...