TCP/IP详解——ARP 协议

这篇具有很好参考价值的文章主要介绍了TCP/IP详解——ARP 协议。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、ARP 协议

ARP(Address Resolution Protocol)协议工作在网络层和数据链路层之间,通常被认为是一个跨两层的协议。

当网络设备有数据要发送给另一台网络设备时,必须要知道对方的网络层地址(即IP地址)。IP地址由网络层来提供,但是仅有IP地址是不够的,IP数据报文必须封装成帧才能通过数据链路进行发送。数据帧必须要包含目的MAC地址,因此发送端还必须获取到目的MAC地址。通过目的IP地址来获取目的MAC地址的过程是由ARP(Address Resolution Protocol)协议来实现的

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

1. ARP 数据包格式

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

说明

  • Hardware Type:表示硬件地址类型,一般为MAC地址。它的值为1表示以太网地址
  • Protocol Type:表示三层协议地址类型,一般为IP。它的值为0x0800即表示IP地址。它的值与包含IP数据报的以太网数据帧中的类型字段的值相同。
  • Hardware LengthProtocol Length:表示MAC地址和IP地址的长度,单位是字节。值分别是6和4。(6 * 8=48,4 * 8 = 32)
  • Operation Code指定了ARP报文的类型,包括ARP RequestARP Reply。(1为ARP请求,2为ARP应答)
  • Source Hardware Address:指的是发送ARP报文的设备MAC地址(源MAC地址)
  • Source Protocol Address:指的是发送ARP报文的设备IP地址(源IP地址)。
  • Destination Hardware Address:指的是接收者MAC地址,在ARP Request报文中,该字段值为0(目的MAC地址)。
  • Destination Protocol Address:指的是接收者的IP地址(目的MAC地址)。

ARP Request 请求包

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

ARP请求是广播包,并且数据包长度不够的话会补齐,最小长度是46,但是正常的ARP只有28,所以会使用PAD字段进行补齐。

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

ARP Reply 响应包

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

ARP响应是单播

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

2. ARP 工作过程

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

通过ARP协议,建立目的IP地址和MAC地址的映射。通过网络层获取目的IP地址还要判断目的MAC地址是否已知。如在主机A发送数据给主机C时,首先获取主机C的MAC地址。同时主机B是看不到主机A和主机C之间的单播包的。

3. ARP 缓存

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

存放IP地址和MAC地址关联信息

  • 发送信息前,查找ARP缓存表,存在对方MAC地址,直接封装成帧。如果不存在,通过发送 ARP Request报文获取对方MAC地址。如果目标在其他网络,源设备会先查找网关MAC地址,将数据发给网关,再转发。
  • IP和MAC关系映射关系会放入ARP缓存表一段时间,有效期内都可查到,过了这个有效期会自动删除

Windows查看ARP缓存表

arp -a

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

清空ARP表

arp -d

4. ARP 请求

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

主机A 的 ARP 缓存表中不存在主机C 的 MAC 地址,所以主机A 会发送 ARP Request 来获取目的 MAC 地址。

ARP Request 报文封装在以太帧里。帧头中的源MAC地址为发送端主机A 的 MAC 地址。

此时,由于主机A不知道主机C 的 MAC 地址,所以目的 MAC 地址为广播地址 FF-FF-FF-FF-FF-FF。(注意:目的 MAC 地址FF-FF…是帧头部中的,目的 MAC 地址00-00…是 ARP 请求包中里的内容。)

ARP Request 报文中包含源 IP 地址、目的 IP 地址、源 MAC 地址、目的 MAC 地址,其中目的 MAC 地址的值为0。

ARP Request 报文会在整个网络上传播(广播),该网络中所有主机包括网关都会接收到此 ARP Request 报文。所有设备收到 ARP 请求后,主机C 检查请求中的目标 IP 地址是否与自己的 IP 地址匹配。如果匹配,主机C 会发送一个ARP 响应给主机 A(单播)。主机A 接收到主机C 的 ARP 响应后,会将主机C 的 IP 地址和 MAC 地址的映射关系存储在自己的 ARP 缓存表中,以便将来的通信中使用。

网关将会阻止该报文发送到其他网络上

5. ARP 响应

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

