arp协议 订阅
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP、代理ARP。NDP用于在IPv6中代替地址解析协议。 展开全文
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP、代理ARP。NDP用于在IPv6中代替地址解析协议。
信息
制定者
互联网工程任务组(IETF)
功    能
根据IP地址查询物理地址
外文名
Address Resolution Protocol(ARP)
中文名
地址解析协议
制定时间
1982年11月
ARP功能
地址解析协议由互联网工程任务组(IETF)在1982年11月发布的RFC 826中描述制定。 [1]  地址解析协议是IPv4中必不可少的协议,而IPv4是使用较为广泛的互联网协议版本(IPv6仍处在部署的初期)。OSI模型把网络工作分为七层,IP地址在OSI模型的第三层,MAC地址在第二层,彼此不直接打交道。在通过以太网发送IP数据包时,需要先封装第三层(32位IP地址)、第二层(48位MAC地址)的报头,但由于发送时只知道目标IP地址,不知道其MAC地址,又不能跨第二、三层,所以需要使用地址解析协议。使用地址解析协议,可根据网络层IP数据包包头中的IP地址信息解析出目标硬件地址(MAC地址)信息,以保证通信的顺利进行。 [2] 
收起全文
精华内容
下载资源
问答
  • ARP协议详解

    万次阅读 多人点赞 2018-04-19 18:02:01
    ARP学习总结1.ARP出现原因ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。其作用是在以太网环境中,数据的传输所依懒的是MAC地址而非IP地址,而将已知IP地址转换为MAC地址的工作是由ARP协议来...

    ARP学习总结

    1. ARP出现原因

    ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。其作用是在以太网环境中,数据的传输所依懒的是MAC地址而非IP地址,而将已知IP地址转换为MAC地址的工作是由ARP协议来完成的。

    在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。

    2. ARP映射方式

    2.1. 静态映射

    静态映射的意思是要手动创建一张ARP表,把逻辑(IP)地址和物理地址关联起来。这个ARP表储存在网络中的每一台机器上。例如,知道其机器的IP地址但不知道其物理地址的机器就可以通过查ARP表找出对应的物理地址。这样做有一定的局限性,因为物理地址可能发生变化:

    (1)机器可能更换NIC(网络适配器),结果变成一个新的物理地址。

    (2)在某些局域网中,每当计算机加电时,他的物理地址都要改变一次。

    (3)移动电脑可以从一个物理网络转移到另一个物理网络,这样会时物理地址改变。

    要避免这些问题出现,必须定期维护更新ARP表,此类比较麻烦而且会影响网络性能。

    2.2. 动态映射

    动态映射时,每次只要机器知道另一台机器的逻辑(IP)地址,就可以使用协议找出相对应的物理地址。已经设计出的实现了动态映射协议的有ARP和RARP两种。ARP把逻辑(IP)地址映射为物理地址。RARP把物理地址映射为逻辑(IP)地址。

    3. ARP原理及流程

    在任何时候,一台主机有IP数据报文发送给另一台主机,它都要知道接收方的逻辑(IP)地址。但是IP地址必须封装成帧才能通过物理网络。这就意味着发送方必须有接收方的物理(MAC)地址,因此需要完成逻辑地址到物理地址的映射。而ARP协议可以接收来自IP协议的逻辑地址,将其映射为相应的物理地址,然后把物理地址递交给数据链路层。

    3.1.ARP请求

    任何时候,当主机需要找出这个网络中的另一个主机的物理地址时,它就可以发送一个ARP请求报文,这个报文包好了发送方的MAC地址和IP地址以及接收方的IP地址。因为发送方不知道接收方的物理地址,所以这个查询分组会在网络层中进行广播。(见图1)

     

    3.2.ARP响应

    局域网中的每一台主机都会接受并处理这个ARP请求报文,然后进行验证,查看接收方的IP地址是不是自己的地址,只有验证成功的主机才会返回一个ARP响应报文,这个响应报文包含接收方的IP地址和物理地址。这个报文利用收到的ARP请求报文中的请求方物理地址以单播的方式直接发送给ARP请求报文的请求方。(见图2)

     

    4. ARP协议报文字段抓包解析

    4.1. 报文格式

     

    硬件类型:16位字段,用来定义运行ARP的网络类型。每个局域网基于其类型被指派一个整数。例如:以太网的类型为1。ARP可用在任何物理网络上。

    协议类型:16位字段,用来定义使用的协议。例如:对IPv4协议这个字段是0800。ARP可用于任何高层协议

    硬件长度:8位字段,用来定义物理地址的长度,以字节为单位。例如:对于以太网的值为6。

    协议长度:8位字段,用来定义逻辑地址的长度,以字节为单位。例如:对于IPv4协议的值为4。

    操作码:16位字段,用来定义报文的类型。已定义的分组类型有两种:ARP请求(1),ARP响应(2)。

    源硬件地址:这是一个可变长度字段,用来定义发送方的物理地址。例如:对于以太网这个字段的长度是6字节。

    源逻辑地址:这是一个可变长度字段,用来定义发送方的逻辑(IP)地址。例如:对于IP协议这个字段的长度是4字节。

    目的硬件地址:这是一个可变长度字段,用来定义目标的物理地址,例如,对以太网来说这个字段位6字节。对于ARP请求报文,这个字段为全0,因为发送方并不知道目标的硬件地址。

    目的逻辑地址:这是一个可变长度字段,用来定义目标的逻辑(IP)地址,对于IPv4协议这个字段的长度为4个字节。

     

    4.2. ARP报文总长度

    ARP报文的总长度为64字节。

    首先要知道帧的概念 帧是在数据链路层传输的数据格式,比如以太网v2,以太网IEEE802.3和PPP等。

    所以Wireshark抓到的帧是包含帧头的,即包含以太网v2的帧头,长14 bytes;

    而ARP数据包的长度固定为28 bytes;

    帧总长度 = 帧头 + 网络层包头 + 传输层报文头 + 应用数据;

    而ARP请求中ARP包已经是最高层,之上没有传输层和应用层,所以总长度为:

    帧总长度 = 帧头 + ARP包头 = 14 + 28 = 42 bytes;

    而真正 发包的时为了保证以太网帧的最小帧长为64 bytes,会在报文里添加一个padding字段,用来填充数据包大小。

    使用wireshark抓包时,抓到的包为60 bytes。比以太网帧的最小帧长扫了4 bytes,原因是因为wireshark抓包时不能抓到数据包最后的CRC字段。

    CRC字段是为了校验以太网帧的正确性。在数据包填充完成后,回去通过算法计算一个值放到数据包的CRC字段中。当接受端收到数据包后,会同样使用算法计算一个值,然后和CRC字段的值进行对比,查看是否相同。如果不同则证明数据包被更改,如果相同则证明数据包并未被更改。

    4.3. 报文封装

    ARP报文直接封装在数据链路帧中,例如,图4中,ARP分组被封装在以太网的帧中。注意,帧中的类型字段指出此帧所携带的数据是ARP报文。

     

    4.4. 报文抓包解析

    既然了解了ARP的详细格式,就尝试获取ARP报文。

    例:

     

    如图5所示,pc1给pc2发送ARP请求,此时使用Wireshark获取ARP抓包数据

     

    当PC1发送的ARP请求报文,以广播报的形式发送到局域网后,当pc2检测到IP地址与自己的IP相同,就会发送给PC1响应报文。

    对于ARP响应包来说,源IP,目地IP,源MAC,目地MAC都是知道的。

     

    PS:报文中的padding字段是填充数据,为了保证帧最少有64个字节

    展开全文
  • ARP协议

    2018-11-24 12:16:54
    ARP协议为地址解析协议,当局域网中以太主机需要将以太网桢发送到另一台主机时,其需要知道另一台主机接口的MAC地址,而上层只提供了IP 地址,这时就需要ARP协议进行IP地址和MAC地址的映射,并且ARP协议提供32位IP...

    ARP协议

    ARP协议为地址解析协议,当局域网中以太主机需要将以太网桢发送到另一台主机时,其需要知道另一台主机接口的MAC地址,而上层只提供了IP 地址,这时就需要ARP协议进行IP地址和MAC地址的映射,并且ARP协议提供32位IP地址和数据链路层使用的任何地址的映射,这里只说IP和MAC地址的映射。

    ARP协议格式

    在这里插入图片描述

    下面数字单位均为字节,此ARP协议总共28个字节,为了满足以太网协议的最小长度会将长度填充到46个字节
    硬件类型:硬件类型指的是后面发送端和目的端硬件地址类型,这里选择的是以太网地址其值为1
    协议类型 :指后面发送端协议地址和目的端协议地址类型,0800指IP地址,和以太网协议地址值相同
    硬件地址长度:指前面选择的硬件地址的长度,这里选择以太网地址其值为6字节
    协议地址长度: 指前面选择的协议地址长度,IP地址长度为4个字节
    op:操作字段其指出四个操作类型 ARP请求(值为1) ARP回复(值为2)RARP请求(值为3)RARP 回复(值为4)RARP为逆地址解析协议和ARP地址解析相反,它是通过硬件地址映射协议地址,其主要工作的无盘机上
    做后四个字段会根据前面选择的类型和长度进行填充,此时目的以太网地址是未知的
    当主机收到ARP请求后如果目的端IP地址和自己IP地址相同时他会将目的端以太网地址进行填充,随后将目的端和发送端地址分别进行交换,然后将op改为2 发送arp回复给对方。

    ARP协议请求和应答

    假设需要发送一个IP数据报,
    首先需要判断对方主机是否和自己在同一个局域网中,如果在同一局域网中,即可直接发送,如果两个主机不在同一个网络中需要先进行IP选路确定下一跳路由器地址(其具体过程在网络层后面在IP协议时讲),两种结果都是需要将数据发送到局域网中,此时数据报在链路层进行封装时需要知道其48位以太网地址(假设链入层为以太网)此时就需要ARP协议提供32位IP地址到48位硬件MAC地址解析,其首先会在ARP高速缓存中查看(下面说明) 如果存在映射直接返回MAC地址,如果不存在,发送ARP请求,在发送时其以太网桢的目的地址为全1,即为广播地址,此时所有的在局域网中的主机和路由器均收到ARP请求,此时会根据目的端IP地址进行判断,如果和自己网卡IP相同,则回复ARP应答告诉对方IP地址,另外ARP应答发送到对方主机时以单播的形式发送,当主机收到ARP应答时主机会将此IP地址和MAC地址映射加入到ARP高速缓存中。然后发送引起此次ARP请求的IP数据报
    通过tcpdump抓取得ARP请求和ARP应答
    tcpdump -b arp 另外-i可以指定需要抓取的网卡
    在这里插入图片描述
    在tcpdump添加-n选项将通过点分十进制的方法打印主机IP
    在这里插入图片描述

    ARP高速缓存

    在ARP高速缓存中放的是最近的IP地址和硬件地址的映射记录,每一项有生存时间TTL,即从加入arp高速缓存开始,当生存时间结束就会被删除,当地址解析协议被询问一个已知IP地址节点的MAC地址时,先在ARP缓存中查看,若存在,就直接返回与之对应的MAC地址,若不存在,才发送ARP请求向局域网查询,在Linux下可以通过arp -a查看arp高速缓存中的内容,也可以通过arp -s 添加映射项目,如果没有在命令末尾添加temp关键字,其添加的为永久性的静态项目,无生存时间。
    在这里插入图片描述
    ARP高速缓存可以提高通信效率,不过ARP高速缓存存在安全隐患,即容易受到ARP攻击,

    免费ARP

    免费ARP指ARP请求的发送端和目的端IP地址均为自己的IP地址,其作用主要有两点

    1. 可以通过发送免费ARP直到局域网中是否和自己设置了相同的IP地址即,当发送免费ARP请求后如果收到了回复就说明在本地还有和自己具有相同IP的主机,此时会在终端日志产生错误,警告管理员
    2. 当一台主机更换网卡之后,可以发送免费ARP告诉局域网中所有的主机自己新的MAC地址,因为是通过广播的方式,此时局域网中的主机收到这个ARP请求后会将此IP对应的MAC地址和自己ARP高速缓存中的MAC地址进行比较,如果不相同就会进行修改。

    ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,进行发送伪造的免费ARP,或者发送伪造的ARP应答,主机接受到免费ARP或者ARP应答后就会进行修改自己的高速缓存表,导致通信被阻塞等问题

    代理ARP

    代理ARP主要针对没有配置缺省网关的路由器或者主机上,当主机需要访问其他网络时,网关收到ARP请求后,会将自己的MAC 地址发送给请求的主机,就是将一个主机作为对另一个主机ARP进行应答。

    参考:《TCP/IP详解卷1:协议》 LawrenceBerkeley

    展开全文
  • arp协议

    千次阅读 2017-07-23 23:14:05
    一、ARP协议简介 ARP (Address Resolution Protocol) 是个地址解析协议。最直白的说法是:在IP以太网中,当一个上层协议要发包时,有了该节点的IP地址,ARP就能提供该节点的MAC地址。 源主机的应用程序知道目的...

    一、ARP协议简介

    ARP (Address Resolution Protocol) 是个地址解析协议。最直白的说法是:在IP以太网中,当一个上层协议要发包时,有了该节点的IP地址,ARP就能提供该节点的MAC地址。  

    源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,因此在通讯前必须获得目的主机的硬件地址,ARP协议就起这个作用。

    二、工作过程

    ARP协议只适用于局域网,如果本地主机想向某一个IP地址的主机发包,但是它并不知道其中的硬件地址,此时运用ARP协议提供的机制来获取硬件地址,过程如下:

    (1)本地主机发出ARP请求,询问“192.168.0.1”的主机硬件地址是多少,并将这个请求广播到本地网段中(以太网帧首部硬件地址填写FF:FF:FF:FF:FF:FF表示广播)

    (2)目的主机接收到广播ARP请求,发现其中IP与本机相符合,发送一个ARP协议应答给源主机,包含了lP地址和硬件地址

    (3)目的主机接受到ARP应答,知道了目的主机的硬件地址,之后的数据就可传达了。

    三、常见的用法

    1.arp -a或arp –g
    每一台主机都维护一个ARP缓存表,可以用arp -a命令查看。用于查看缓存中的所有项目。-a和-g参数的结果是一样的,多年来-g一直是UNIX平台上用来显示ARP缓存中所有项目的选项,而Windows用的是arp
    -a(-a可被视为all,即全部的意思),但它也可以接受比较传统的-g选项。 arp -a Ip 如果有多个网卡,那么使用arp -a加上接口的IP地址,就可以只显示与该接口相关的ARP缓存项目。 arp -s Ip 物理地址 可以向ARP缓存中人工输入一个静态项目。该项目在计算机引导过程中将保持有效状态,或者在出现错误时,人工配置的物理地址将自动更新该项目。
    2. arp -d Ip 使用该命令能够人工删除一个静态项目。

    四、帧格式


    以太网目的地址:目的主机的硬件地址。目的地址全为1的特殊地址是广播地址。
    以太网源地址:源主机的硬件地址。
    帧类型:对于ARP协议,该字段为0x0806。对于RARP协议,该字段为0x8035。
    硬件类型:表示硬件地址的类型。值为1时表示以太网地址。也就是说ARP协议不仅仅应用于以太网协议,还可以支持别的链路层协议。
    协议类型:表示要映射的协议地址类型。值为0x0800时表示IP协议。
    硬件地址长度:与硬件类型对应的硬件地址的长度,以字节为单位。如果是以太网,则是6字节(MAC长度)。
    协议地址长度:与协议类型对应的协议地址长度,以字节为单位。如果是IP协议,则是4字节(IP地址长度)。
    操作类型(op):四中操作类型。ARP请求(1),ARP应答(2),RARP请求(3),RARP应答(4)。
    发送端硬件地址:如果是以太网,则是源主机以太网地址,此处和以太网头中的源地址对应。
    发送端协议地址:如果是IP协议,则表示源主机的IP地址。
    目的端硬件地址:如果是以太网,则是目的以太网地址,和以太网头中的目的地址对应。
    目的端协议地址:如果是IP协议,则表示源主机要请求硬件地址的IP地址。
    对应ARP请求包来说,目的端的硬件地址字段无须填充,其他字段都需要填充。对于ARP回复包来说,所有字段都需要填充。

    APR请求包是广播的,但是ARP应答帧是单播的。

    以太网数据报最小长度是60字节(14字节的以太网头,不包含4字节的FCS),ARP数据包长度为42字节(14字节的以太网头和28字节的ARP数据),需要加入填充字符到以太网最小长度要求:60字节。

    五、编写arp脚本抓取对应主机mac地址

    #!/bin/bash
    head='192.168.3'
    
    i=1
    count=0
    
    while [ $i -le 254 ]
    do
        if [ $count -gt 20 ];then
            count=0
            sleep 1
        fi
        ping -c1 "${head}"".$i"&
        let i++
        let count++
    done
    
    
    wait 
    echo "#############################"
    arp -a |grep -v 'incomplete'
    echo "#############################"



    展开全文
  • ARP 协议

    2018-10-21 00:54:22
    总结 ARP 协议,包括请求、应答、免费ARP、探测和通告分组

    总结 ARP 协议,包括请求、应答、免费ARP、探测和通告分组

     

    ARP 协议用于网络层地址和硬件地址之间的映射,实际使用中只用于 IPv4 地址到以太网 MAC 地址的映射

    ARP 协议封装在链路层中传输,并且只能工作在支持广播的网络中。协议帧如下:

     

    1、ARP 请求

    在本地缓存中没有需要的 IPv4 地址到 MAC 地址的映射时,就需要发送一个 ARP 请求来获取 MAC 地址

    发送 ARP 请求时,链路层中的目的地址填为全 f(广播),ARP 帧里的目的 MAC 地址填为0

    链路层广播 操作类型 发送方 MAC 发送方 IP 目的 MAC 目的 IP
    1(请求) 0:0:c0:6f:2d:40 10.0.0.56 0 10.0.0.3

     

    2、ARP 应答

    IP 地址为 10.0.0.3 的设备收到请求后,回复一个 ARP 应答消息,消息中包括应答方的 IP 和 MAC 地址(填在发送方地址字段)

    应答消息不是广播

    链路层广播 操作类型 发送方 MAC 发送方 IP 目的 MAC 目的 IP
    2(应答) 0:0:c0:c2:9b:26 10.0.0.3 0:0:c0:6f:2d:40 10.0.0.56

     

    3、免费 ARP

    源 IP 和目的 IP 相同的 ARP 请求叫做免费 ARP,通过广播发送:

    链路层广播 操作类型 发送方 MAC 发送方 IP 目的 MAC 目的 IP
    1(请求) 0:0:c0:6f:2d:40 10.0.0.56 0 10.0.0.56

    这样只有 IP 地址和自己相同的才会回应。发送免费 ARP 后并不期望收到回应,当收到一个回应时说明有地址冲突。免费 ARP 主要用来实现两个功能:

    1. 允许一台主机确定另一台主机是否配置相同的 IP 地址
    2. 通知其它主机发送方主机的 MAC 地址变了,更新其它主机中的缓存

    如果一个主机A接收到一个主机B的 ARP 请求,该请求的发送方B的 IP 已经在接收方A的 ARP 缓存中了,则接收主机A用请求消息里的发送方 IP、MAC 地址对来更新本地 ARP 缓存里的记录,第二点正是通过这个特性来实现的。也正是由于这个特性,在地址冲突的情况下会存在缓存污染的问题。

    所以免费 ARP 又根据发送方 IP 地址是否填 0 分成了两种:探测分组和通告分组。

    3.1、ARP 探测分组

    发送方 IP 地址是 0 的叫探测分组,通过广播发送。当一个接口被启用或从睡眠中唤醒,或一个新的链路建立时,主机会发送一个ARP 探测分组,将发送方 IP 填为 0 避免了在 IP 地址冲突的情况下存在的缓存污染问题,用来实现免费 ARP 中的冲突检测功能:

    链路层广播 操作类型 发送方 MAC 发送方 IP 目的 MAC 目的 IP
    1(请求) 0:0:c0:6f:2d:40 0 0 10.0.0.56

     

    3.2、ARP 通告分组

    发送方 IP 地址不是 0 的叫通告分组,用来实现免费 ARP 中的通知 MAC 地址变更功能

    链路层广播 操作类型 发送方 MAC 发送方 IP 目的 MAC 目的 IP
    1(请求) 0:0:c0:6f:2d:40 10.0.0.56 0 10.0.0.56

     

    4、免费 ARP 和探测、通告分组的关系

    ARP 探测分组和通告分组属于 IPv4 地址冲突检测(ACD)功能的一部分,免费 ARP 的两个功能分别由它们实现:

    1. 检测冲突的功能由探测分组实现
    2. 通知 MAC 地址变更的功能由通告分组实现

     

    5、以上消息的应用场景

    1. 正常请求另一个 IP 地址对应的 MAC 地址时,发送请求分组,收到应答分组
    2. 当一个接口被启用或从睡眠中唤醒,或一个新的链路建立时,主机会发送一个ARP 探测分组。如果收到应答分组,说明其它站已使用候选 IP 地址。如果收到其它站发送的探测请求,说明其它站也在尝试获得候选 IP 地址。这两种情况系统都会提示地址冲突,然后使用其它可用的地址(比如使用 DHCP 分配)
    3. 如果前面的探测分组没有检测到冲突,则发送通告分组,更新其它站的缓存
    4. ACD 持续检测收到的请求和应答消息,如果自己的地址有出现在消息的发送方 IP 地址字段中,则说明有地址冲突(只检测发送方地址,不需要处理探测分组,因为收到探测分组后用正常的应答来阻止对方继续使用此 IP 即可)。这时候有三种处理方式:①停止使用此地址;②发送通告分组,如果冲突继续则停用此地址;③不理会冲突继续使用
    展开全文
  • ARP协议原理

    万次阅读 多人点赞 2019-03-12 20:03:05
    引言 从前一篇文章中,我们知道计算机中会维护一个ARP缓存表,这个表...ARP协议是地址解析协议(Address Resolution Protocol)是通过解析IP地址得到MAC地址的,是一个在网络协议包中极其重要的网络传输协议,它与网...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 96,828
精华内容 38,731
关键字:

arp协议