本次呢,要说的是arp协议,那么什么是arp协议呢?有什么作用呢?

什么是arp

ARP(Address Resolution Protocol)地址解析协议,地址解析协议由互联网工程任务组(IETF)在1982年11月发布的RFC 826中描述制定。

Arp的作用

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

arp解析过程

1、每个主机都设有一个ARP高速缓存,里面有所在局域网上的各主机和路由器的ip地址到硬件地址的映射

2、当主机a向本局域网的某个主机b发送ip数据包时,现在本机arp表中产看是否有主机b的ip地址对应关系,如果有查处其mac地址,写入MAC帧,然后通过局域网将MAC帧发往主机b

3、也有可能找不到主机b的mac地址,有可能主机b刚刚接入网络,这种情况下,就要按照步骤找到主机b的mac地址

①发送端广播发送arp请求包,请求对应主机的mac地址

②本局域网所有主机都会收到此ARP请求,只有对应主机才会做出应答

③接收端学习arp缓存

④接收端回复arp响应(单播)

⑤发送端学习arp缓存

4、每一条映射都设置生存时间(10-20分钟),超过时间删除此条目

5、如果目标设备位于其他网络,则源设备会在ARP缓存表中查找网关的MAC地址,然后将数据发送给网关,网关再把数据转发给目的设备。

取个例子:

如图,当主机A想向主机B发送数据时,首先将B的地址和自己的地址进行一个与运算来确认两主机是否处于同一个网段。

如果在同一个网段

首先主机A会查看本地的ARP表,是否有B主机地址所对应的MAC地址。

①如果存在:就直接把IP数据封装成帧进行通信。

②如果不存在:

1.则a先缓存该数据报文,然后广播发送arp请求包询问主机b的mac地址是多少

2.交换机收到广播包,从接收端口以外的所有端口转发出去,这时候c收到之后发现不是请求自己,就丢弃此广播包。

3.b收到之后看到再问自己的mac,首先将广播包的源mac和ip绑定到自己的arp表

4.然后单播回复给a,告诉主机a自己的mac地址,a收到之后主机b的mac地址,将主机b的ip和mac进行绑定到自己的arp表

如果不在同一个网段

在进行跨网段传输的时候需要把数据交给网关,然后由网关进行转发,所以只需要封装网关的mac地址就好,如果不知道网关的mac地址还是会发arp请求网关的mac地址。请求步骤和上面一样。

ARP报文结构解析

Hardware Type:表示硬件地址类型,一般为以太网

Protocol Type:表示三层协议地址类型,一般为IP

Hardware Length和Protocol Length:为MAC地址和IP地址的长度,单位是字节

Operation Code:指定了ARP报文的类型,包括ARP request(请求)和ARP reply(应答)

Source Hardware Address:指的是发送ARP报文的设备MAC地址

Source Protocol Address:指的是发送ARP报文的设备IP地址

Destination Hardware Address:指的是接收者MAC地址,在ARP request报文中,该字段值为0

Destination Protocol Address:指的是指接收arp报文的IP地址

ARP代理

我们说到对于不同网段的访问会封装网关的mac地址,如果此时主机a没有网关,他将会以广播的形式发送arp request报文,请求b的mac地址,但是广播报文无法被路由器传递,所以主机b无法收到主机a的arp请求报文,也就无法应答。

这时候可以通过在路由器上开启arp代理功能解决此问题,启用arp代理的路由器收到请求包之后,会查找路由表,如果存在主机b的路由表项,路由器会使用自己的g0/0/0接口的mac地址来回应a发的arp request,主机a收到arp reply后,将以路由器的g0/0/0接口mac地址作为目的mac地址进行转发数据。

Arp缺陷

在ARP缓存表机制存在一个缺陷,就是当请求主机收到ARP应答包后,不会去验证自己是否向对方主机发送过ARP请求包就直接把这个返回包中的IP地址与MAC地址的对应关系保存进ARP缓存表中,如果原有相同IP对应关系,则原有的会被替换。这样就导致了一种攻击方式叫做arp欺骗攻击。

还用这张图,上面我们说到arp的缺陷是不会验证自己有没有向目的主机发送arp request,a请求一个包,b就应答一个包。

假如说a没有请求的时候,主机a b c工作正常,这时候c作为攻击者直接给a发送一个应答包,说自己是12.1.1.2(主机b),mac地址是cccc,这时候a会认为12.1.1.2对应的mac地址是cccc,a的缓存当中就存在了一条假记录,这时候a往主机b发的数据包mac地址就是cccc,交换机转发数据只读取mac地址,这时候发现cccc这个mac绑定在自己的e0/3接口,这时候就将数据发给了主机c,这时候主机c就窃取到了a发给b的数据包。

C再使用相同的方法告诉b说自己就是a,这时候a和b的通讯完全经过了主机c。这就是利用arp缺陷而产生的攻击方式。