主机C会向主机A回应ARP Reply报文。ARP Reply报文中的源协议地址是主机C自己的IP地址,目标协议地址是主机A的IP地址,目的MAC地址是主机A的MAC地址,源MAC地址是自己的MAC地址,同时Operation Code被设置为Reply(Operation Code:指定了ARP报文的类型,包括ARP Request和ARP Reply。)。ARP Reply报文通过单播传送。

这样主机A就可以拿到主机C的mac地址,从而封装报文进行数据发送。

ARP请求

  • 帧头的目的MAC用广播形式进行发送,ARP请求包中的目的MAC值为0,操作类型为Request。同时,网关会阻止该报文发送到其他网络。
  • 所有主机收到后,会检查IP地址是否匹配,不匹配则不响应,匹配后主机C把源MCA和IP地址将记录到自己ARP缓存表中。发送ARP Reply进行响应。

ARP响应

  • 向主机A发送的ARP Reply报文,源地址和源MAC都是主机C的地址,操作类型为Reply,以单播形式传送。
  • 主机A收到Reply报文后,检查MAC地址是否匹配,然后将源MAC和源IP地址记录主机A的ARP缓存表中。

6. ARP 代理

在某些情况下,网络中可能会存在ARP代理。ARP代理是一种允许一个设备(代理)代表其他设备进行ARP请求和响应的网络配置模式。当一个设备需要发送数据到另一个子网或者在本地网络上没有直接连接的目标主机时,它可以将ARP请求发送给代理设备。

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

说明

  • 同一网段,不同物理网络上的计算机之间,通过ARP代理进行相互通信,默认所有的路由器是不开起ARP代理的。因为路由器无法转发广播报文,主机B收不到ARP Request报文,也无法进行应答。

  • 路由开启代理ARP功能后,路由器收到ARP Request报文后会先去查找路由表,如果存在主机B的路由表,那么路由器会把自己的G0/0/0接口作为MAC地址回应主机A。主机A通过该MAC地址进行数据转发。

  • 主机A 在子网A 中发送一个ARP请求,用来寻找子网B 中的主机B 。路由器R 作为ARP代理收到了ARP请求,这个时候路由器R 会先去查找路由表,发现没有主机B 路由表。然后会在子网B中发送一个ARP请求,寻找主机B的MAC地址。主机B在收到ARP请求后,发送ARP响应,其中响应包中包含了主机B的MAC地址。而路由器收到主机B的ARP响应后,会把自己的G0/0/0接口MAC地址信息返回给主机A,完成ARP代理的全部过程。

ARP协议的一个特性是“后到优先

  • 在某些网络环境中,使用ARP代理可以允许多个设备对同一个IP地址进行ARP请求和响应。当多个设备同时发送ARP请求时,代理设备会收到多个ARP请求,并根据其自身的优先级规则进行处理。具体而言,在ARP代理中,后到的ARP请求会覆盖先前的ARP请求,从而实现"后到优先"的特性。
  • 这意味着,如果有多个设备对同一个IP地址发送ARP请求,只有最后一个到达的设备的ARP响应会被接受并记录在ARP缓存中。其他先前的ARP响应将被忽略。因此,后到的设备将成为该IP地址的代理,并负责处理与该IP地址相关的数据包。

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

在配置路由的时候,如果只写出接口的话就会存在ARP代理的“后到优先”。

上图中R2先进行了ARP回复,那么路由器R1作为ARP代理会记录的是R2路由器的MAC地址。如果路由器R3在之后回复路由器R1,那么后到的会覆盖先前回复的。

7. ARP 探测IP冲突

当局域网中的某台主机被分配了IP地址或者IP地址发生变更后,必须立刻检测其所分配的IP地址在网络上是否是唯一的,以避免地址冲突。主机通过发送ARP Request报文来进行地址冲突检测。

如下:主机A将ARP Request广播报文中的目的IP地址字段设置为自己的IP地址,且该网络中所有主机包括网关都会接收到此报文。当目的IP地址已经被某一个主机或网关使用时,该主机或网关就会回应ARP Reply报文。通过这种方式,主机A就能探测到IP地址冲突了。

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

8. ARP 协议抓包分析

开启虚拟机,该虚拟机的网卡设置为桥接。

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

