arp_arpspoof - CSDN
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

    千次阅读 多人点赞 2020-05-17 21:36:27
    要理解ARP协议的工作原理必须先理解IP地址和MAC地址的区别,MAC地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址(IP地址使用软件实现的)如下图: 在发送数据时,数据...

    转载 原文

    1 IP地址与MAC地址

    要理解ARP协议的工作原理必须先理解IP地址和MAC地址的区别,MAC地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址(IP地址使用软件实现的)如下图:

    在这里插入图片描述

    在发送数据时,数据从高层到低层,然后才到通信链路上传输。使用IP地址的IP数据报一旦交给了数据链路层,就被封装成了MAC帧。MAC帧在传送时使用的源地址和目的地址都是硬件地址。连接在通信链路上的设备(主机或路由器)在接收MAC帧时,根据是MAC帧首部的硬件地址。在数据链路层看不到隐藏在MAC帧中的IP地址。只有在剥去MAC帧的首部和尾部后把MAC层的数据交给网络层后,网络层才能在IP数据报的首部中找到源IP地址和目的IP地址。

    在这里插入图片描述
    ARP地址解析协议
    地址解析协议(Address Resolution Protocol),其基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在IPv6中已不再适用,并被邻居发现协议(NDP)所替代。

    基本功能
    在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。而在TCP/IP协议中,网络层和传输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。于是需要一种方法,根据目的主机的IP地址,获得其MAC地址。这就是ARP协议要做的事情。所谓地址解析(address resolution)就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。

    在这里插入图片描述

    注意:在点对点链路中不使用ARP,实际上在点对点网络中也不使用MAC地址,因为在此类网络中分别已经获取了对端的IP地址。

    ARP工作机制
    报文格式
    在这里插入图片描述

    以太网传输层

    目标以太网地址:目标MAC地址。FF:FF:FF:FF:FF:FF (二进制全1)为广播地址。
    源以太网地址:发送方MAC地址。
    帧类型:以太类型,ARP为0x0806。

    在每台安装有TCP/IP协议的电脑或路由器里都有一个ARP缓存表,表里的IP地址与MAC地址是一对应的,如下表所示。

    在这里插入图片描述
    当主机A要向本局域网上的某个主机B发送IP数据报时,就先在其ARP高速缓存中查找有无主机B的IP地址。如果有,就在ARP高速缓存中查出其对应的硬件地址,再把其硬件地址写入到MAC帧,然后通过局域网把该MAC帧发往此硬件地址。

    如果主机高速缓存中没有则运行ARP按照以下步骤查找出主机B的硬件地址。

    (1)ARP进程在本局域网上广播发送一个ARP请求分组如下:
    在这里插入图片描述

    (2)本局域网上所有的主机上运行的ARP进程都收到此ARP请求分组。

    (3)主机B在ARP分组中见到自己的IP地址就向A发送ARP响应分组,并写入自己的硬件地址,相应分组是普通的单播。

    (4)主机A收到主机B的ARP响应分组后,就在其ARP高速缓存中写入主机B的IP地址到硬件地址的映射。

    (5)另外,当发送主机和目的主机不在同一个局域网中时,即便知道目的主机的MAC地址,两者也不能直接通信,必须经过路由转发才可以。所以此时,发送主机通过ARP协议获得的将不是目的主机的真实MAC地址,而是一台可以通往局域网外的路由器的MAC地址。于是此后发送主机发往目的主机的所有帧,都将发往该路由器,通过它向外发送。这种情况称为委托ARP或ARP代理(ARP Proxy)。

    ARP缓存表采用老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。

    ————————————————
    版权声明:本文为CSDN博主「HankingHu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/u013309870/article/details/77427112

    展开全文
  • ARP协议原理

    万次阅读 多人点赞 2020-05-22 09:40:34
    从前一篇文章中,我们知道计算机中会维护一个ARP缓存表,这个表记录着IP地址与MAC地址的映射关系,我们可以通过在电脑的控制台通过arp -a指令查看一下我们自己计算机的ARP缓存表: 那么什么是ARP协议呢? 初始ARP ...

    引言

    从前一篇文章中,我们知道计算机中会维护一个ARP缓存表,这个表记录着IP地址与MAC地址的映射关系,我们可以通过在电脑的控制台通过arp -a指令查看一下我们自己计算机的ARP缓存表:
    tcpip-6
    那么什么是ARP协议呢?

    初始ARP

    ARP协议是地址解析协议(Address Resolution Protocol)是通过解析IP地址得到MAC地址的,是一个在网络协议包中极其重要的网络传输协议,它与网卡有着极其密切的关系,在TCP/IP分层结构中,把ARP划分为网络层,为什么呢,因为在网络层看来,源主机与目标主机是通过IP地址进行识别的,而所有的数据传输又依赖网卡底层硬件,即链路层,那么就需要将这些IP地址转换为链路层可以识别的东西,在所有的链路中都有着自己的一套寻址机制,如在以太网中使用MAC地址进行寻址,以标识不同的主机,那么就需要有一个协议将IP地址转换为MAC地址,由此就出现了ARP协议,所有ARP协议在网络层被应用,它是网络层与链路层连接的重要枢纽,每当有一个数据要发送的时候都需要在通过ARP协议IP地址转换成MAC地址,在IP层及其以上的层次看来,他们只标识IP地址,从不跟硬件打交道,就像我一样,我做应用层的工作,而不会去写底层驱动,得专门有个同事将驱动写完给我,我只需要知道他提供的API接口就行了,而我就专心处理我的工作,我相信他能把驱动写好,我只需要直接调用即可。

    ARP缓存表

    既然已经解释了ARP协议的用途及重要性,那么它是如何工作的?为了实现IP地址MAC地址查询与转换ARP协议引入了ARP缓存表的概念,每台主机或路由器在维护着一个ARP缓存表(ARP table),这个表包含IP地址到MAC地址的映射关系,表中记录了<IP地址,MAC地址>对,我称之为ARP表项,如我们前面那张所展示的一样,他们是主机最近运行时获得关于其他主机的IP地址MAC地址的映射,当需要发送数据的时候,主机就会根据数据报中的目标IP地址信息,然后在ARP缓存表中进行查找对应的MAC地址,最后通过网卡将数据发送出去。ARP缓存表包含一个寿命值(TTL,也称作生存时间),它将记录每个ARP表项的生存时间,生存时间到了就会从缓存表中删除。从一个表项放置到ARP缓存表中开始,一个表项通常的生存时间一般是10分钟吗,当然,这些生存时间是可以任意设置的,我们一般使用默认即可。

    一句话总结ARP协议的工作

    ARP协议的主要工作就是建立、查询、更新、删除ARP表项。

    ARP表项的建立

    当主机开机的时候,ARP缓存表肯定是空的,那么怎么一步步建立 ARP表项呢?如果此时想发送数据怎么办呢?因为没有ARP表项,说明就找不到IP地址MAC地址映射关系,这样子也就无法发送数据了。
    其实协议栈的实现还是很强大的,如果没有ARP表项,那么主机就会去建立ARP表项
    以我们的电脑为例,在开机的时候,我们的电脑肯定是没有ARP表项的(或者应该说只有路由器的ARP表项,因为可能是动态获取IP地址):

    tcpip-8

    对于局域网

    如果我想向局域网中的某个电脑发送一个数据,那么我的电脑就会从已有的ARP缓存表中寻找这个IP地址对应的物理地址的ARP表项,然后直接将数据写入以太网数据帧中让网卡进行发送即可,而如果没有找到这个IP地址,那么这个数据就没法立即发送,电脑会先在局域网上广播一个ARP请求(目标MAC地址为FF-FF-FF-FF-FF-FF),广播的ARP请求发出后,处于同一局域网内的所有主机都会接收到这个请求,如果目标IP地址与接收到ARP请求的主机自身IP地址吻合就会返回一个ARP应答,告诉请求者(即我的电脑)自身的MAC地址,当我的电脑收到这个ARP应答后,就去建立一个ARP表项,并且重新将数据发送出去。
    ARP协议的核心就是对缓存表的操作,发送数据包的时候,查找ARP缓存表以得到对应的MAC地址,在ARP缓存表中的TTL即将过期的时候更新缓存表以保证ARP表项有效,此外ARP协议还需要不断处理来自局域网中其他主机的ARP请求

    对于公网

    比如我的电脑向访问我的博客:https://jiejietop.cn
    因为我的博客主机是处于外网的,那么我的电脑在访问的时候,也是找不到缓存表的,那它只能通过网关,让网关将数据转发到我的博客主机上,即:

    tcpip-9

    因为我的电脑与博客主机不在一个网段,电脑查询自己的路由表,知道如果想和博客主机通信则必须通过网关(gateway)来中转,所以会在与网关直连的网卡上请求网关的MAC地址,因为电脑要把发给博客主机的数据先发给网关,当合法以太帧到达网关并且顺利接收,网关会将数据递交给IP层,IP层查询路由表,找到与博客主机直连的接口(假设是直连的,实际上肯定不是直连的),网关会发一个ARP请求到博客主机上,请求它的MAC地址,网关收到应答后将建立新的ARP表项并将开始维护ARP缓存表,然后完成最终的通信。

    ARP缓存表的超时处理

    ARP是动态处理的,现在总结一下:ARP表项的生存时间是一般为5-10分钟(LwIP中默认是5分钟),而ARP请求的等待时间是5秒钟,当这些时间到达后,就会更新ARP表项,如果在物理链路层无法连通则会删除表项。
    因此每个协议栈的实现都必须维护着一个定时器(超时机制)来管理ARP缓存表,在必要的时候更新及删除ARP表项,关于怎么处理的我们就不多追究,有兴趣的可以看LwIP的etharp_tmr()源码。

    说点题外话:因为ARP协议是一个动态的协议,很多网络攻击都是利用ARP协议进行的,如ARP欺骗,ARP洪水攻击等等,而且这种攻击是很难防御的,当然也有办法,直接将动态的ARP缓存表设置为静态就行了,但是这就违背了ARP协议动态地址解析特性。

    ARP报文

    ARP的请求与应答都是依赖ARP报文结构进行的,ARP报文是放在以太网数据帧中进行发送的,下面是ARP报文的格式:

    tcpip-10

    当它封装在以太网帧中的格式:

    tcpip-11

    在ARP表建立前,主机并不知道目标MAC地址,所以在一开始的时候只能通过广播的方式将ARP请求包发送出去,处于同一局域网的主机都能接收到广播的数据包。所以一开始目标MAC地址FF-FF-FF-FF-FF-FF,而以太网首部的帧类型是有多种,对于ARP数据包来说,其值为0x0806,对于IP数据报来说,其值为0x0800
    在ARP首部一开始的2个字节存储的是硬件类型,表示要知道目标网卡的硬件类型,其中,值为1表示以太网地址;接下来还有2字节的协议类型,其中,0x0800表示IP协议,其他还可能是ICMP/IGMP协议等;接下来有1个字节表示硬件地址长度,指出该报文中硬件地址的长度,对于以太网硬件类型,它的值为6;还有1字节的协议地址长度,如果是ARP协议、IP协议等,该值为4;ARP首部最后的op字段用于记录ARP操作的类型,分别是:

    • ARP请求,其值为1。
    • ARP应答,其值为2。
    • RARP请求,其值为3。
    • RARP应答,其值为4。

    我们只关心ARP的请求与应答即可,RARP是逆地址解析协议,在这里我们就不用去了解,它在网络中基本已经被淘汰,用于主机在启动的时候获得自己的IP地址。
    对于ARP首部后面的四个字段分别是源MAC地址、源IP地址、目标MAC地址、目标IP地址,这些就是比较简单的了。
    为了加深理解,我们使用wireshark网络抓包工具形象地讲解报文格式与内容,关于wireshark网络抓包工具的使用方式我就不做过多讲解,网上教程一大把,打开工具,然后抓取电脑网络中的数据包。

    tcpip-12
    tcpip-13

    未完待续…
    下一篇LwIP中ARP协议的实现

    喜欢就关注我吧!

    欢迎关注我公众号

    相关代码可以在公众号后台获取。

    展开全文
  • ARP详解

    万次阅读 多人点赞 2018-05-13 17:31:09
    1.ARP简介 2.ARP工作流程 3.ARP报文格式 4.抓包分析 4.1 ARP请求报文 4.2ARP应答报文 5.其他 5.1 ARP表 5.1.1 动态ARP表 5.1.2 静态ARP表 5.2 免费ARP 5.3 代理ARP 5.4 ARP攻击 参考 1.ARP简介 地址...

    1.ARP简介

    地址解析协议(Address Resolution Protocol),其基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在IPv6中已不再适用,并被邻居发现协议(NDP)所替代。

    2.ARP工作流程

    假设主机A和B在同一个网段,主机A要向主机B发送信息,具体的地址解析过程如下:
    (1) 主机A首先查看自己的ARP表,确定其中是否包含有主机B对应的ARP表项。如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机B。

    (2) 如果主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机B)会对该请求进行处理。

    (3) 主机B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。

    (4) 主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。
    这里写图片描述

    3.ARP报文格式

    这里写图片描述
    先要清楚,一般说以太网地址就是指MAC地址。

      字段1是ARP请求的目的以太网地址,全1时代表广播地址。

      字段2是发送ARP请求的以太网地址。

      字段3以太网帧类型表示的是后面的数据类型,ARP请求和ARP应答这个值为0x0806。

      字段4表示硬件地址的类型,硬件地址不只以太网一种,是以太网类型时此值为1。

      字段5表示要映射的协议地址的类型,要对IPv4地址进行映射,此值为0x0800。

      字段6和7表示硬件地址长度和协议地址长度,MAC地址占6字节,IP地址占4字节。

      字段8是操作类型字段,值为1,表示进行ARP请求;值为2,表示进行ARP应答;值为3,表示进行RARP请求;值为4,表示进行RARP应答。

      字段9是发送端ARP请求或应答的硬件地址,这里是以太网地址,和字段2相同。

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

      字段11和12是目的端的硬件地址和协议地址。

    4.抓包分析

    下面是抓取的ARP数据包,可以对照上面的说明进行理解。
    图中红框圈起来的是一对ARP请求和ARP应答。
    这里写图片描述

    4.1 ARP请求报文

    这里写图片描述

    4.2ARP应答报文

    ARP应答分组中,将ARP请求中的源和目的地址进行交换,此外,变化的还有字段8 Opcode。其余字段内容不会发生变化。
    这里写图片描述

    5.其他

    5.1 ARP表

    设备通过ARP解析到目的MAC地址后,将会在自己的ARP表中增加IP地址到MAC地址的映射表项,以用于后续到同一目的地报文的转发。
    这里写图片描述

    5.1.1 动态ARP表

    动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新,可以被静态ARP表项覆盖。当到达老化时间、接口down时会删除相应的动态ARP表项。

    5.1.2 静态ARP表

    静态ARP表项通过手工配置和维护,不会被老化,不会被动态ARP表项覆盖。
    配置静态ARP表项可以增加通信的安全性。静态ARP表项可以限制和指定IP地址的设备通信时只使用指定的MAC地址,此时攻击报文无法修改此表项的IP地址和MAC地址的映射关系,从而保护了本设备和指定设备间的正常通信。

    5.2 免费ARP

    免费ARP指主机发送ARP查找自己的IP地址,通常发生在系统引导期间进行接口配置时。与标准ARP的区别就是免费ARP分组的目的IP地址字段封装的是自己的IP地址,即向所在网络请求自己的MAC地址。
    免费ARP的作用有:
      1) 一个主机可以通过它来确定另一个主机是否设置了相同的 IP地址。

       正常情况下发送免费ARP请求不会收到ARP应答,如果收到了一个ARP应答,则说明网络中存在与本机相同的IP地址的主机,发生了地址冲突。

      2)更新其他主机高速缓存中旧的硬件地址信息。

       如果发送免费ARP的主机正好改变了硬件地址,如更换了接口卡。

       其他主机接收到这个ARP请求的时候,发现自己的ARP高速缓存表中存在对应的IP地址,但是MAC地址不匹配,那么就需要利用接收的ARP请求来更新本地的ARP高速缓存表表项。

      3)网关利用免费ARP防止ARP攻击

      有些网关设备在一定的时间间隔内向网络主动发送免费ARP报文,让网络内的其他主机更新ARP表项中的网关MAC地址信息,以达到防止或缓解ARP攻击的效果。

      4)利用免费ARP进行ARP攻击

      ARP协议并不只在发送了ARP请求才接收ARP应答,计算机只要接收到ARP应答数据包,就会使用应答中的IP和MAC地址对本地的ARP缓存进行更新。

      主机可以构造虚假的免费ARP应答,将ARP的源MAC地址设为错误的MAC地址,并把这个虚假的免费ARP应答发送到网络中,那么所有接收到这个免费ARP应答的主机都会更新本地ARP表项中相应IP地址对应的MAC地址。更新成功后,这些主机的数据报文就会被转发到错误的MAC地址,从而实现了ARP欺骗的攻击。

    5.3 代理ARP

    代理ARP就是通过使用一个主机(通常为router),来作为指定的设备使用自己的 MAC 地址来对另一设备的ARP请求作出应答。

    为什么需要代理ARP?

      先要了解,路由器的重要功能之一就是把局域网的广播包限制在该网内,阻止其扩散,否则会造成网络风暴。

      ARP请求是个广播包,它询问的对象如果在同一个局域网内,就会收到应答。但是如果询问的对象不在同一个局域网该如何处理?路由器就提供了代理ARP为这个问题提供了解决方案。

    工作过程
    这里写图片描述
      两台主机A和B处于同一网段但不同的广播段(不在同一物理网络上)时,主机A发送ARP请求主机B的MAC地址时,因为路由器不转发广播包的原因,ARP请求只能到达路由器。如果路由器启用了代理ARP功能,并知道主机B属于它连接的网络,那么路由器就用自己接口的MAC地址代替主机B的MAC地址来对主机A进行ARP应答。主机A接收ARP应答,但并不知道代理ARP的存在。

    代理ARP的优缺点

      优点:代理ARP能在不影响路由表的情况下添加一个新的Router,使子网对该主机变得透明化。一般代理ARP应该使用在主机没有配置默认网关或没有任何路由策略的网络上。

      缺点:从工作工程可以看到,这其实是一种ARP欺骗。而且,通过两个物理网络之间的路由器的代理ARP功能其实互相隐藏了物理网络,这导致无法对网络拓扑进行网络概括。此外,代理ARP增加了使用它的那段网络的ARP流量,主机需要更大的ARP缓存空间,也不会为不使用ARP进行地址解析的网络工作。

    5.4 ARP攻击

    ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的进行。 基于ARP协议的这一工作特性,黑客向对方计算机不断发送有欺诈性质的ARP数据包,数据包内包含有与当前设备重复的Mac地址,使对方在回应报文时,由于简单的地址重复错误而导致不能进行正常的网络通信。

    一般情况下,受到ARP攻击的计算机会出现两种现象:
    1)不断弹出“本机的XXX段硬件地址与网络中的XXX段地址冲突”的对话框。
    2) 计算机不能正常上网,出现网络中断的症状。

    因为这种攻击是利用ARP请求报文进行“欺骗”的,所以防火墙会误以为是正常的请求数据包,不予拦截。因此普通的防火墙很难抵挡这种攻击。

    参考

    arp地址解析协议
    TCP/IP协议——ARP详解
    ARP详解

    展开全文
  • 看完后,搞懂ARP的工作原理,其实并不难(好文)

    万次阅读 多人点赞 2020-06-04 13:27:33
    原址本期,我就来解答一下关于ARP的工作原理吧!思路1、思考ARP到底是干嘛的? 为什么要有它?why? 2、掌握ARP的工作原理。技术人,要掌握一种技术,绝对离不开以上两点基本思路,带着这两个思路去学习新技术,你...

    本期,我就来解答一下关于ARP的工作原理吧! 

    思路

    1、思考ARP到底是干嘛的? 为什么要有它?why?  

    2、掌握ARP的工作原理。

    技术人,要掌握一种技术,绝对离不开以上两点基本思路,带着这两个思路去学习新技术,你绝对是不可能学不会的。再笨,你也会学得很深刻的。甚至,你还可以有更多的思路,比如,可不可以没有它? 有它?跟没有它的情况又是什么样的?等等。

     

    1、ARP到底是干嘛的?

    我们都知道局域网里面通信,都是靠MAC地址来通信的。ARP简单说,就是用来把IP地址转换成MAC地址,就是某个去往目的IP地址翻译成MAC地址。

    交换机的工作原理就是基于源MAC地址学习,基于目的MAC地址转发的。大家都知道网络的参考模型,我们在电脑上要发送消息时,电脑内部的处理机制是先从上层开始一层一层往下封装的。如图:


    现在,有了这张图,就更容易理解ARP的作用了。

    电脑从上层往下封装,到了二层,要封装帧头部时,就需要把目的mac地址封装上,形成完整的二层头部后,就可以发送出去了。

     

    现在的问题就是,电脑如何知道对方的MAC地址?

    看完后,搞懂ARP的工作原理,其实并不难!

     


    计算机A要发送消息,给计算机E。他们是第一次通信。

     

    当用户计算机A在上使用QQ聊天工具,输入:你好,约吗?

    回车,计算机A就先从上层往下封装头部。如IP头部就将

    目的IP:1.1.1.2   , 源IP就是:1.1.1.1 等信息进行封装,到了二层,就需要将目的MAC地址,源MAC地址进行封装。计算机A肯定知道自己网卡的mac地址,为1111.1111.1111.1111。但是目的mac地址(计算机E的mac地址)就不知道了,因为他们是第一次通信,哪里知道啊~  要是知道,就上天了!

    于是,这时候,计算机A就执行ARP程序,发送一个ARP请求报文的广播包:

    该数据包的关键字段如下:


    二层:

    目的MAC地址:ffff.ffff.ffff.ffff

    源mac地址:1111.1111.1111.1111

    类型:0x0806

    arp的关键内容如下:

    source mac:1111.1111.1111.1111.1111

    source IP: 1.1.1.1

    target mac:ffff.ffff.ffff.ffff (因为第一次通信,不知道对方的mac地址)

    target IP:1.1.1.2

    这样,交换机收到这个报文,看到目的mac地址是全F就进广播!

    阿龙这里要提醒初学者的是,因为交换机是二层设备,只会拆包、解析到二层信息而已,不会进行更深入的解析,如网络层信息。换句话说,就是交换机根本不知道里面是什么数据,只知道这个数据包的源、目mac地址而已。

    这样,所有的计算机收到这个广播包,会进行更深入的解析,看到里面的target IP 是1.1.1.2,  与自己的IP地址进行对比,发现不一样,就丢弃。发现一样,就回应ARP报文。单播回应喔!

     

    ARP的响应报文里的关键字段如下,


    二层:

    目的MAC地址:1111.1111.1111.1111

    源mac地址:2222.2222.2222.2222

    类型:0x0806

    arp的关键内容如下:

    source mac:2222.2222.2222.2222

    source IP: 1.1.1.1

    target mac:1111.1111.1111.1111 (从请求包里得知A的mac地址,于是单播)

    target IP:1.1.1.1


     

    这样,计算机A收到这个报文后,就将计算机E的mac地址记录下来,存在计算机A的一个数据库,叫做ARP缓存表。下次通信时,如果缓存未超时,就可以直接使用了。如果超时了,就再次进行arp请求广播了。

    如果你还不信的话,那龙哥就亲自动手做实验吧!  

     

    计算机A的信息:

     

    计算机E的信息:

     

    用计算机A ping 计算机E来模拟A发送消息给计算机E,并且抓包:

     

    抓包就会发现抓到了2个ARP的报文:


    分别如下:

    1、

     

    2、

     

    这时,你就可以在计算机A看到arp缓存表了:

     

    不知道,那位同学明白了没? 如以上有讲错地方,欢迎大家在下方评论地方指出! 如您还有其他见解,也欢迎您在下方评论的地方进行参与。

    感觉您的阅读! 祝您学习愉快!

     

    展开全文
  • ARP原理和ARP攻击

    万次阅读 多人点赞 2020-04-28 17:18:57
    ARP--在TCP/IP协议栈中,最不安全的协议莫过于ARP了,我们经常听到的网络扫描,内网渗透,流量欺骗等等,他们基本上都与ARP有关系,甚至可以说,他们的底层都是基于ARP实现的。但是ARP的是实现仅需一问一答的两个包...
  • ARP与ICMP

    千次阅读 2019-05-18 12:10:28
    一、ARP:Address Resolution Protocol 地址解析协议(ARP能够通过目的IP地址发现目标设备的MAC地址,从而实现链路可达) 解读:地址解析:目标IP-->目标MAC 联想:当网络设备数据要向另一台网络设备发送数据时...
  • arp -a命令的通俗解释

    千次阅读 2020-04-24 13:23:57
    ARP -A,查询系统中缓存的ARP表。ARP表用来维护IP地址与MAC地址的一一对应。 比方说,某推拿室总有30名服务员,为了方便管理,服务员都编了号,由01编到30。客人们都只记得服务员的编号。我去这个桑拿房,因为25号...
  • ARP协议详解 ARP报文结构

    万次阅读 2016-12-30 09:56:10
    ARP ARP作用 ARP(Address Resolution Protocol,地址解析协议)是将IP地址解析为以太网MAC地址(或称物理地址)的协议。 在局域网中,当主机或其它网络设备有数据要发送给另一个主机或设备时,它必须知道对方的...
  • ARP表的更新和老化

    万次阅读 2012-06-28 09:46:42
    ARP表的更新和老化 Ø ARP表的更新的条件 在实际的环境中,只有同时满足以下两个条件时,设备的ARP表项才会更新: 1,设备收到来自某IP的ARP请求包或免费ARP包; 2,设备的现有ARP表项中已经存在该IP对应的ARP表...
  • linux 清除 arp 缓存

    万次阅读 2015-09-02 10:59:30
    所有在Linux系统下 arp -d $ip 命令只能清除一个IP地址的对应MAC地址缓存,可以使用组合命令操作。 组合命令清楚所有arp缓存: arp -n|awk '/^[1-9]/{system("arp -d "$1)}'以上命令必须 root 才可以执行。 ...
  • 用户模式或者全局模式下 命令:dis arp  
  • ARP欺骗的两种方式

    万次阅读 2018-03-16 21:19:35
    ARP协议主要作用是完成从IP地址到MAC地址的转换。ARP病毒主机主要通过发送伪装数据包,更改局域网内的其他主机的ARP缓存表,即通信双方的IP地址与MAC地址的对应关系,达到截获数据的目的。以下是整理的两种攻击方式...
  • ARP协议报文格式及ARP

    万次阅读 2017-05-12 15:03:33
    ARP协议报文格式及ARP
  • ARP 属于哪层协议

    万次阅读 2011-09-17 16:42:33
    教材上把ARP协议划到网络层,是因为ARP协议属于TCP/IP协议簇。在TCP/IP模型中,它所有定义的协议是在网际层上的。 再看按照OSI的标准,数据在传递时每层会加上自己的信息。当网络层的IP包进入链路层时,链路层通过...
  • 免费ARP的格式

    万次阅读 2014-05-07 12:58:30
     免费ARP报文与普通ARP请求报文的区别在于普通的ARP请求报文,其ARP封装内的“目的IP地址”是其他机器的IP地址,而免费ARP的请求报文,其ARP封装内的“目的IP地址”是其自己的IP地址。免费ARP的封装格式如下图所示...
  • ARP代理(Proxy ARP

    万次阅读 2016-03-07 12:15:42
    ARP代理通俗地说,就是由中间设备代替其他主机响应arp请求。下图展现了ARP代理工作的主要过程: ARP代理工作过程示意图 ARP代理工作的过程说明 1,192.168.0.16/16主机向外发送目的主机为192.168.1.3...
  • ARP 协议详解 ARP报文结构

    万次阅读 2014-01-09 10:02:24
    ARP:地址解析协议(address Resolution protocol,地址解析协议)是将IP地址解析为以太网MAC地址(或称物理地址)的协议。
  • H3C路由器清空ARP

    千次阅读 2018-10-22 14:01:39
    H3C路由器清空ARP表: &lt;H3C&gt;reset arp all  
  • 如何在Linux下禁用ARP协议

    千次阅读 2010-11-03 22:00:00
    有时候出于安全或者其他原因需要禁用ARP协议,在Linux下至少有3种方法。
  • Wireshark实战分析之ARP协议(二)

    万次阅读 2015-11-23 17:43:11
    本节学习如何获取ARP协议包,以及分析ARP数据。 分析之前,先看看ARP的报文格式
1 2 3 4 5 ... 20
收藏数 122,895
精华内容 49,158
关键字:

arp