Arp攻击的防御方法:

Arp绑定将ip与mac进行绑定

通过arp防火墙来防御arp攻击

arp 项删除失败: 请求的操作需要提升。_ccna必懂篇-arp协议工作原理详解。相关推荐

  1. Windows - ARP 项添加失败 拒绝访问

    By: Ailson Jack Date: 2022.04.09 个人博客:http://www.only2fire.com/ 本文在我博客的地址是:http://www.only2fire.com/ ...

  2. 绑定ARP 保存ARP ARP 项添加失败: 拒绝访问。

    XP下的命令是: arp -s 188.188.24.1 48-46-fb-d4-d0-3a windows7下使用这个命令会提示:ARP 项添加失败: 拒绝访问. 需要用如下命令: 1.先用nets ...

  3. cmd 控制台 提示:请求的操作须要提升!

    cmd 控制台 提示:请求的操作须要提升! 在windows7中想用route add 或相关route等命令须要以管理员身份执行,假设windows7以下没有以管理身份执行那么加入路由时候route ...

  4. UE4学习-请求的操作需要提升

    文章目录 在我们安装了虚幻编辑器以后,我们还可以把插件装上. 这个插件的路径: F:\soft\Epic Games\UE_4.25\Engine\Extras\UnrealVS\VS2019 这是我 ...

  5. CreateProcess error=740, 请求的操作需要提升

    再用Java程序启动本地程序时有时会出现CreateProcess error=740, 请求的操作需要提升,这样的异常,此异常为Java程序权限不足以调动需要启动的程序. 解决方法:用管理员方式启动 ...

  6. Win11运行cmd提示“请求的操作需要提升”的解决方法

    cmd是用于执行输入的命令,我们大部分都用其排除或解决某些类型的Windows问题,但是近期有部分Win11用户在运行cmd时出现提示"请求的操作需要提升"的情况,这是怎么回事呢? ...

  7. Windows添加路由时报错:请求的操作需要提升。

    具体报错如下: C:\Users\admin>route -p add 192.168.30.0 mask 255.255.255.0 192.168.60.1 请求的操作需要提升. 解决方法: ...

  8. java运行exe文件时 CreateProcess error=740 请求的操作需要提升的问题

    Java中有时候执行一个exe程序经常会包CreateProcess error=740, 请求的操作需要提升的错误 如下: Runtime.getRuntime().exec("d:\12 ...

  9. ARP和RARP协议工作原理

    ARP和RARP协议工作原理 MAC地址与IP地址是计算机网络通信中非常重要的两类地址,缺一不可.因为在OSI/RM网络层以上是通过IP地址进行寻址的,而在OSI/RM网络层以下则是通过MAC地址进行 ...

最新文章

  1. Java 学习(20)--异常 /  IO 流
  2. ExtJs与WCF交互:生成树
  3. HIGHGUI ERROR: V4L2: Pixel format of incoming image is unsupported by OpenCV
  4. pycharm运行程序时看不到任何结果显示
  5. 如何使用sklearn进行数据挖掘
  6. radio默认选中并显示相应信息 php,php实现select、radio、checkbox默认选择示例
  7. 【POJ2386】Lake Counting
  8. 使用TortoiseSVN的客户端钩子脚本触发Jenkins构建
  9. 浅谈5类过零检测电路
  10. WebView 指南
  11. 20.SPDY_QUIC_HTTP2_HTTP3
  12. 微信自动跳转默认浏览器 微信扫一扫直接打开外部浏览器
  13. AIDA64内存与缓存测试过了算稳定吗_【AMD R52600X】装机实录、基本特性介绍及性能测试...
  14. python中字典keys、values、items的使用_Python学习笔记字典之keys()、values()和 items()方法...
  15. java抢红包_Java 用Redis 实现抢红包功能
  16. IDA详细使用教程,适合逆向新手的实验报告
  17. Revit二次开发前期准备
  18. 机械革命无法使用U盘启动linux,机械革命bios设置,详细教您机械革命bios怎么设置u盘启动...
  19. 「C++控制台生存游戏」暗黑体素 DarkVoxel 控制台版
  20. 面试环节最后的一问一答

热门文章

  1. loj #143. 质数判定
  2. 2017-2018-1 20155336 《信息安全系统设计基础》加分作业:实现mypwd
  3. em标签和strong标签的区别
  4. Zabbix 2.4.5 自定义 key 监控 apache
  5. (转)测试用例的设计方法(全)之二 错误推断、因果图
  6. 数据库操作之增删改查CRUD
  7. 中国智能语音产业发展白皮书十大观点发布!科大讯飞市占率国内第一
  8. C#(WinForm)的Show()和ShowDialog()方法介绍
  9. Shift+F5后,vc6不可以退出调试状态,程序不能再次执行
  10. DWORD dwSendTime =::GetTickCount();