真实机开始 ping 虚拟机的 IP 地址。

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

同时Wireshark抓包

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

9. ARP 断网攻击

ARP欺骗原理

在局域网中,主机通信前必须通过ARP协议把IP地址转换为MAC地址,ARP欺骗就是通过伪造IP地址与MAC地址的映射关系实现的一种欺骗攻击。因为局域网内的主机根据MAC地址进行通信,发送方检查其ARP缓存中是否已存储目标IP的MAC地址,否则它会广播发送ARP请求报文,只有目标IP的主机才会响应一个包含其MAC地址的ARP应答报文,发送方收到该应答后,立即更新自身的ARP缓存。攻击者可以发送虚假的ARP请求或应答报文,使得目标主机接收错误的IP和MAC绑定关系。

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

流程:pc1想与pc2通信时,先在arp缓存表(arp -a)中查看pc2(10.9.136.55)的mac地址,若没有,则会发送广播包:”谁是10.9.136.55“给交换机,交换机给每个端口都会广播发送一个请求包:”谁是10.9.136.55“,正常来说只有pc2会收到这个请求包然后会发送一个应答包:“我是10.9.136.55,我的mac地址是mac2”发送给交换机,交换机会发送给pc1,因为是pc2应答pc1的应答包,pc1接收到应答包后会更新自己的arp缓存表。

arp缓存表中存入了大量的IP地址与MAC地址的映射。

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

ipconfig /all # 查看网关接口

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

arp -a #mac地址缓存表(ip地址与mac地址映射表)

找到网关的MAC地址。

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

现在通过网关访问百度,必然要和路由器进行通信。局域网里面的通信会先去arp缓存表中查找有没有网关对应的MAC地址。

本来和网关是不能通信的,现在通过ARP广播找到了网关的IP地址和MAC地址映射到ARP缓存表中。

攻击者可以发送虚假的ARP请求或应答报文,使得目标主机接收错误的IP和MAC绑定关系。那么发送给百度的数据就不再走网关了,而是到攻击者那里。如果攻击者拦截数据包不进行转发的话,本机就会断网。

攻击实验

win7中的网关是192.168.188.2

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

对应网关的MAC地址

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

然后开始ping百度,这个时候可以一直ping

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

通过kali发起ARP断网攻击,开启终端输入命令如下:

arpspoof -i etho -t 192.168.188.130 -r 192.168.188.2

说明

  • arpspoof:是一款进行arp欺骗的工具,攻击者可以通过它来毒化受害者arp缓存,将网关mac替换为攻击者mac,然后攻击者可截获受害者发送和收到的数据包,可获取受害者账户、密码等相关敏感信息。

  • -i:指定要使用的接口(即指定一块网卡)。

  • etho:这个网卡和网关属于同一网段的。

  • -t:是要攻击的IP地址(这里是Win7的IP地址)。

  • -r:是网关的IP地址。

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

发起攻击

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

发起攻击后Win7已经不能和百度进行通信了

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

检查Win7的ARP缓存表

TCP/IP详解——ARP 协议,TCP/IP协议详解,tcp/ip,网络,网络协议

之前网关对应的MAC地址是00-5a-56-ee-91-e6,而现在对应的是00-0c-29-70-2e-59。而这个00-0c-29-70-2e-59MAC地址正是Kali的MAC地址。

预防措施

  1. 客户端静态绑定网关的真实MAC地址。
  2. 在交换机和路由器上设置端口与MAC地址的静态绑定。
  3. 定期检测自身的ARP缓存,检测是否有MAC地址相同的不同表项,即可发现异常。
  4. 使用防火墙持续监控ARP缓存,检测异常变化。

10. 总结

  • 网络设备在什么情况下发送ARP Request

    • 源设备在发送数据给目的设备前,会首先查看自身的ARP缓存,查找ARP缓存中是否存在目的设备的IP地址和MAC地址的映射。如果存在则直接使用,如果不存在则会发送ARP Request。
  • 网络设备什么时候产生免费ARP文章来源地址https://www.toymoban.com/news/detail-769753.html

    • 当网络上的一个设备被分配了IP地址或者IP地址发生变更后,可以通过免费ARP来检查IP地址是否冲突。

到了这里,关于TCP/IP详解——ARP 协议的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • TCP/IP协议专栏——分片报文详解——网络入门和工程维护必看

    一个链路层数据报能承载的最大数据量称为最大传送单元(MTU)。 因为IP数据报(IP头+DATA)被封装在链路层数据报中,故链路层的MTU严格地限制着IP数据报的长度, 而且在IP数据报的源与目的地路径上的各段链路可能使用不同的链路层协议,有不同的MTU. 例如,以太网的MTU为15

    2024年01月19日
    浏览(64)
  • TCP/IP协议专栏——以太帧结构 详解——网络入门和工程维护必看

    以太网帧发送数据时都是从8个字节的前导码开始的。前导码是1和0的交互。 在以太网中,数据通信的基本单位是 以太网帧 ( frame ),由 头部 ( header )、数据 ( data )以及 校验和 ( checksum )三部分构成: 头部 以太网帧头部包含 3 个字段,依次是: 1、目的地址:长度是 6 字节,用

    2023年04月18日
    浏览(45)
  • 计算机网络之TCP/IP协议第二篇:OSI参考模型详解

    😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783824   📚📚  工作微信:BigTreeJava 拉你进微信群,免费领取! 🍎🍎4:本文章内容出自上述:Spring应用课程!💞💞

    2024年02月09日
    浏览(53)
  • 详解TCP/IP协议第五篇:详细介绍网络传输中的地址

    😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783824   📚📚  工作微信:BigTreeJava 拉你进微信群,免费领取! 🍎🍎4:本文章内容出自上述:Spring应用课程!💞💞

    2024年02月07日
    浏览(44)
  • 【网络】UDP报头、TCP报头、IP报头、MAC头部、ARP头部

    前言:DUP报头、TCP报头、IP报头、MAC头部、ARP头部。 UDP报头由八个字节组成,每个字段都是两个字节 : 1.源端口号:发送方端口号, 需要对方回信的时候选用,不需要对方回信的时候置0 2.目的端口号:接收方端口号 , 在终点交付报文时需要用到 3.长度:UDP用户数据报的长

    2024年02月07日
    浏览(43)
  • 网络编程——TCP/IP协议族(IP协议、TCP协议和UDP协议……)

    1、IP协议简介 IP协议又称 网际协议 特指为实现在一个相互连接的网络系统上从源地址到目的地传输数据包(互联网数据包)所提供必要功能的协议,是网络层中的协议。 2、特点 不可靠 :它不能保证IP数据包能成功地到达它的目的地,仅提供尽力而为的传输服务 无连接 :IP 并不

    2024年02月13日
    浏览(75)
  • 【网络协议】TCP/IP 协议

    1、TCP/IP 模型 TCP/IP 协议模型,包含了一系列构成互联网基础的网络协议,是 Internet 的核心协议。 基于 TCP/IP 协议栈可分为四层或五层,转换为 OSI 参考模型,可以分为七层,分别如下图所示: 通常我们所说的都是基于 TCP/TP 五层模型。 2、TCP/IP 协议栈每一层功能 应用层:H

    2024年02月12日
    浏览(65)
  • TCP/IP协议详解

    TCP/IP 是 TCP 和 IP 两种协议群的统称,具体来说,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都属于 TCP/IP 协议 计算机网络体系结构分层 计算机网络体系结构分层 不难看出,TCP/IP 与 OSI 在分层模块上稍有区别。OSI 参考模型注重“通信协议必要的功能是什么”,而 TCP/IP 则更

    2024年02月03日
    浏览(40)
  • TCP/IP 协议详解

    TCP/IP传输协议,即传输控制/网络协议,也叫作网络通讯协议。它是在网络的使用中的最基本的通信协议。 TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定。并且,TCP/IP传输协议是保证网络数据信息及时、完整传输的两个重要的协议。 TCP/IP传输协议是严格来

    2024年02月11日
    浏览(39)
  • 网络:TCP/IP协议

    1. OSI七层参考模型        应用层         表示层         会话层         传输层         网络层         数据链路层         物理层 2. TCP/IP模型         应用层         传输层         网络层         数据链路层         物理层 3. 各链路层对应的名称    

    2024年02月15日
    浏览(78)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包